Hi All,
I finally found some hours to walk through the code.
On 18.05.2010 19:25, Matt Lundin wrote:
> Martin Pohlack <[email protected]> writes:
>
>> Hi,
>>
>> On 18.05.2010 09:42, Matthias Teege wrote:
>>> Moin,
>>>
>>> I'm using a simple skip-function to exclude todos from a list.
>>>
>>> (defun my-skip-someday-and-scheduled ()
>>> ""
>>> (org-agenda-skip-entry-if 'scheduled 'regexp ":SOMEDAY:"))
>>>
>>> That works when the tag was assigned to an entry but not when it was
>>> inherited from a parent. How do I get all tags for an entry?
>>
>> I have been using the same approach with the same limitations. I
>> stumbled upon the "tags filter preset", which supposedly should filter
>> out headlines with a specific tag set.
>>
>> I tried to set it to "-maybe" but it did not seem to have an effect
>> with the default "Agenda" type. Is this supposed to work?
>
> Did you set the variable as a list?
>
> --8<---------------cut here---------------start------------->8---
> (setq org-agenda-custom-commands
> '(("x" "No maybe" todo ""
> ((org-agenda-filter-preset '("-maybe"))))))
> --8<---------------cut here---------------end--------------->8---
>
> BTW, I believe one solution to the original question is:
>
> --8<---------------cut here---------------start------------->8---
> (setq org-agenda-custom-commands
> '(("x" "No scheduled or someday" todo ""
> ((org-agenda-todo-ignore-scheduled t)
> (org-agenda-filter-preset '("-SOMEDAY"))))))
> --8<---------------cut here---------------end--------------->8---
Thanks for your suggestion Matt.
I now think the problem is that I have a multi-agenda.
org-finalize-agenda is called for each subagenda here but the branch
where org-agenda-filter-apply would be called is never taken as it is
scoped with "unless org-agenda-multi". I have also found no other
non-interactive trigger for org-agenda-filter-apply.
I see two possible solutions here:
* Run org-agenda-filter-apply on a narrowed agenda buffer (only for
the sub-agenda). In fact, the agenda buffer seems to be narrowed
down at this point already. This would be the perfect solution as
each sub-agenda could install its own org-agenda-filter-preset.
Find attached a patch which achieves this. It seems to work well for
my short tests.
* Run org-agenda-filter-apply once for the whole buffer with a global
org-agenda-filter-preset. This would be mostly ok for some use cases
(I only want to globally remove all "maybe" entries, including the
inherited ones).
Cheers,
Martin
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 19ea87c..033c981 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -2760,7 +2760,9 @@ bind it in the options section.")
(defun org-finalize-agenda ()
"Finishing touch for the agenda buffer, called just before displaying it."
- (unless org-agenda-multi
+ (if org-agenda-multi
+ (when (get 'org-agenda-filter :preset-filter)
+ (org-agenda-filter-apply org-agenda-filter))
(save-excursion
(let ((inhibit-read-only t))
(goto-char (point-min))
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
[email protected]
http://lists.gnu.org/mailman/listinfo/emacs-orgmode