emacs-orgmode
[Top][All Lists]
Advanced

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

[O] Hotlist agenda view: how to simplify its expression?


From: Sebastien Vauban
Subject: [O] Hotlist agenda view: how to simplify its expression?
Date: Fri, 09 Aug 2013 16:56:20 +0200
User-agent: Gnus/5.130006 (Ma Gnus v0.6) Emacs/24.3 (windows-nt)

Hello,

Suppose I want a convenient way to see my most important tasks, the ones
which:

- are due soon (in the next 7 days), or
- have a high priority (#A), or
- are FLAGGED.

If I don't mind having the entries mixed, this is quite simple and short:

#+begin_src emacs-lisp
  (add-to-list 'org-agenda-custom-commands
               '("H" "Hotlist"
                 tags-todo "DEADLINE<=\"<+1w>\"|PRIORITY=\"A\"|FLAGGED"
                 ((org-agenda-todo-ignore-scheduled 'future))) t)
#+end_src

Though, if I want 3 different blocks (in the above order) with *no repetition*
of entries, I need to write such a monster expression:

#+begin_src emacs-lisp
  (add-to-list 'org-agenda-custom-commands
               '("I" "Hotlist"
                 ((tags-todo "DEADLINE<=\"<+1w>\""
                             ((org-agenda-overriding-header "Due in next 7 
days")))
                  (tags-todo 
"PRIORITY=\"A\"+DEADLINE=\"\"|PRIORITY=\"A\"+DEADLINE>\"<+1w>\""
                             ((org-agenda-overriding-header "High priority")))
                  (tags-todo 
"FLAGGED+PRIORITY=\"\"+DEADLINE=\"\"|FLAGGED+PRIORITY=\"\"+DEADLINE>\"<+1w>\"|FLAGGED+PRIORITY<>\"A\"+DEADLINE=\"\"|FLAGGED+PRIORITY<>\"A\"+DEADLINE>\"<+1w>\""
                             ((org-agenda-overriding-header "Starred"))))
                 ((org-agenda-todo-ignore-scheduled 'future))) t)
#+end_src

Do you see a way to optimize it (make it shorter)?  On the problems relies in
the fact that the inverse of

    DEADLINE<="<+1w>"

is

    DEADLINE=""|DEADLINE>"<+1w>"

that is 2 tests to be done.

The same applies for the priorities: the inverse of

    PRIORITY=\"A\"

is

    PRIORITY=""|PRIORITY<>"A"

Hence, an exponential number of checks every time you want to remove
duplicated entries (which would have been displayed in the previous block):
you double the number of subexpressions in the next block...

Any better idea?

Best regards,
  Seb

-- 
Sebastien Vauban




reply via email to

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