From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Agenda todo filter order Date: Sun, 8 May 2011 08:03:40 +0200 Message-ID: References: <87zknlhici.fsf@norang.ca> <87tydthi1x.fsf@norang.ca> <08D28BBE-80FF-4754-97BB-9674D2EB7CB5@gmail.com> <878vujiv6x.fsf@norang.ca> Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([140.186.70.92]:50420) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QIx5m-0007Pz-1o for emacs-orgmode@gnu.org; Sun, 08 May 2011 02:03:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QIx5k-0006wZ-R2 for emacs-orgmode@gnu.org; Sun, 08 May 2011 02:03:46 -0400 Received: from mail-ew0-f41.google.com ([209.85.215.41]:59854) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QIx5k-0006wT-HF for emacs-orgmode@gnu.org; Sun, 08 May 2011 02:03:44 -0400 Received: by ewy9 with SMTP id 9so1445290ewy.0 for ; Sat, 07 May 2011 23:03:42 -0700 (PDT) In-Reply-To: <878vujiv6x.fsf@norang.ca> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Bernt Hansen Cc: emacs-orgmode@gnu.org On 6.5.2011, at 19:40, Bernt Hansen wrote: > Hi Carsten, >=20 > Thanks for the patch! This almost does what I want :) >=20 > This patch works for TODO agendas but not tags match agendas which is > what I am trying to use. >=20 > 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) + =20 + ;; 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)))) =20 ;; select this headline =20