emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Carsten Dominik <dominik@science.uva.nl>
To: Eric Schulte <schulte.eric@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: Feature request: IDs on anything
Date: Fri, 6 Mar 2009 17:27:41 +0100	[thread overview]
Message-ID: <6CA4A475-5A74-4199-B883-5420EFA6B5B1@uva.nl> (raw)
In-Reply-To: <87ab7y3f3h.fsf@gmail.com>


On Mar 6, 2009, at 3:23 PM, Eric Schulte wrote:

> Hi,
>
> Lots of interesting ideas, and cool syntax options.  My one proposed
> modification would be to only allow linking down to the table or list
> level, and then use existing reference syntax combined with the link  
> to
> reference a particular cell or range inside of a table, or a  
> particular
> element of a list.  Maybe something like
>
>  $[id B7423F4D-2E8A-471B-8810-C40F074717E9 range: @1$3..@3$3]
>
> Is this wholly new link syntax, or did I miss something?

My understanding was that this is an anchor, not a link.
Only with a link property, it would become a link.

- Carsten

>
>
> Thanks -- eric
>
> Samuel Wales <samologist@gmail.com> writes:
>
>> Now seems like an ideal time to post this.
>>
>> I have been thinking that it would be useful to be able to slap org  
>> IDs on
>> anything.  This includes plain list items, table cells, and
>> specific words in long sections of text.[1]  Links to
>> these markers will never be broken and will go to their
>> exact locations.
>>
>> I am calling them =ID markers=.  The syntax looks like
>> this.[2]
>>
>>  $[id B7423F4D-2E8A-471B-8810-C40F074717E9]
>>
>> Here is an example:
>>
>>  - this is a plain list
>>    - example $[id B7423F4D-2E8A-471B-8810-C40F074717E9]
>>    - the above can safely be linked to
>>
>> You can label markers to make them prettier:
>>
>>  $[id B7423F4D-2E8A-471B-8810-C40F074717E9 :label "foo"]
>>    this is a marker labeled "foo" (similarly to how links
>>    are labeled).
>>
>>  $[id B7423F4D-2E8A-471B-8810-C40F074717E9 :label ""]
>>    now the marker is invisible unless you set links to be
>>    visible or go to and edit the marker.[3]
>>
>> A key aspect of this feature is that it is extensible[2]
>> in various[4] ways.
>>
>>
>> I have more notes, including applications, but also want to
>> gauge interest in the basic idea.
>>
>> Is this appealing?
>>
>>
>> Footnotes:
>>
>> [1] This might also work for Charles Cave's thread, "My
>> Python solution [...]", which seeks IDs or the equivalent in
>> headlines.
>>
>> ID markers should work in non-org files (provided that org
>> is told about their existence via a user variable).  Thus,
>> you can safely link to source code.
>>
>> [2] This syntax is motivated in a thread on the org
>> mailing list (
>> [http://www.google.com/search?num=100&hl=en&ie=UTF-8&oe=UTF-8&q=%22extensible+syntax%22+%22parsing+risk%22+%22samuel+wales%22&btnG=Search 
>> ]
>> ) named "extensible syntax".  Some benefits:
>>
>>  1.  You can add /new/ org features.
>>      - This is done by reserving a new first element.
>>      - For example, the keyword for the ID marker feature
>>        is "id".
>>      - If you want to add a new org feature for, say,
>>        changing the color of a region of text, you would
>>        use the keyword "color".
>>        - You can do this with no new lexing code or syntax
>>          debugging.
>>  2.  You can extend /existing/ features.
>>      - This is done with a keyword argument (plist key).
>>      - For example, ID markers accept a :label keyword.
>>      - To make the label be different in the exported text,
>>        the key would be :export-label.
>>      - To turn an ID marker into a link, the key would
>>        be :link and its argument would be the link itself.
>>        - I will motivate this and its applications in
>>          another thread.  It enables the user to create
>>          arbitrary graph-theoretic structures, including
>>          bidirectional links and tours through a table, by
>>          pointing ID markers to one another.  More later.
>>      - No new lexing code or syntax debugging is necessary.
>>
>> A bonus: in principle, the facility can be opened up to the
>> users, who can then experiment with new features in their
>> .emacs files (without modifying org code) then spring them
>> on the rest of us.  :) However, this is not essential to the
>> idea.
>>
>> [3] I am not sure, but it is possible that running M-x
>> visible-mode would also work.  Or perhaps a standard org
>> command could do it.
>>
>> [4] For example, to make the label be different in the
>> exported text, it could look like this:
>>
>>  $[id B7423F4D-2E8A-471B-8810-C40F074717E9
>>       :label "foo"
>>       :export-label "bar"]
>>    the exported version is labeled "bar", while your source
>>    is still nicely labeled "foo".
>>
>>  $[id B7423F4D-2E8A-471B-8810-C40F074717E9
>>       :label "foo"
>>       :export-label ""]
>>    now it is invisible when exported.  but it can still be
>>    pointed to.
>>
>> Or to make it easy to remember ID markers with a short
>> number:
>>
>>  $[id B7423F4D-2E8A-471B-8810-C40F074717E9 :label :file-unique]
>>    this is a marker labeled with a small, automatically
>>    generated number that is only guaranteed to be unique
>>    for the current file.
>>
>> My point in this footnote isn't that these are needed
>> subfeatures, but that with extensible syntax we can do this
>> kind of thing.
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

      reply	other threads:[~2009-03-06 17:15 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-06  1:28 Feature request: IDs on anything Samuel Wales
2009-03-06  9:32 ` Carsten Dominik
2010-08-10 23:20   ` Samuel Wales
2010-08-10 23:44     ` Samuel Wales
2009-03-06 14:23 ` Eric Schulte
2009-03-06 16:27   ` Carsten Dominik [this message]

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=6CA4A475-5A74-4199-B883-5420EFA6B5B1@uva.nl \
    --to=dominik@science.uva.nl \
    --cc=emacs-orgmode@gnu.org \
    --cc=schulte.eric@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).