From 797dfd0c82c68696d8534a9b3103d0b3c622bee6 Mon Sep 17 00:00:00 2001 Message-Id: <797dfd0c82c68696d8534a9b3103d0b3c622bee6.1651450441.git.yantar92@gmail.com> From: Ihor Radchenko Date: Mon, 2 May 2022 08:11:28 +0800 Subject: [PATCH] org-capture: Expand sexps in template with Org mode being active * lisp/org-capture.el (org-capture-fill-template): Enable `org-mode' in the temporary template expansion buffer. Update docstring accordingly. (org-capture-templates): Clarify that %(sexp) expansion happens in a temporary Org mode buffer. Fixes https://orgmode.org/list/CABUh-776V-_+_JAZwcKQm9ATcs0WUV9SmGwjooGFbt=CtwQj8g@mail.gmail.com --- lisp/org-capture.el | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/org-capture.el b/lisp/org-capture.el index 068e3eda2..9b17fa978 100644 --- a/lisp/org-capture.el +++ b/lisp/org-capture.el @@ -309,6 +309,8 @@ (defcustom org-capture-templates nil introduced with %[pathname] are expanded this way. Since this happens after expanding non-interactive %-escapes, those can be used to fill the expression. + The evaluation happens with Org mode set as major mode + in a temporary buffer. %<...> The result of `format-time-string' on the ... format specification. %t Time stamp, date only. The time stamp is the current @@ -1572,7 +1574,9 @@ (defun org-capture-fill-template (&optional template initial annotation) "Fill a TEMPLATE and return the filled template as a string. The template may still contain \"%?\" for cursor positioning. INITIAL content and/or ANNOTATION may be specified, but will be overridden -by their respective `org-store-link-plist' properties if present." +by their respective `org-store-link-plist' properties if present. + +Expansion occurs in a temporary Org mode buffer." (let* ((template (or template (org-capture-get :template))) (buffer (org-capture-get :buffer)) (file (buffer-file-name (or (buffer-base-buffer buffer) buffer))) @@ -1645,6 +1649,7 @@ (defun org-capture-fill-template (&optional template initial annotation) (setq buffer-file-name nil) (setq mark-active nil) (insert template) + (org-mode) (goto-char (point-min)) ;; %[] insert contents of a file. (save-excursion -- 2.35.1