diff --git a/lisp/org-capture.el b/lisp/org-capture.el index 2d72c39fd..0446594dc 100644 --- a/lisp/org-capture.el +++ b/lisp/org-capture.el @@ -1670,11 +1670,9 @@ The template may still contain \"%?\" for cursor positioning." ;; Outside embedded Lisp, repeat leading ;; characters before initial place holder ;; every line. - (let ((lead (buffer-substring-no-properties - (line-beginning-position) (point)))) - (replace-regexp-in-string "\n\\(.\\)" - (concat lead "\\1") - v-i nil nil 1)))) + (let ((lead (concat "\n" + (org-current-line-string t)))) + (replace-regexp-in-string "\n" lead v-i nil t)))) (?a v-a) (?A v-A) (?c v-c) diff --git a/testing/lisp/test-org-capture.el b/testing/lisp/test-org-capture.el index fd4f21a0c..978f8436a 100644 --- a/testing/lisp/test-org-capture.el +++ b/testing/lisp/test-org-capture.el @@ -74,11 +74,16 @@ (org-capture-fill-template "%i" "%(concat \"no \" \"evaluation\")")))) ;; When %i contents span over multiple line, repeat initial leading - ;; characters over each line. + ;; characters over each line. Also try possibly problematic + ;; prefixes such as "\\". (should (equal "> line 1\n> line 2\n" (let ((org-store-link-plist nil)) (org-capture-fill-template "> %i" "line 1\nline 2")))) + (should + (equal "\\ line 1\n\\ line 2\n" + (let ((org-store-link-plist nil)) + (org-capture-fill-template "\\ %i" "line 1\nline 2")))) ;; Test %-escaping with \ character. (should (equal "%i\n"