Sorry, messed up the patch attachment, will resend in a new thread.
Richard Richard Garner <richard.gar...@mq.edu.au> writes: > Hi all, > > The included patch adds a new property :refile-to to org capture > templates, allowing each template to have its own set of refile targets. > I find this really useful in practice and thought others might too. > > Richard > > --- > > From 829c1ba4805327645fcb75b35b73ecb3a1700b2f Mon Sep 17 00:00:00 2001 > From: Richard Garner <richard.gar...@mq.edu.au> > Subject: > > * lisp/org-capture.el (org-capture-refile): bind `org-refile-targets' > to value of local capture template property :refile-to around call to > `org-refile'. > > (org-capture-templates): document new capture template property > :refile-to. > > TINYCHANGE > --- > lisp/org-capture.el | 18 ++++++++++++------ > 1 file changed, 12 insertions(+), 6 deletions(-) > > diff --git a/lisp/org-capture.el b/lisp/org-capture.el > index 9fbd00ccd..64ecd5fe1 100644 > --- a/lisp/org-capture.el > +++ b/lisp/org-capture.el > @@ -246,6 +246,10 @@ properties are: > > :jump-to-captured When set, jump to the captured entry when finished. > > + :refile-to 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 > before and after the new item. Default 0, only common > other value is 1. > @@ -885,7 +889,8 @@ for `entry'-type templates")) > (pos (make-marker)) > (org-capture-is-refiling t) > (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-to (org-capture-get :refile-to 'local))) > ;; Since `org-capture-finalize' may alter buffer contents (e.g., > ;; empty lines) around entry, use a marker to refer to the > ;; 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 > ;; control when the latter function is called. > (org-capture-put :kill-buffer nil :jump-to-captured nil) > - (org-capture-finalize) > - (save-window-excursion > - (with-current-buffer base > - (org-with-point-at pos > - (call-interactively 'org-refile)))) > + (let ((org-refile-targets (or refile-to org-refile-targets))) > + (org-capture-finalize) > + (save-window-excursion > + (with-current-buffer base > + (org-with-point-at pos > + (call-interactively 'org-refile))))) > (when kill-buffer > (with-current-buffer base (save-buffer)) > (kill-buffer base))