From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tassilo Horn Subject: [PATCH] Use and show default refiling location. Date: Wed, 02 Mar 2011 14:46:37 +0100 Message-ID: <87wrkh4oua.fsf@member.fsf.org> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from [140.186.70.92] (port=47575 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PumOJ-00087a-Ty for emacs-orgmode@gnu.org; Wed, 02 Mar 2011 08:47:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PumOI-0005NN-Ep for emacs-orgmode@gnu.org; Wed, 02 Mar 2011 08:46:59 -0500 Received: from lo.gmane.org ([80.91.229.12]:48674) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PumOI-0005N8-4x for emacs-orgmode@gnu.org; Wed, 02 Mar 2011 08:46:58 -0500 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1PumOD-0007Us-2q for emacs-orgmode@gnu.org; Wed, 02 Mar 2011 14:46:53 +0100 Received: from tsdh.uni-koblenz.de ([141.26.67.142]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 02 Mar 2011 14:46:53 +0100 Received: from tassilo by tsdh.uni-koblenz.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 02 Mar 2011 14:46:53 +0100 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org * org.el (org-refile-get-location): Set and show default value. (org-goto, org-refile): Adapt calls. * org-id.el (org-id-get-with-outline-path-completion): Adapt call. * org-agenda.el (org-agenda-refile, org-agenda-bulk-action): Adapt calls. * org-remember.el (org-remember-handler): Adapt call. --- This patch that implements the usage (and indication) of a default refiling location for `org-refile'. The default is the first value of `org-refile-history'. Although that value was already easily accessible from the history with M-n, an explicit default is convenient when refiling several (non-consecutive, so you cannot refile using a region) entries. That happened to me just now after importing a dozen of contacts from Gnus into my contacts.org (using org-contacts.el), followed by refiling them in several category headlines. lisp/org-agenda.el | 4 ++-- lisp/org-id.el | 2 +- lisp/org-remember.el | 2 +- lisp/org.el | 17 ++++++++++++----- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index ea822da..9a818ce 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -6718,7 +6718,7 @@ If this information is not given, the function uses the tree at point." (pos (marker-position marker)) (rfloc (or rfloc (org-refile-get-location - (if goto "Goto: " "Refile to: ") buffer + (if goto "Goto" "Refile to") buffer org-refile-allow-creating-parent-nodes)))) (with-current-buffer buffer (save-excursion @@ -7984,7 +7984,7 @@ The prefix arg is passed through to the command if possible." ((member action '(?r ?w)) (setq rfloc (org-refile-get-location - "Refile to: " + "Refile to" (marker-buffer (car org-agenda-bulk-marked-entries)) org-refile-allow-creating-parent-nodes)) (if (nth 3 rfloc) diff --git a/lisp/org-id.el b/lisp/org-id.el index a8004af..a70dd15 100644 --- a/lisp/org-id.el +++ b/lisp/org-id.el @@ -231,7 +231,7 @@ It returns the ID of the entry. If necessary, the ID is created." (org-refile-use-outline-path (if (caar org-refile-targets) 'file t)) (org-refile-target-verify-function nil) - (spos (org-refile-get-location "Entry: ")) + (spos (org-refile-get-location "Entry")) (pom (and spos (move-marker (make-marker) (nth 3 spos) (get-file-buffer (nth 1 spos)))))) (prog1 (org-id-get pom 'create) diff --git a/lisp/org-remember.el b/lisp/org-remember.el index c6e21ae..3be7b86 100644 --- a/lisp/org-remember.el +++ b/lisp/org-remember.el @@ -1004,7 +1004,7 @@ See also the variable `org-reverse-note-order'." ((eq org-remember-interactive-interface 'outline-path-completion) (let ((org-refile-targets '((nil . (:maxlevel . 10)))) (org-refile-use-outline-path t)) - (setq spos (org-refile-get-location "Heading: ") + (setq spos (org-refile-get-location "Heading") exitcmd 'return spos (nth 3 spos)))) (t (error "This should not happen"))) diff --git a/lisp/org.el b/lisp/org.el index a26a3ca..51240c3 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -6544,7 +6544,7 @@ the headline hierarchy above." (selected-point (if (eq interface 'outline) (car (org-get-location (current-buffer) org-goto-help)) - (let ((pa (org-refile-get-location "Goto: "))) + (let ((pa (org-refile-get-location "Goto"))) (org-refile-check-position pa) (nth 3 pa))))) (if selected-point @@ -10290,7 +10290,7 @@ This can be done with a 0 prefix: `C-0 C-c C-w'" (setq it (or rfloc (save-excursion (org-refile-get-location - (if goto "Goto: " "Refile to: ") default-buffer + (if goto "Goto" "Refile to") default-buffer org-refile-allow-creating-parent-nodes))))) (setq file (nth 1 it) re (nth 2 it) @@ -10371,13 +10371,20 @@ This can be done with a 0 prefix: `C-0 C-c C-w'" (message "This is the location of the last refile")) (defun org-refile-get-location (&optional prompt default-buffer new-nodes) - "Prompt the user for a refile location, using PROMPT." + "Prompt the user for a refile location, using PROMPT. +PROMPT should not be prefixed with a colon and a space, because +this function prepends the default value from +`org-refile-history' automatically, if that is not empty." (let ((org-refile-targets org-refile-targets) (org-refile-use-outline-path org-refile-use-outline-path)) (setq org-refile-target-table (org-get-refile-targets default-buffer))) (unless org-refile-target-table (error "No refile targets")) - (let* ((cbuf (current-buffer)) + (let* ((prompt (concat prompt + (and (car org-refile-history) + (concat " (default " (car org-refile-history) ")")) + ": ")) + (cbuf (current-buffer)) (partial-completion-mode nil) (cfn (buffer-file-name (buffer-base-buffer cbuf))) (cfunc (if (and org-refile-use-outline-path @@ -10400,7 +10407,7 @@ This can be done with a 0 prefix: `C-0 C-c C-w'" pa answ parent-target child parent old-hist) (setq old-hist org-refile-history) (setq answ (funcall cfunc prompt tbl nil (not new-nodes) - nil 'org-refile-history)) + nil 'org-refile-history (car org-refile-history))) (setq pa (or (assoc answ tbl) (assoc (concat answ "/") tbl))) (org-refile-check-position pa) (if pa -- 1.7.4.1