emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] Agenda todo filter order


From: Carsten Dominik
Subject: Re: [O] Agenda todo filter order
Date: Sun, 8 May 2011 08:03:40 +0200

On 6.5.2011, at 19:40, Bernt Hansen wrote:

> Hi Carsten,
> 
> Thanks for the patch!  This almost does what I want :)
> 
> This patch works for TODO agendas but not tags match agendas which is
> what I am trying to use.
> 
> C-c a y returns the result I want
> C-c a x should be identical and is not.


Hi Bernt,

here is a patch to *replace* the other patch I sent earlier.  This one
should also work for tags-todo searches....

Completely untested......

Changes at master
        Modified lisp/org-agenda.el
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 609edd4..84e3247 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -4575,13 +4575,12 @@ the documentation of `org-diary'."
       (catch :skip
        (save-match-data
          (beginning-of-line)
+         (org-agenda-skip)
          (setq beg (point) end (save-excursion (outline-next-heading) (point)))
          (when (org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item 
end)
            (goto-char (1+ beg))
            (or org-agenda-todo-list-sublevels (org-end-of-subtree 'invisible))
            (throw :skip nil)))
-       (goto-char beg)
-       (org-agenda-skip)
        (goto-char (match-beginning 1))
        (setq marker (org-agenda-new-marker (match-beginning 0))
              category (org-get-category)
        Modified lisp/org.el
diff --git a/lisp/org.el b/lisp/org.el
index acbb261..a9dcf46 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -12437,17 +12437,30 @@ only lines with a TODO keyword are included in the 
output."
            ;; selective inheritance, remove uninherited ones
            (setcdr (car tags-alist)
                    (org-remove-uninherited-tags (cdar tags-alist))))
-         (when (and (or (not todo-only)
-                        (and (member todo org-not-done-keywords)
-                             (or (not 
org-agenda-tags-todo-honor-ignore-options)
-                                 (not 
(org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item)))))
-                    (let ((case-fold-search t)) (eval matcher))
-                    (or
-                     (not (member org-archive-tag tags-list))
-                     ;; we have an archive tag, should we use this anyway?
-                     (or (not org-agenda-skip-archived-trees)
-                         (and (eq action 'agenda) org-agenda-archives-mode))))
-           (unless (eq action 'sparse-tree) (org-agenda-skip))
+         (when (and
+                ;; eval matcher only when the todo condition is OK
+                (or (not todo-only)
+                    (and (member todo org-not-done-keywords)
+                         (let ((case-fold-search t)) (eval matcher))))
+                ;; Call the skipper, but return t if it does not skip,
+                ;; so that the `and' form continues evaluating
+                (progn
+                  (unless (eq action 'sparse-tree) (org-agenda-skip))
+                  t)
+                    
+                ;; Check if timestamps are deselecting this entry
+                (or (not todo-only)
+                    (and (member todo org-not-done-keywords)
+                         (or (not org-agenda-tags-todo-honor-ignore-options)
+                             (not 
(org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item)))))
+
+                ;; Extra check for the archive tag
+                ;; FIXME: Does the skipper already do this????
+                (or
+                 (not (member org-archive-tag tags-list))
+                 ;; we have an archive tag, should we use this anyway?
+                 (or (not org-agenda-skip-archived-trees)
+                     (and (eq action 'agenda) org-agenda-archives-mode))))
 
            ;; select this headline
 





reply via email to

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