;; --- CUSTOM DEFINITIONS AND FUNCTIONS --- (setq ;; list of TODO statuses that are actionable bab/org-todos-actionable '("TODO" "STARTED") ) (defun bab/org-get-todo (entry) (org-entry-get (get-text-property 0 'org-marker entry) "TODO" nil)) (defun bab/org-todo-actionable-p (todo) (if (member todo bab/org-todos-actionable) t nil)) (defun bab/org-entry-actionable-p (entry) (bab/org-todo-actionable-p (bab/org-get-todo entry))) (defun bab/org-cmp-actionable (a b) (if (bab/org-entry-actionable-p a) nil t)) (defun bab/org-agenda () "My own custom org agenda" (interactive) (org-ql-search (org-agenda-files) '(and (todo) (not (done)) ;; maybe allow entries that were completed today? (not (org-entry-blocked-p)) (or (deadline auto) ;; deadline near enough to care about (not (deadline)) ;; or no deadline at all (scheduled) (ts-active :on today))) :title "My Agenda" :sort '(priority deadline) :super-groups '((:name "Scheduled Later" :scheduled future :order 8) (:name "Overdue" :deadline past) (:name "Today" :deadline today :scheduled past :scheduled today) (:name "Some Day" :deadline nil :order 9) (:name "Waiting" :pred (lambda (entry) (not (bab/org-entry-actionable-p entry))) :order 8) (:auto-property "TYPE") (:name "Upcoming" :anything t) ))) (defun bab/org-agenda-test () "My own custom org agenda" (interactive) (org-ql-search (org-agenda-files) '(and (not (done)) ;; maybe allow entries that were completed today? (not (org-entry-blocked-p)) (or (deadline auto) ;; deadline near enough to care about (not (deadline)) ;; or no deadline at all (scheduled :to today) (ts-active :on today))) :title "My Agenda - TEST" :sort '(priority deadline) :super-groups '((:name "FIRST" :deadline past :deadline today)))) (setq org-agenda-custom-commands '(("w" "Work Agenda" ((agenda "" ((org-agenda-span 1) (org-agenda-sorting-strategy '(time-up scheduled-down priority-down deadline-up)) (org-super-agenda-groups '((:name "Waiting" :todo "WAIT" :order 9) (:anything t))))) (alltodo "" ((org-agenda-overriding-header "") (org-agenda-skip-function '(org-agenda-skip-if nil '(scheduled deadline))) (org-super-agenda-groups '((:todo "TLG") (:name "Some day" :anything t)))))) ))) ;; --- CONFIGURATION --- (define-key global-map "\C-cc" 'org-capture) (setq ;; Use priorities A-E, default priority is C org-highest-priority ?A org-lowest-priority ?E org-default-priority ?C ;; TODO states and sequences org-todo-keywords '((sequence "TODO(t)" "STARTED(s)" "WAIT(w)" "|" "DONE(d)") (sequence "|" "CANCELED(x)")) org-todo-keyword-faces '(("WAIT" . (:foreground "DodgerBlue1")) ("STARTED" . (:foreground "orchid1")) ("CANCELED" . (:foreground "snow4"))) ;; Blank capture templates, so local config can add to it org-capture-templates () ;; Agenda org-agenda-files '("~/org/agenda") org-agenda-overriding-columns-format "%1PRIORITY %DEADLINE %TODO %CLOCKSUM %80ITEM" org-agenda-dim-blocked-tasks 'invisible org-agenda-span 7 org-agenda-show-all-dates t org-agenda-skip-deadline-if-done t org-agenda-skip-deadline-prewarning-if-scheduled t org-agenda-skip-scheduled-if-done t org-agenda-start-on-weekday nil ;; Misc configuration org-deadline-warning-days 7 org-default-notes-file "~/org/notes" org-enforce-todo-dependencies t org-fast-tag-selection-single-key (quote expert) org-return-follows-link t org-reverse-note-order t org-use-property-inheritance t )