Hi Ian, Ian Barton <li...@wilkesley.net> writes:
> I want to create a capture template which prompts for certain properties > in a property draw, but alos creates some other properties without > prompting for a value. However, I am having trouble mixing properties > which are entered by the user and blank properties. The following > example shows what I mean: > > #+begin_src emacs-lisp > (defun capture-letter-file (path) > (let ((name (read-string "File name: "))) > (expand-file-name (format "%s-%s.org" > (format-time-string "%Y-%m-%d") > name) path))) > > ("z" > "Letter template" > plain > (file (capture-letter-file "~/dropbox/org/org_files/letters")) > "#+STARTUP: showall indent\n#+STARTUP: hidestars\n#+OPTIONS: H:2 > num:nil tags:nil toc:nil timestamps:nil\n* > Letter\n:PROPERTIES:\n:to_address:%^{salutation}p %^{to_name}p > %^{subject}p %^{the_closing}p:END:\n > ") > > #+end_src > This produces: > > #+STARTUP: showall indent > #+STARTUP: hidestars > #+OPTIONS: H:2 num:nil tags:nil toc:nil timestamps:nil > * Letter > :PROPERTIES: > :salutation: aaa > :to_name: bbb > :subject: ccc > :the_closing: zzz > :END: > :to_address: :END: > > Note the two :END: values and the :to_address: is placed outside the > values for which the user was prompted. I have tried omitting the > :PROPERTIES: and :END: from the template and letting org create them, > but still end up with the :to_address: property being placed outside the > property draw. Yes, mixing interactive properties and hardcoded ones seem to produce wrong results. In the meantime, you can use this trick: ("z" "Letter template" plain (capture-letter-file "~/dropbox/org/org_files/letters")) "#+STARTUP: showall indent\n#+STARTUP: hidestars\n#+OPTIONS: H:2 num:nil tags:nil toc:nil timestamps:nil\n * Letter\n :PROPERTIES:\n :to_address: %\\1\n :to_name: %\\2\n :subject: %\\3\n :the_closing: %\\4\n :END:\n # %^{salutation} %^{to_name} %^{subject} %^{the_closing} %?") He bit hackish but should work. HTH, -- Bastien