I have pushed this patch. - Carsten
On 8.5.2011, at 20:17, Bernt Hansen wrote: > Hi Carsten, > > I think this one works :) \o/ > > Thanks! > > -Bernt > > > Carsten Dominik <carsten.domi...@gmail.com> writes: > >> Hi Bernt, >> >> here is another try, I fixed a logical bug in the previous patch... >> Again, this patch replaces the previous one. >> >> 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..975266c 100644 >> --- a/lisp/org.el >> +++ b/lisp/org.el >> @@ -12437,17 +12437,31 @@ 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 >> + (and (or (not todo-only) (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 >>