From 74e7111a5f6372dd3c2dd52a743cf37e6d055b88 Mon Sep 17 00:00:00 2001 From: Carsten Dominik Date: Mon, 24 Nov 2008 10:59:10 +0100 Subject: [PATCH] Implement outline-path-completion in one go. --- doc/org.texi | 8 +++++--- lisp/ChangeLog | 6 ++++++ lisp/org.el | 25 ++++++++++++++++++++----- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/doc/org.texi b/doc/org.texi index faac6b953..66f8d56a6 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -868,6 +868,7 @@ u @r{One level up.} 0-9 @r{Digit argument.} q @r{Quit} @end example +See also the variable@code{org-goto-interface}. @end table @node Structure editing, Archiving, Motion, Document Structure @@ -5206,13 +5207,14 @@ special command: Refile the entry or region at point. This command offers possible locations for refiling the entry and lets you select one with completion. The item (or all items in the region) is filed below the target heading as a subitem. -Depending on @code{org-reverse-note-order}, it will be either the first of +Depending on @code{org-reverse-note-order}, it will be either the first or last subitem.@* By default, all level 1 headlines in the current buffer are considered to be targets, but you can have more complex definitions across a number of files. See the variable @code{org-refile-targets} for details. If you would like to -select a location via a file-pathlike completion along the outline path, see -the variable @code{org-refile-use-outline-path}. +select a location via a file-path-like completion along the outline path, see +the variables @code{org-refile-use-outline-path} and +@code{org-outline-path-complete-in-steps}. @kindex C-u C-c C-w @item C-u C-c C-w Use the refile interface to jump to a heading. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 8e1f66c16..1a467a716 100755 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2008-11-24 Carsten Dominik + + * org.el (org-outline-path-complete-in-steps): New option. + (org-refile-get-location): Honor + `org-outline-path-complete-in-steps'. + 2008-11-23 Carsten Dominik * org-clock.el (org-dblock-write:clocktable): Make sure the diff --git a/lisp/org.el b/lisp/org.el index d25d9c5cf..579199e27 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -1245,7 +1245,7 @@ For more examples, see the system specific constants (defgroup org-refile nil "Options concerning refiling entries in Org-mode." - :tag "Org Remember" + :tag "Org Refile" :group 'org) (defcustom org-directory "~/org" @@ -1275,7 +1275,8 @@ outline The interface shows an outline of the relevant file and the correct heading is found by moving through the outline or by searching with incremental search. outline-path-completion Headlines in the current buffer are offered via - completion." + completion. This is the interface also used by + the refile command." :group 'org-refile :type '(choice (const :tag "Outline" outline) @@ -1287,6 +1288,7 @@ When nil, new notes will be filed to the end of a file or entry. This can also be a list with cons cells of regular expressions that are matched against file names, and values." :group 'org-remember + :group 'org-refile :type '(choice (const :tag "Reverse always" t) (const :tag "Reverse never" nil) @@ -1314,7 +1316,7 @@ This is list of cons cells. Each cell contains: When this variable is nil, all top-level headlines in the current buffer are used, equivalent to the value `((nil . (:level . 1))'." - :group 'org-remember + :group 'org-refile :type '(repeat (cons (choice :value org-agenda-files @@ -1333,13 +1335,25 @@ are used, equivalent to the value `((nil . (:level . 1))'." 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." - :group 'org-remember + :group 'org-refile :type '(choice (const :tag "Not" nil) (const :tag "Yes" t) (const :tag "Start with file name" file) (const :tag "Start with full file path" full-file-path))) +(defcustom org-outline-path-complete-in-steps t + "Non-nil means, complete the outline path in hierarchical steps. +When Org-mode uses the refile interface to select an outline path +\(see variable `org-refile-use-outline-path'), the completion of +the path can be done is a single go, or if can be done in steps down +the headline hierarchy. Going in steps is probably the best if you +do not use a special completion package like `ido' or `icicles'. +However, when using these packages, going in one step can be very +fast, while still showing the whole path to the entry." + :group 'org-refile + :type 'boolean) + (defgroup org-todo nil "Options concerning TODO items in Org-mode." :tag "Org TODO" @@ -7504,7 +7518,8 @@ operation has put the subtree." (unless org-refile-target-table (error "No refile targets")) (let* ((cbuf (current-buffer)) - (cfunc (if org-refile-use-outline-path + (cfunc (if (and org-refile-use-outline-path + org-outline-path-complete-in-steps) 'org-olpath-completing-read 'org-ido-completing-read)) (extra (if org-refile-use-outline-path "/" ""))