diff --git a/conf.el b/conf.el index ff62049..3b86675 100644 --- a/conf.el +++ b/conf.el @@ -317,34 +317,6 @@ (setq org-agenda-dim-blocked-tasks nil) (setq org-agenda-compact-blocks t) -(setq org-agenda-tags-todo-honor-ignore-options t) -(setq org-agenda-custom-commands - `(("t" - "Task view" - ((agenda "" nil) - ,(macroexpand '(nd/agenda-base-task-command "Next Project" 'nd/skip-non-next-project-tasks)) - ,(macroexpand '(nd/agenda-base-task-command "Waiting Project" 'nd/skip-non-waiting-project-tasks)) - ,(macroexpand '(nd/agenda-base-task-command "Atomic" 'nd/skip-non-atomic-tasks)) - ,(macroexpand '(nd/agenda-base-task-command "Held Project" 'nd/skip-non-held-project-tasks)))) - ("o" - "Project Overview" - (,(macroexpand '(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Stuck" 10)) - ,(macroexpand '(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Waiting" 30)) - ,(macroexpand '(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Active" 40)) - ,(macroexpand '(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Held" 20)))) - ("r" - "Refile and errors" - ((tags "REFILE" ((org-agenda-overriding-header "Tasks to Refile")) (org-tags-match-list-sublevels nil)) - ,(macroexpand '(nd/agenda-base-task-command "Discontinous Project" 'nd/skip-non-discontinuous-project-tasks)) - ,(macroexpand '(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Unmarked Completed" 0)) - ,(macroexpand '(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/" "Invalid" 50)))) - ("a" - "Archive" - ((tags "-REFILE/" - ((org-agenda-overriding-header "Atomic Tasks to Archive") - (org-agenda-skip-function 'nd/skip-non-archivable-atomic-tasks) - (org-tags-match-list-sublevels nil))))))) - (defvar nd/agenda-limit-project-toplevel t "used to filter projects by all levels or top-level only") @@ -355,7 +327,7 @@ (org-agenda-redo)) (message "Showing %s project view in agenda" (if nd/agenda-limit-project-toplevel "toplevel" "complete"))) -(defmacro nd/agenda-base-task-command (keyword skip-fun) +(defun nd/agenda-base-task-command (keyword skip-fun) "shorter syntax to define task agenda commands" `(tags-todo "-NA-REFILE/!" @@ -364,7 +336,7 @@ (org-agenda-todo-ignore-with-date 'all) (org-agenda-sorting-strategy '(category-keep))))) -(defmacro nd/agenda-base-project-command (match keyword statuscode) +(defun nd/agenda-base-project-command (match keyword statuscode) "shorter syntax to define project agenda commands" `(tags ,match @@ -627,6 +599,34 @@ Using this scheme, we simply compare the magnitude of the statuscodes" ;; t if children match the statuscode we ask (if (= statuscode child-statuscode) keyword)))))))) +(setq org-agenda-tags-todo-honor-ignore-options t) +(setq org-agenda-custom-commands + `(("t" + "Task view" + ((agenda "" nil) + ,(nd/agenda-base-task-command "Next Project" ''nd/skip-non-next-project-tasks) + ,(nd/agenda-base-task-command "Waiting Project" ''nd/skip-non-waiting-project-tasks) + ,(nd/agenda-base-task-command "Atomic" ''nd/skip-non-atomic-tasks) + ,(nd/agenda-base-task-command "Held Project" ''nd/skip-non-held-project-tasks))) + ("o" + "Project Overview" + (,(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Stuck" 10) + ,(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Waiting" 30) + ,(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Active" 40) + ,(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Held" 20))) + ("r" + "Refile and errors" + ((tags "REFILE" ((org-agenda-overriding-header "Tasks to Refile")) (org-tags-match-list-sublevels nil)) + ,(nd/agenda-base-task-command "Discontinous Project" ''nd/skip-non-discontinuous-project-tasks) + ,(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Unmarked Completed" 0) + ,(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/" "Invalid" 50))) + ("A" + "Archive" + ((tags "-NA-REFILE/" + ((org-agenda-overriding-header "Atomic Tasks to Archive") + (org-agenda-skip-function 'nd/skip-non-archivable-atomic-tasks) + (org-tags-match-list-sublevels nil))))))) + (evil-define-key 'motion org-agenda-mode-map "T" 'nd/toggle-project-toplevel-display) (setq org-agenda-span 'day) diff --git a/conf.org b/conf.org index e6b4ea6..9b1b4d0 100644 --- a/conf.org +++ b/conf.org @@ -480,37 +480,6 @@ I use tags for filtering in the agenda view to narrow down tasks by project/cont (setq org-agenda-dim-blocked-tasks nil) (setq org-agenda-compact-blocks t) #+END_SRC -*** custom commands -#+BEGIN_SRC emacs-lisp - (setq org-agenda-tags-todo-honor-ignore-options t) - (setq org-agenda-custom-commands - `(("t" - "Task view" - ((agenda "" nil) - ,(macroexpand '(nd/agenda-base-task-command "Next Project" 'nd/skip-non-next-project-tasks)) - ,(macroexpand '(nd/agenda-base-task-command "Waiting Project" 'nd/skip-non-waiting-project-tasks)) - ,(macroexpand '(nd/agenda-base-task-command "Atomic" 'nd/skip-non-atomic-tasks)) - ,(macroexpand '(nd/agenda-base-task-command "Held Project" 'nd/skip-non-held-project-tasks)))) - ("o" - "Project Overview" - (,(macroexpand '(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Stuck" 10)) - ,(macroexpand '(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Waiting" 30)) - ,(macroexpand '(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Active" 40)) - ,(macroexpand '(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Held" 20)))) - ("r" - "Refile and errors" - ((tags "REFILE" ((org-agenda-overriding-header "Tasks to Refile")) (org-tags-match-list-sublevels nil)) - ,(macroexpand '(nd/agenda-base-task-command "Discontinous Project" 'nd/skip-non-discontinuous-project-tasks)) - ,(macroexpand '(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Unmarked Completed" 0)) - ,(macroexpand '(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/" "Invalid" 50)))) - ("a" - "Archive" - ((tags "-NA-REFILE/" - ((org-agenda-overriding-header "Atomic Tasks to Archive") - (org-agenda-skip-function 'nd/skip-non-archivable-atomic-tasks) - (org-tags-match-list-sublevels nil))))))) - -#+END_SRC *** interactive view functions #+BEGIN_SRC emacs-lisp (defvar nd/agenda-limit-project-toplevel t @@ -523,7 +492,7 @@ I use tags for filtering in the agenda view to narrow down tasks by project/cont (org-agenda-redo)) (message "Showing %s project view in agenda" (if nd/agenda-limit-project-toplevel "toplevel" "complete"))) - (defmacro nd/agenda-base-task-command (keyword skip-fun) + (defun nd/agenda-base-task-command (keyword skip-fun) "shorter syntax to define task agenda commands" `(tags-todo "-NA-REFILE/!" @@ -532,7 +501,7 @@ I use tags for filtering in the agenda view to narrow down tasks by project/cont (org-agenda-todo-ignore-with-date 'all) (org-agenda-sorting-strategy '(category-keep))))) - (defmacro nd/agenda-base-project-command (match keyword statuscode) + (defun nd/agenda-base-project-command (match keyword statuscode) "shorter syntax to define project agenda commands" `(tags ,match @@ -803,6 +772,37 @@ These are the building blocks for skip functions. ;; t if children match the statuscode we ask (if (= statuscode child-statuscode) keyword)))))))) #+END_SRC +*** custom commands +#+BEGIN_SRC emacs-lisp + (setq org-agenda-tags-todo-honor-ignore-options t) + (setq org-agenda-custom-commands + `(("t" + "Task view" + ((agenda "" nil) + ,(nd/agenda-base-task-command "Next Project" ''nd/skip-non-next-project-tasks) + ,(nd/agenda-base-task-command "Waiting Project" ''nd/skip-non-waiting-project-tasks) + ,(nd/agenda-base-task-command "Atomic" ''nd/skip-non-atomic-tasks) + ,(nd/agenda-base-task-command "Held Project" ''nd/skip-non-held-project-tasks))) + ("o" + "Project Overview" + (,(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Stuck" 10) + ,(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Waiting" 30) + ,(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Active" 40) + ,(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Held" 20))) + ("r" + "Refile and errors" + ((tags "REFILE" ((org-agenda-overriding-header "Tasks to Refile")) (org-tags-match-list-sublevels nil)) + ,(nd/agenda-base-task-command "Discontinous Project" ''nd/skip-non-discontinuous-project-tasks) + ,(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/!" "Unmarked Completed" 0) + ,(nd/agenda-base-project-command "-NA-REFILE-ATOMIC/" "Invalid" 50))) + ("A" + "Archive" + ((tags "-NA-REFILE/" + ((org-agenda-overriding-header "Atomic Tasks to Archive") + (org-agenda-skip-function 'nd/skip-non-archivable-atomic-tasks) + (org-tags-match-list-sublevels nil))))))) + +#+END_SRC *** keymap #+BEGIN_SRC emacs-lisp (evil-define-key 'motion org-agenda-mode-map "T" 'nd/toggle-project-toplevel-display)