emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Define capture template with dynamic id target


From: Aankhen
Subject: Re: [O] Define capture template with dynamic id target
Date: Sat, 11 Jun 2011 13:36:27 +0530

Hi Darlan,

On Fri, Jun 10, 2011 at 21:20, Darlan Cavalcante Moreira
<address@hidden> wrote:
> Thanks David,
>
> I tried to follow your suggestion, but I found two problems (maybe because
> I know little about lisp).
>
> For instance, suppose I have a test.org file with the follow content
> --8<---------------cut here---------------start------------->8---
> * 2011
>  Every headline has an ID, but I have omitted here for brevity
> *** May
> ***** Sub-headline
>      bla bla bla
> *** June
> ***** Sub-headline
>      bla bla bla
> --8<---------------cut here---------------end--------------->8---
>
> I want the capture process to add an entry to the Sub-headline of June. If
> I just use the file+headline and specify "Sub-headline" then it will add to
> the Sub-headline in May. That's why I tried using IDs in the first
> place. Also, every month I create a new month headline with the
> Sub-headline and the capture process should add an entry to that
> instead. That is the reason I wanted to get the ID from a function, instead
> of just writing it in the capture template.
>
>
> As far as I understand if I use the file+function target then the function
> must return the headline name, but how can I say that I want the
> Sub-headline of June and not of May? [first problem]
>
> I found an org-id-find function that returns something like
> "(filename . characterPosition)". Therefore, If there is a way to specify a
> position where org should start looking for the headline then I could use
> that to go to the correct Sub-headline.
>
>
> Also, the file+headline target will add the entry as a child of the
> specified headline, but file+function seems to add the entry as a sibling
> of the headline returned by the function. [second problem] Is this intended
> behaviour or is it a bug?
> [snip]

Looking at the code, the function doesn’t need to return anything; it
just needs to place point where you want the new headline to appear.
Therefore, you can use ‘org-find-olp’ to locate the entry:

,----[ C-h f org-find-olp RET ]
| org-find-olp is a compiled Lisp function in `org.el'.
|
| (org-find-olp PATH &optional THIS-BUFFER)
|
| Return a marker pointing to the entry at outline path OLP.
| If anything goes wrong, throw an error.
| You can wrap this call to catch the error like this:
|
|   (condition-case msg
|       (org-mobile-locate-entry (match-string 4))
|     (error (nth 1 msg)))
|
| The return value will then be either a string with the error message,
| or a marker if everything is OK.
|
| If THIS-BUFFER is set, the outline path does not contain a file,
| only headings.
`----

So the code would look something like this:

,----
| (org-find-olp '("2011" "May" "Sub-headline") t)
`----

Aankhen



reply via email to

[Prev in Thread] Current Thread [Next in Thread]