Hi Darlan, On Fri, Jun 10, 2011 at 21:20, Darlan Cavalcante Moreira <darc...@gmail.com> 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