emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Remove current heading from refile targets?


From: Bastien
Subject: Re: [O] Remove current heading from refile targets?
Date: Thu, 21 Jul 2011 16:52:06 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

Jason Dunsmore <address@hidden> writes:

> Looks good except for one quirk.  If the heading has a TODO keyword, it
> isn't excluded.  Example:
>
> * Heading1
> ** TODO Subheading1
> * Heading2

Please test this second patch over the previous one.

>From 04a43208d096e792aea68efadc5df95fcbb7d94b Mon Sep 17 00:00:00 2001
From: Bastien Guerry <address@hidden>
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:]:address@hidden:[ \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:]:address@hidden:[ \t]*\\)?$")
+      (match-string 1))
+     (no-todo
+      (looking-at (concat "\\*+[ \t]+" org-todo-regexp " +"
+                         "\\([^\n\r]*?[ \t]+:[[:alnum:]:address@hidden:[ 
\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

Thanks!

-- 
 Bastien

reply via email to

[Prev in Thread] Current Thread [Next in Thread]