emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Aankhen <aankhen@gmail.com>
To: Darlan Cavalcante Moreira <darcamo@gmail.com>,
	David Maus <dmaus@ictsoc.de>,
	Org mailing list <emacs-orgmode@gnu.org>
Subject: Re: Define capture template with dynamic id target
Date: Sat, 11 Jun 2011 13:36:27 +0530	[thread overview]
Message-ID: <BANLkTikykFDdD6BG03PFLeGSNic-DNUGFw@mail.gmail.com> (raw)
In-Reply-To: <4df23d66.814de50a.09ad.7325@mx.google.com>

Hi Darlan,

On Fri, Jun 10, 2011 at 21:20, Darlan Cavalcante Moreira
<darcamo@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

      reply	other threads:[~2011-06-11  8:06 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-09 18:18 Define capture template with dynamic id target Darlan Cavalcante Moreira
2011-06-10  5:31 ` David Maus
2011-06-10 15:50   ` Darlan Cavalcante Moreira
2011-06-11  8:06     ` Aankhen [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=BANLkTikykFDdD6BG03PFLeGSNic-DNUGFw@mail.gmail.com \
    --to=aankhen@gmail.com \
    --cc=darcamo@gmail.com \
    --cc=dmaus@ictsoc.de \
    --cc=emacs-orgmode@gnu.org \
    /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).