emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] org-agenda-custom-commands clarification on filters needed


From: Eric Abrahamsen
Subject: Re: [O] org-agenda-custom-commands clarification on filters needed
Date: Mon, 29 Aug 2011 09:53:01 +0800
User-agent: Gnus/5.110018 (No Gnus v0.18) Emacs/23.2 (gnu/linux)

On Sun, Aug 28 2011, Thomas Wallrafen wrote:

> Hi org'ers,
>
> I am currently trying to figure out a way to build a composite view for
> an agenda containing agenda and todos, which works well but when it
> comes to setting filters...
>
> In the first example (agenda and todo list below) the filter "+home" for
> the agenda does not take effect. When reordering that the todo list is
> on top and the agenda below, it works as expected. That is, both items
> of the composite view are correctly filtered with tag "+home".
>
> #+begin_src elisp
> (setq org-agenda-custom-commands
>         '(("h" "Agenda and home related todos" (
>                 (agenda "" ((org-agenda-filter-preset '("+home")) 
> (org-agenda-span 4)))
>                 (tags-todo "+home")
>                 ))))

I've been fooling with this recently, as well. The docstring for
`org-agenda-filter-preset' says that it "will not work reliably" to
filter just a single block of a multi-block custom agenda. You need to
put the filter in the tail end of the whole definition, and that way it
will apply to all the blocks (apparently there's no reliable way to
apply different filters to different blocks, but that's probably a rare
use-case). So I think you want:

(setq org-agenda-custom-commands
          '(("h" "Agenda and home related todos"
             ((agenda)
              (tags-todo))
             ((org-agenda-filter-preset '("+home"))
              (org-agenda-span 4)))))

This or something very close to it should work. It only works with tags
though, not more complex matches.

HTH,
Eric

>
>
> (setq org-agenda-custom-commands
>         '(("h" "Agenda and home related todos" (
>                 (tags-todo "+home")
>                 (agenda "" ((org-agenda-filter-preset '("+home")) 
> (org-agenda-span 4)))
>                 ))))
>
> #+end_src
>
>
> Having a discussion with Thumper_ on the irc channel he found out some
> more oddities (copied and slightly modified by courtesy of Thumper_):
>
> #+STARTUP:
> * This one works
> [2011-08-28 Sun 07:07]
> #+begin_src elisp
> (setq org-agenda-custom-commands
>       '(("h" "Agenda and home related todos"
>          ((agenda ""
>                   ((org-agenda-filter-preset
>                     '("+home"))
>                    (org-agenda-span 4)))
>           (tags-todo "+home"
>                      ((org-agenda-filter-preset
>                        '("+home")))))
>          nil)))
> #+end_src
> * This also incorrectly filters the first agenda
> [2011-08-28 Sun 07:07]
> #+begin_src elisp
> (setq org-agenda-custom-commands
>       '(("h" "Agenda and home related todos"
>        ((agenda ""
>                  ((org-agenda-span 4)))
>         (tags-todo "+home"
>                    ((org-agenda-filter-preset
>                      '("+home")))))
>        nil)))
> #+end_src
>
>
> So, how would I set the filters properly given that I want the agenda
> tob be first and a list of todo items below?
>
> Any pointers to documentation or hints greatly appreciated :)
>
> bye,
>
> thomas




reply via email to

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