From 04a43208d096e792aea68efadc5df95fcbb7d94b Mon Sep 17 00:00:00 2001 From: Bastien Guerry Date: Thu, 21 Jul 2011 16:51:12 +0200 Subject: [PATCH 2/2] org-refile: exclude current (sub)heading(s) even if they start with a TODO keyword. (org-get-heading): New optional argument to return heading with no TODO keyword. (org-refile-get-location): Use this new argument. --- lisp/org.el | 26 ++++++++++++++++++-------- 1 files changed, 18 insertions(+), 8 deletions(-) diff --git a/lisp/org.el b/lisp/org.el index 51b8615..2ba345b 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -6971,15 +6971,25 @@ This is important for non-interactive uses of the command." (hide-subtree))) (run-hooks 'org-insert-heading-hook))))) -(defun org-get-heading (&optional no-tags) - "Return the heading of the current entry, without the stars." +(defun org-get-heading (&optional no-tags no-todo) + "Return the heading of the current entry, without the stars. +When NO-TAGS is non-nil, don't include tags. +When NO-TODO is non-nil, don't include TODO keywords." (save-excursion (org-back-to-heading t) - (if (looking-at - (if no-tags - (org-re "\\*+[ \t]+\\([^\n\r]*?\\)\\([ \t]+:[[:alnum:]:_@#%]+:[ \t]*\\)?$") - "\\*+[ \t]+\\([^\r\n]*\\)")) - (match-string 1) ""))) + (cond + ((and no-tags no-todo) + (looking-at org-complex-heading-regexp) + (match-string 4)) + (no-tags + (looking-at "\\*+[ \t]+\\([^\n\r]*?\\)\\([ \t]+:[[:alnum:]:_@#%]+:[ \t]*\\)?$") + (match-string 1)) + (no-todo + (looking-at (concat "\\*+[ \t]+" org-todo-regexp " +" + "\\([^\n\r]*?[ \t]+:[[:alnum:]:_@#%]+:[ \t]*\\)?$")) + (match-string 2)) + (t (looking-at "\\*+[ \t]+\\([^\r\n]*\\)") + (match-string 1))))) (defun org-heading-components () "Return the components of the current heading. @@ -10504,7 +10514,7 @@ this function appends the default value from (org-map-tree (lambda() (setq excluded-entries - (append excluded-entries (list (org-get-heading t))))))) + (append excluded-entries (list (org-get-heading t t))))))) (setq org-refile-target-table (org-refile-get-targets default-buffer excluded-entries))) (unless org-refile-target-table -- 1.7.5.2