On Feb 22, 2011, at 5:59 AM, Richard Lawrence wrote: > "Filippo A. Salustri" <salus...@ryerson.ca> 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 _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode