emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Samuel Wales <samologist@gmail.com>
To: mail@christianmoe.com
Cc: Bastien <bastien.guerry@wikimedia.fr>,
	Vinh Nguyen <vinhdizzo@gmail.com>,
	emacs-orgmode@gnu.org,
	Carsten Dominik <carsten.dominik@gmail.com>
Subject: Re: text color + highlight
Date: Tue, 10 Aug 2010 16:14:25 -0700	[thread overview]
Message-ID: <AANLkTi=FQH6UqWVKFZFDx=5NSribOA+PB8angKdxX1sm@mail.gmail.com> (raw)
In-Reply-To: <4C60EE48.6030106@christianmoe.com>

i suggest begin-end pairs, not putting text in the syntax itself.
though you could, if you want, using quotes.

  $[class begin :title animals]Some text about animals$[class end
:title animals]

i wrote the following long ago, but never sent it to
the list.  it is not polished at all -- needs more work that
i cannot do on it now -- and not even capitalized.

this is just one example of many for extensible syntax.
note that the code i provide is for the /user/ to use if he
wants.  the following pretends that color is not a feature
of org and demonstrates that even a /user/, without
modifying any code in org, can actually implement a new
feature with its own "syntax" (actually extensible syntax,
which will never conflict with other features) -- if
extensible syntax becomes a feature of org.

i wrote it in response to somebody requesting color.

it needs work.  for example, s/color/face/g .

===

as far as i know, this is not a feature in org.

however, if extensible syntax were implemented, you could
add this feature to org yourself without touching org source
code or writing any regexps.

here is what it would look like (not what you normally see,
but what you would see if everything were visible).

  here is text in your normal face.  $[color begin :face
  myface :label nil]here is text in myface.  the extensible
  syntax at the beginning has :label nil, which means that
  both ends are invisible except when you are editing them
  or have specified that :label should be ignored.  to make
  them visible, remove or change :label.  you can also
  change the label of the end syntax separately if you want.
  $[color end]here is text in your normal face.

to implement this as a user, you would put something like
this into your .emacs.

  (define-org-syntax color
    ;;these are the quasiarguments to your feature.  they
    ;;use common lisp's keyword argument feature.  face
    ;;defaults to default-face and label defaults to nil,
    ;;which means to
    (begin-or-end &key (face default-face) label)
    "Implement my color feature in org."
    (cond
      ((equal begin-or-end "begin")
       ;;fixme here you put the emacs code to start a color block
       )
      ((equal begin-or-end "end")
       ;;fixme here you put the emacs code to end a color block
       )
      (otherwise (error "needs to be begin or end"))))
  (define-key org-mode-map "\C-cc" 'my-insert-color-block)
  (defun my-insert-color-block ()
    "Insert a color block."
    (interactive)
    ;;fixme place point between them
    (insert "$[color begin :face myface :label nil]$[color end]"))


On 2010-08-09, Christian Moe <mail@christianmoe.com> wrote:
> Hi,
>
>  >>
>  >> - this would be extensible, e.g.
>  >>
>  >>  [background[yellow] highlighted text]
>  >>
>  >>  could export to the following html
>  >>
>  >>  <span "style=background:yellow;">highlighted text</span>
>  >>
>  >> - this would avoid "{}"s
>  >>
>  >> - this would look more "org-like" than the pure latex solution
>  >>
>  >> the only issue with the above is that it may conflate a new /markup/
>  >> syntax with org-mode's existing /link/ syntax.
>  >>
>  >> Thoughts? -- Eric
>
> I'd like an extensible inline markup construct (not primarily for coloring).
>
> Would it make sense to hijack custom links for this purpose, and use
> existing bracketed link syntax rather than add a new syntax?
>
> For semantic tagging (my chief interest), one might e.g. define a
> `class' link type and an HTML export handler to wrap the contents in
> <span class="kewyord"> tags.
>
> : [[class:animals][some text about animals]]
>
> As for color: If one is satisfied with getting colors on export,
> defining a `color' link type and appropriate export handlers will do.
>
> : [[color:red][some colored text]]
>
> If one also wants the text to appear in the right color within Org-mode,
> and does not want the pseudo-link markup to be underlined and look like
> links, it would require additional Org functionality (I think):
> User-defined custom faces for different link types.
>
>>>> What syntax to use...
>>>
>>> I've thought briefly about the following syntax
>>>
>>> [color[red] text to be colored red]
>>
>> Nope, I am against this syntax.  If we introduce a more general syntax,
>> then it should be done in the way Samuel proposed.  WHich means
>> we firs get a keyword indtroducing the piece, and then properties.
>>
>> Like
>>
>>    $[style :color red the red text]
>>
>> or
>>
>>    $[face :color :italic t red the red text]
>>
>> Something like the $ before "[" also would seem critical to disambiguate
>> from other uses of "[".
>>
>> However, I am not too excited about extra syntax to get this kind of
>> thing.
>> Would not oppose it, but probably never use it.
>>
>> - Carsten
>
> Those examples are not very readable IMO -- without a separator it's
> hard to see where the property values end and the marked up text begins.
>
> Yours,
> Christian
>
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>


-- 
Q: How many CDC "scientists" does it take to change a lightbulb?
A: "You only think it's dark." [CDC has denied a deadly disease for 25 years]
==========
Retrovirus: http://www.wpinstitute.org/xmrv/index.html -- PLEASE DONATE
===
PNAS must publish the original Lo and Alter NIH/FDA XMRV paper
verbatim along with the new paper.

  parent reply	other threads:[~2010-08-10 23:14 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-05 20:42 text color + highlight Vinh Nguyen
2010-08-06  9:18 ` Bastien
2010-08-06 16:47   ` Vinh Nguyen
2010-08-06 20:28     ` Seweryn
2010-08-06 21:51     ` Eric Schulte
2010-08-06 23:42       ` Vinh Nguyen
2010-08-07  3:15         ` Eric Schulte
2010-08-07  3:57           ` Dan Davison
2010-08-08 14:59           ` Vinh Nguyen
2010-08-08 21:00             ` Eric Schulte
2010-08-09  6:28               ` Carsten Dominik
2010-08-09  7:37                 ` Robert Klein
2010-08-09  7:40                   ` Robert Klein
2010-08-10  6:14                 ` Christian Moe
2010-08-10  7:06                   ` Carsten Dominik
2010-08-10  9:30                     ` Christian Moe
2010-08-10 15:06                       ` Eric Schulte
2010-08-10 18:38                         ` Christian Moe
2010-08-10 21:39                           ` David Maus
2010-08-10 23:02                             ` Christian Moe
2010-08-10 23:47                               ` Eric Schulte
2010-08-11  6:48                     ` Dan Davison
2010-08-11 14:32                       ` Samuel Wales
2010-08-10 23:14                   ` Samuel Wales [this message]
2010-08-11  6:03                     ` Jan Böcker
2010-08-09  6:58               ` Eric Schulte
2010-08-09  7:05                 ` Samuel Wales
2010-08-09  5:17           ` Jambunathan K
2010-08-09  5:52             ` Noorul Islam K M
2010-08-07  4:52       ` Nick Dokos
2010-08-07 12:17       ` Sebastian Rose
2010-08-08 17:46         ` Samuel Wales
2010-09-09 16:15 ` Vinh Nguyen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='AANLkTi=FQH6UqWVKFZFDx=5NSribOA+PB8angKdxX1sm@mail.gmail.com' \
    --to=samologist@gmail.com \
    --cc=bastien.guerry@wikimedia.fr \
    --cc=carsten.dominik@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=mail@christianmoe.com \
    --cc=vinhdizzo@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).