From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sebastien Vauban" Subject: Hotlist agenda view: how to simplify its expression? Date: Fri, 09 Aug 2013 16:56:20 +0200 Message-ID: <867gfu3obv.fsf@somewhere.org> Mime-Version: 1.0 Content-Type: text/plain Return-path: 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-mXXj517/zsQ@public.gmane.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org-mXXj517/zsQ@public.gmane.org To: emacs-orgmode-mXXj517/zsQ@public.gmane.org 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