Overhaul agenda view
This commit is contained in:
parent
008bf1bc64
commit
059e4a51ed
80
config.org
80
config.org
|
@ -2530,23 +2530,89 @@ it down to a single day. I also like the week to start on Monday.
|
||||||
(after! org
|
(after! org
|
||||||
(setq org-agenda-span 'day
|
(setq org-agenda-span 'day
|
||||||
org-agenda-start-day nil
|
org-agenda-start-day nil
|
||||||
|
org-agenda-start-on-weekday 1 ; 1 = Monday
|
||||||
|
|
||||||
;; 1 = Monday
|
org-agenda-sorting-strategy
|
||||||
org-agenda-start-on-weekday 1))
|
'((agenda habit-down time-up urgency-down category-up)
|
||||||
|
(todo urgency-down time-up category-up)
|
||||||
|
(tags urgency-down time-up category-up)
|
||||||
|
(search category-up))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Default Agenda View
|
*** Agenda View
|
||||||
|
|
||||||
|
The Org agenda is a very nice feature, but by default it doesn't really provide
|
||||||
|
enough customization to fit my needs. I like to have nice categories to make
|
||||||
|
parsing my todos easier, so we'll use ~org-super-agenda~:
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp :tangle packages.el :noweb-ref none
|
||||||
|
(package! org-super-agenda)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package! org-super-agenda
|
||||||
|
:commands org-super-agenda-mode)
|
||||||
|
|
||||||
|
(after! org-agenda
|
||||||
|
(let ((inhibit-message t))
|
||||||
|
(org-super-agenda-mode))
|
||||||
|
|
||||||
|
;; This map causes evil bindings to not work while on super agenda headers
|
||||||
|
(setq org-super-agenda-header-map nil))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
The ~org-agenda~ dispatcher is occasionally useful, but most of the time when I
|
The ~org-agenda~ dispatcher is occasionally useful, but most of the time when I
|
||||||
want to open my agenda, it's to see my "preferred" view.
|
want to open my agenda, it's to see my "preferred" view.
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
|
(defun ~/org-roam-get-linked-nodes (node tag)
|
||||||
|
"Return the nodes that NODE links to that are tagged with TAG."
|
||||||
|
(let* ((response (org-roam-db-query [:select :distinct [dest]
|
||||||
|
:from links
|
||||||
|
:where (= source $s1)
|
||||||
|
:and (= type "id")
|
||||||
|
:group :by dest]
|
||||||
|
(org-roam-node-id node)))
|
||||||
|
(ids (mapcar #'car response)))
|
||||||
|
(--keep (let ((node (org-roam-node-from-id it)))
|
||||||
|
(when (-contains? (org-roam-node-tags node) tag)
|
||||||
|
node)) ids)))
|
||||||
|
|
||||||
|
(defun ~/org-agenda-section-by-link (prefix tag item)
|
||||||
|
"Org super-agenda function to categorize agenda entries by linked node with TAG."
|
||||||
|
(when-let* ((marker (org-super-agenda--get-marker item))
|
||||||
|
(node (org-super-agenda--when-with-marker-buffer marker
|
||||||
|
(org-roam-node-at-point)))
|
||||||
|
(link (car-safe (~/org-roam-get-linked-nodes node tag))))
|
||||||
|
(concat prefix (org-roam-node-title link))))
|
||||||
|
|
||||||
(after! org
|
(after! org
|
||||||
(setq org-agenda-custom-commands
|
(setq org-agenda-custom-commands
|
||||||
'(("n" "Agenda and all tasks"
|
'(("o" "Overview"
|
||||||
((agenda "")
|
((agenda "")
|
||||||
(tags-todo "-goal-project+DEADLINE=\"\"+SCHEDULED=\"\"+TIMESTAMP=\"\"")
|
(alltodo ""
|
||||||
(stuck ""))))
|
((org-super-agenda-groups
|
||||||
|
'((:discard (:todo "PROJ"))
|
||||||
|
(:name "Important"
|
||||||
|
:priority "A")
|
||||||
|
(:name "Assignments"
|
||||||
|
:tag "assign"
|
||||||
|
:order 1)
|
||||||
|
(:auto-map (lambda (item)
|
||||||
|
(~/org-agenda-section-by-link "Goal: " "goal" item))
|
||||||
|
:order 2)
|
||||||
|
(:auto-map (lambda (item)
|
||||||
|
(~/org-agenda-section-by-link "Area: " "area" item))
|
||||||
|
:order 3)
|
||||||
|
(:name "Notes to Intake"
|
||||||
|
:tag "notes"
|
||||||
|
:order 4)
|
||||||
|
(:name "Projects"
|
||||||
|
:and (:tag "project"
|
||||||
|
:todo ("WORK" "HOLD"))
|
||||||
|
:order 5))))))))
|
||||||
|
|
||||||
|
;; In case I ever use this
|
||||||
org-stuck-projects
|
org-stuck-projects
|
||||||
'("project/!-TODO-STRT-WAIT-DONE"
|
'("project/!-TODO-STRT-WAIT-DONE"
|
||||||
("PROJ" "NEXT" "FIN" "KILL")
|
("PROJ" "NEXT" "FIN" "KILL")
|
||||||
|
@ -2555,7 +2621,7 @@ want to open my agenda, it's to see my "preferred" view.
|
||||||
(defun ~/org-agenda (&optional arg)
|
(defun ~/org-agenda (&optional arg)
|
||||||
"Wrapper around preferred agenda view."
|
"Wrapper around preferred agenda view."
|
||||||
(interactive "P")
|
(interactive "P")
|
||||||
(org-agenda arg "n"))
|
(org-agenda arg "o"))
|
||||||
|
|
||||||
(map! :leader
|
(map! :leader
|
||||||
:desc "Org agenda"
|
:desc "Org agenda"
|
||||||
|
|
Loading…
Reference in a new issue