mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-12-02 08:22:16 +00:00
org-capture: Fix capture aborting
* lisp/org-capture.el (org-capture-place-entry): Fix delimiters for region to delete when aborting capture. * testing/lisp/test-org-capture.el (test-org-capture/abort): Add test.
This commit is contained in:
parent
0fa8bb4c51
commit
aaa3372b8b
@ -1128,21 +1128,22 @@ may have been stored before."
|
||||
(unless (org-at-heading-p) (outline-next-heading)))
|
||||
;; Otherwise, insert as a top-level entry at the end of the file.
|
||||
(t (goto-char (point-max))))
|
||||
(let ((beg (point))
|
||||
(template (org-capture-get :template)))
|
||||
(let ((origin (point)))
|
||||
(unless (bolp) (insert "\n"))
|
||||
(org-capture-empty-lines-before)
|
||||
(org-capture-verify-tree template)
|
||||
(org-paste-subtree level template 'for-yank)
|
||||
(org-capture-empty-lines-after)
|
||||
(org-capture-position-for-last-stored beg)
|
||||
(unless (org-at-heading-p) (outline-next-heading))
|
||||
(org-capture-mark-kill-region beg (point))
|
||||
(let ((end (if (org-at-heading-p) (line-end-position 0) (point))))
|
||||
(org-capture-narrow beg end)
|
||||
(when (or (search-backward "%?" beg t)
|
||||
(search-forward "%?" end t))
|
||||
(replace-match ""))))))
|
||||
(let ((beg (point)))
|
||||
(org-capture-position-for-last-stored beg)
|
||||
(let ((template (org-capture-get :template)))
|
||||
(org-capture-verify-tree template)
|
||||
(org-paste-subtree level template 'for-yank))
|
||||
(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))
|
||||
(org-capture-mark-kill-region origin (point))
|
||||
(org-capture-narrow beg end)
|
||||
(when (or (search-backward "%?" beg t)
|
||||
(search-forward "%?" end t))
|
||||
(replace-match "")))))))
|
||||
|
||||
(defun org-capture-place-item ()
|
||||
"Place the template as a new plain list item."
|
||||
|
@ -146,7 +146,9 @@
|
||||
(list file1 file2 (buffer-file-name)))))))))
|
||||
|
||||
(ert-deftest test-org-capture/abort ()
|
||||
"Test that capture can be aborted after inserting at end of capture buffer."
|
||||
"Test aborting a capture process."
|
||||
;; Test that capture can be aborted after inserting at end of
|
||||
;; capture buffer.
|
||||
(should
|
||||
(equal
|
||||
"* A\n* B\n"
|
||||
@ -158,6 +160,18 @@
|
||||
(goto-char (point-max))
|
||||
(insert "Capture text")
|
||||
(org-capture-kill))
|
||||
(buffer-string))))
|
||||
;; Test aborting a capture that split the line.
|
||||
(should
|
||||
(equal
|
||||
"* AB\n"
|
||||
(org-test-with-temp-text-in-file "* AB\n"
|
||||
(let* ((file (buffer-file-name))
|
||||
(org-capture-templates
|
||||
`(("t" "Todo" entry
|
||||
(file+function ,file (lambda () (goto-char 4))) "** H1 %?"))))
|
||||
(org-capture nil "t")
|
||||
(org-capture-kill))
|
||||
(buffer-string)))))
|
||||
|
||||
(ert-deftest test-org-caputre/entry ()
|
||||
|
Loading…
Reference in New Issue
Block a user