diff --git a/lisp/org-capture.el b/lisp/org-capture.el index 25af674b8..2222bf462 100644 --- a/lisp/org-capture.el +++ b/lisp/org-capture.el @@ -1311,8 +1311,8 @@ Of course, if exact position has been required, just put it there." (defun org-capture-mark-kill-region (beg end) "Mark the region that will have to be killed when aborting capture." - (let ((m1 (move-marker (make-marker) beg)) - (m2 (move-marker (make-marker) end))) + (let ((m1 (copy-marker beg)) + (m2 (copy-marker end t))) (org-capture-put :begin-marker m1) (org-capture-put :end-marker m2))) diff --git a/testing/lisp/test-org-capture.el b/testing/lisp/test-org-capture.el index 4d5dfb713..b98166a0e 100644 --- a/testing/lisp/test-org-capture.el +++ b/testing/lisp/test-org-capture.el @@ -146,5 +146,21 @@ (list file1 file2 (buffer-file-name))))))))) +(ert-deftest test-org-capture/insert-at-end-abort () + "Test that capture can be aborted after inserting at end of capture buffer." + (should + (equal + "* A\n* B\n" + (org-test-with-temp-text-in-file "* A\n* B\n" + (let* ((file (buffer-file-name)) + (org-capture-templates + `(("t" "Todo" entry (file+headline ,file "A") "** H1 %?")))) + (org-capture nil "t") + (goto-char (point-max)) + (insert "Capture text") + (org-capture-kill)) + (buffer-string))))) + + (provide 'test-org-capture) ;;; test-org-capture.el ends here