org-capture: Correctly store position of captured entry

* lisp/org-capture.el (org-capture-place-entry): Store position at the
  beginning of the capture entry, not at its end.
* testing/lisp/test-org-capture.el (test-org-caputre/entry): Add test.
This commit is contained in:
Nicolas Goaziou 2018-12-06 15:05:50 +01:00
parent 503ede74bc
commit 1d60d5ee03
2 changed files with 14 additions and 2 deletions

View File

@ -1133,9 +1133,9 @@ may have been stored before."
(let ((origin (point)))
(unless (bolp) (insert "\n"))
(org-capture-empty-lines-before)
(org-capture-position-for-last-stored (point))
(let ((beg (point)))
(org-paste-subtree level template 'for-yank)
(org-capture-position-for-last-stored beg)
(let ((end (if (org-at-heading-p) (line-end-position 0) (point))))
(org-capture-empty-lines-after)
(unless (org-at-heading-p) (outline-next-heading))

View File

@ -206,7 +206,19 @@
(goto-char (point-max))
(insert "Capture text")
(org-capture-finalize))
(buffer-string)))))
(buffer-string))))
;; Correctly save position of inserted entry.
(should
(equal
"** H"
(org-test-with-temp-text-in-file "* A"
(let* ((file (buffer-file-name))
(org-capture-templates
`(("t" "Test" entry (file+headline ,file "A") "** H\nFoo"
:immediate-finish t))))
(org-capture nil "t")
(org-capture '(16))
(buffer-substring (point) (line-end-position)))))))
(ert-deftest test-org-capture/item ()
"Test `item' type in capture template."