From dd31878ee74b1bb78215be83db39857a799a5b17 Mon Sep 17 00:00:00 2001 From: Bastien Guerry Date: Fri, 24 Aug 2012 15:45:03 +0200 Subject: [PATCH] org-capture.el: Protect the text used for replacement from being further replaced * org-capture.el (org-capture-fill-template): Protect the text used for replacement from being further replaced. Thanks to Moritz Ulrich for reporting this bug. --- lisp/org-capture.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lisp/org-capture.el b/lisp/org-capture.el index 5cd3b8f3f..407e3bef5 100644 --- a/lisp/org-capture.el +++ b/lisp/org-capture.el @@ -1452,7 +1452,8 @@ The template may still contain \"%?\" for cursor positioning." (org-split-string initial "\n") (concat "\n" lead)))))) (replace-match - (or (eval (intern (concat "v-" (match-string 1)))) "") + (or (org-add-props (eval (intern (concat "v-" (match-string 1)))) + '(org-protected t)) "") t t))) ;; From the property list @@ -1469,8 +1470,8 @@ The template may still contain \"%?\" for cursor positioning." (let ((org-inhibit-startup t)) (org-mode)) ;; Interactive template entries (goto-char (point-min)) - (while (re-search-forward "%^\\({\\([^}]*\\)}\\)?\\([gGtTuUCLp]\\)?" - nil t) + (while (and (re-search-forward "%^\\({\\([^}]*\\)}\\)?\\([gGtTuUCLp]\\)?" nil t) + (not (get-text-property (point) 'org-protected))) (unless (org-capture-escaped-%) (setq char (if (match-end 3) (match-string-no-properties 3)) prompt (if (match-end 2) (match-string-no-properties 2)))