Re: [O] Hotlist agenda view: how to simplify its expression?
Hello Jonathan, Jonathan Leech-Pepin wrote: On Aug 9, 2013 10:57 AM, Sebastien Vauban sva-n...@mygooglest.com wrote: 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 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)? Could you use (org-agenda-skip-regexp ...) combined with (org-agenda-skip-function (org-agenda-skip-entry-when-regexp-matches)) Just change the ... in the above to the deadline/priority you want to exclude in the block. I can do it for checking for the PRIORITY cookie (#A), but I can't transform (the inverse of) DEADLINE=+1w into a regexp... Though, here is already a nicer version of the above command: --8---cut here---start-8--- (add-to-list 'org-agenda-custom-commands '(dh Hotlist ;; tags-todo DEADLINE=\+1w\|PRIORITY=\A\|FLAGGED ((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+DEADLINE=\\|FLAGGED+DEADLINE\+1w\ ((org-agenda-overriding-header Starred) (org-agenda-skip-regexp \\[#A\\]) (org-agenda-skip-function '(org-agenda-skip-entry-when-regexp-matches) ((org-agenda-todo-ignore-scheduled 'future))) t) --8---cut here---end---8--- Thanks! Best regards, Seb -- Sebastien Vauban
[O] Hotlist agenda view: how to simplify its expression?
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=|PRIORITYA 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
Re: [O] Hotlist agenda view: how to simplify its expression?
Hello, On Aug 9, 2013 10:57 AM, Sebastien Vauban sva-n...@mygooglest.com wrote: 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=|PRIORITYA 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... Could you use (org-agenda-skip-regexp ...) combined with (org-agenda-skip-function (org-agenda-skip-entry-when-regexp-matches)) Just change the ... in the above to the deadline/priority you want to exclude in the block. Sorry if this is at all unclear, sending from my phone so hard to write out the code blocks. Regards, Jon Any better idea? Best regards, Seb -- Sebastien Vauban