From 979e7c8573f66ee695980a50cc6cafa58df90c83 Mon Sep 17 00:00:00 2001 From: Carsten Dominik Date: Fri, 3 Apr 2009 22:27:18 +0200 Subject: [PATCH] Refile: Allow to refile to top-level entries. By completing only the file name, you can now refile as a top-level entry. --- lisp/ChangeLog | 3 +++ lisp/org.el | 34 ++++++++++++++++++++++++---------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ddbb7ed88..84d94e442 100755 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -2,6 +2,9 @@ * org.el (org-scan-tags): Make tag scan find headline in first line, 2nd attempt. + (org-get-refile-targets): Add the naked file name. + (org-refile): Store as top-level entry when only file name was + given. * org-agenda.el (org-agenda-get-progress): Fix regexp bug. diff --git a/lisp/org.el b/lisp/org.el index e0be410f3..fc5d83823 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -1508,8 +1508,12 @@ are used, equivalent to the value `((nil . (:level . 1))'." (defcustom org-refile-use-outline-path nil "Non-nil means, provide refile targets as paths. So a level 3 headline will be available as level1/level2/level3. + When the value is `file', also include the file name (without directory) -into the path. When `full-file-path', include the full file path." +into the path. In this case, you can also stop the completion after +the file name, to get entries inserted as top level in the file. + + When `full-file-path', include the full file path." :group 'org-refile :type '(choice (const :tag "Not" nil) @@ -8115,6 +8119,8 @@ on the system \"/user@host:\"." (set-buffer (if (bufferp f) f (org-get-agenda-file-buffer f))) (if (bufferp f) (setq f (buffer-file-name (buffer-base-buffer f)))) (setq f (expand-file-name f)) + (if (eq org-refile-use-outline-path 'file) + (push (list (file-name-nondirectory f) f nil nil) targets)) (save-excursion (save-restriction (widen) @@ -8214,6 +8220,7 @@ operation has put the subtree." re (nth 2 it) pos (nth 3 it)) (if (and (not goto) + pos (equal (buffer-file-name) file) (if regionp (and (>= pos region-start) @@ -8242,15 +8249,22 @@ operation has put the subtree." (save-excursion (save-restriction (widen) - (goto-char pos) - (looking-at outline-regexp) - (setq level (org-get-valid-level (funcall outline-level) 1)) - (goto-char - (if reversed - (or (outline-next-heading) (point-max)) - (or (save-excursion (outline-get-next-sibling)) - (org-end-of-subtree t t) - (point-max)))) + (if pos + (progn + (goto-char pos) + (looking-at outline-regexp) + (setq level (org-get-valid-level (funcall outline-level) 1)) + (goto-char + (if reversed + (or (outline-next-heading) (point-max)) + (or (save-excursion (outline-get-next-sibling)) + (org-end-of-subtree t t) + (point-max))))) + (setq level 1) + (if (not reversed) + (goto-char (point-max)) + (goto-char (point-min)) + (or (outline-next-heading) (goto-char (point-max))))) (if (not (bolp)) (newline)) (bookmark-set "org-refile-last-stored") (org-paste-subtree level))))