[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Orgmode] Re: question about capture templates
From: |
Carsten Dominik |
Subject: |
Re: [Orgmode] Re: question about capture templates |
Date: |
Tue, 22 Feb 2011 10:19:35 +0100 |
On Feb 22, 2011, at 5:59 AM, Richard Lawrence wrote:
> "Filippo A. Salustri" <address@hidden> writes:
>
>> org-capture clearly has the original buffer handy (for %a
>> stuff) yet I can't get it out of there without hacking the org code, which I
>> am loathe to do.
>
> I too was in a situation just today where I was calling org-capture
> programatically, and needed access to stuff in the calling environment.
> My solution (which may not be very good, and may not work for you) is to
> dynamically scope the calling environment stuff that I need into the
> org-capture call, like so:
>
> #+begin_src emacs-lisp
> ; in the calling code, I scope some val I need into `foo...'
> (let ((foo some-val-I-need))
> (org-capture nil "tm"))
> #+end_src
>
> Then, in the template identified by "tm", I have S-expression expansion
> that operates on foo, even though it wasn't explicitly passed as a
> parameter, e.g.:
>
> * My capture template
> The car of foo is %(car foo).
> The cdr of foo is %(cdr foo).
> %a
> etc. ...
>
> This works well enough for me, though it may feel kind of icky, since
> from the template writer's perspective, `foo' looks like a global
> variable whose value could be coming from anywhere.
I do love dynamic scoping, this give a lot of power in Emacs.
Org-mode internals use that power often.
> Accordingly, then,
> this solution is mostly useful if you know that you're going to be using
> the template via custom Elisp calls to org-capture, and not via the
> usual capture interface, so that you can guarantee that `foo' has a
> useful value when the template is expanded.
>
> One gotcha: S-expressions in templates are apparently always evaluated
> as function calls -- you can't just directly access a string value, like
> %(foo).
I guess you mean a variable value?
The shortest form may be %(symbol-value foo) if you want to access the
value of a variable in a template.
Kind regards
- Carsten
- [Orgmode] question about capture templates, Filippo A. Salustri, 2011/02/21
- [Orgmode] Re: question about capture templates, Sébastien Vauban, 2011/02/21
- Re: [Orgmode] Re: question about capture templates, Nick Dokos, 2011/02/22
- Re: [Orgmode] Re: question about capture templates, Carsten Dominik, 2011/02/22
- Re: [Orgmode] Re: question about capture templates, Bastien, 2011/02/22
- Re: [Orgmode] Re: question about capture templates, Filippo A. Salustri, 2011/02/23
- Re: [Orgmode] Re: question about capture templates, Filippo A. Salustri, 2011/02/23
Re: [Orgmode] question about capture templates, Matthew Sauer, 2011/02/21
Re: [Orgmode] question about capture templates, Matthew Sauer, 2011/02/21