lisp/org-capture.el: Add a new :refile-targets template option

* lisp/org-capture.el (org-capture-templates): Add :refile-targets.
(org-capture-refile): Honor :refile-targets.

TINYCHANGE
This commit is contained in:
Richard Garner 2021-05-01 13:07:55 +02:00 committed by Bastien Guerry
parent b90b850ae8
commit 154e1f19a9
1 changed files with 12 additions and 6 deletions

View File

@ -246,6 +246,10 @@ properties are:
:jump-to-captured When set, jump to the captured entry when finished. :jump-to-captured When set, jump to the captured entry when finished.
:refile-targets When exiting capture mode via `org-capture-refile', the
variable `org-refile-targets' will be temporarily bound
to the value of this property.
:empty-lines Set this to the number of lines that should be inserted :empty-lines Set this to the number of lines that should be inserted
before and after the new item. Default 0, only common before and after the new item. Default 0, only common
other value is 1. other value is 1.
@ -885,7 +889,8 @@ for `entry'-type templates"))
(pos (make-marker)) (pos (make-marker))
(org-capture-is-refiling t) (org-capture-is-refiling t)
(kill-buffer (org-capture-get :kill-buffer 'local)) (kill-buffer (org-capture-get :kill-buffer 'local))
(jump-to-captured (org-capture-get :jump-to-captured 'local))) (jump-to-captured (org-capture-get :jump-to-captured 'local))
(refile-targets (org-capture-get :refile-targets 'local)))
;; Since `org-capture-finalize' may alter buffer contents (e.g., ;; Since `org-capture-finalize' may alter buffer contents (e.g.,
;; empty lines) around entry, use a marker to refer to the ;; empty lines) around entry, use a marker to refer to the
;; headline to be refiled. Place the marker in the base buffer, ;; headline to be refiled. Place the marker in the base buffer,
@ -895,11 +900,12 @@ for `entry'-type templates"))
;; early. We want to wait for the refiling to be over, so we ;; early. We want to wait for the refiling to be over, so we
;; control when the latter function is called. ;; control when the latter function is called.
(org-capture-put :kill-buffer nil :jump-to-captured nil) (org-capture-put :kill-buffer nil :jump-to-captured nil)
(let ((org-refile-targets (or refile-targets org-refile-targets)))
(org-capture-finalize) (org-capture-finalize)
(save-window-excursion (save-window-excursion
(with-current-buffer base (with-current-buffer base
(org-with-point-at pos (org-with-point-at pos
(call-interactively 'org-refile)))) (call-interactively 'org-refile)))))
(when kill-buffer (when kill-buffer
(with-current-buffer base (save-buffer)) (with-current-buffer base (save-buffer))
(kill-buffer base)) (kill-buffer base))