From b10d23a892641850044634ef03b3b3d32cc26c2a Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Mon, 2 Sep 2024 12:18:52 -0400 Subject: [PATCH] Emacs: org: added org-super-agenda, org-superstar, and org-appear --- dot_config/emacs/lisp/init-org.el | 149 ++++++++++++++++++++++++++---- 1 file changed, 132 insertions(+), 17 deletions(-) diff --git a/dot_config/emacs/lisp/init-org.el b/dot_config/emacs/lisp/init-org.el index f46ff72..e1a1171 100644 --- a/dot_config/emacs/lisp/init-org.el +++ b/dot_config/emacs/lisp/init-org.el @@ -36,30 +36,46 @@ ("C-c c" . org-capture) ("C-c l" . org-store-link)) :config - (setopt org-agenda-files (directory-files-recursively org-directory "org$") + ;; General options TODO: Comment various options more descriptively + (setopt org-agenda-block-separator nil + org-agenda-files (directory-files-recursively org-directory "org$") org-agenda-skip-deadline-if-done t + org-agenda-skip-scheduled-if-deadline-is-shown t org-agenda-skip-scheduled-if-done t org-agenda-start-on-weekday nil - org-archive-location (concat org-directory "/archive.org::* From %s") + org-agenda-tags-column 0 + org-archive-location (concat org-directory "/archive/archive.org::* From %s") org-blank-before-new-entry '((heading . auto) (plain-list-item . auto)) org-enforce-todo-dependencies t + org-fold-catch-invisible-edits 'show-and-error + org-fontify-done-headline nil org-fontify-quote-and-verse-blocks t + org-fontify-todo-headline t + org-goto-interface 'outline-path-completion org-hide-emphasis-markers t + org-insert-heading-respect-content t org-log-done 'time - org-refile-targets '((nil :maxlevel . 2) + org-outline-path-complete-in-steps nil + org-pretty-entities t + org-refile-allow-creating-parent-nodes 'confirm + org-refile-targets '((nil :maxlevel . 3) (org-agenda-files :maxlevel . 2)) - org-refile-use-outline-path 'file + org-refile-use-outline-path nil org-return-follows-link t + org-reverse-note-order t ; Add/refile notes at the beginning of an entry org-src-preserve-indentation t - org-startup-folded 'content + org-startup-folded 'fold + org-tags-column 0 org-todo-keywords '((sequence "BLOCKED(b@/!)" "IN-PROGRESS(i@/!)" - "TODO(t)" "WAITING(i@/!)" "|" "DONE(d!)" - "WONT-DO(w@/!)")) - org-todo-keyword-faces '(("TODO" . (icon-button)) - ("IN-PROGRESS" . (tool-bar)) - ("BLOCKED" . (match)) - ("WONT-DO" . (org-done)))) + "TODO(t)" "WAITING(w@/!)" "|" "DONE(d!)" + "WONT-DO(n@/!)")) + ;; org-todo-keyword-faces '(("TODO" . (icon-button)) + ;; ("IN-PROGRESS" . (tool-bar)) + ;; ("BLOCKED" . (match)) + ;; ("WONT-DO" . (org-done))) + org-todo-repeat-to-state "TODO") + (setq org-capture-templates `( ("m" "Personal") @@ -75,7 +91,7 @@ ("mt" "Todo" entry (file+headline ,(concat org-directory "/inbox.org") "You can do it!") - "** TODO [#B] %?\n:Created: %U\nSCHEDULED: %^{SCHEDULED: }T\n " + "** TODO [#B] %?\n:Created: %U\n " :empty-lines 1) ("p" "Projects") @@ -86,7 +102,7 @@ ("pt" "Todo" entry (file+headline ,(concat org-directory "/inbox.org") "Project Tasks") - "** TODO [#B] %?\n:Created: %U\nSCHEDULED: %^{SCHEDULED: }T\n%i\n%a\nNotes: " + "** TODO [#B] %?\n:Created: %U\n%i\n%a\nNotes: " :empty-lines 1) ("w" "Work") @@ -97,17 +113,115 @@ ("wt" "Todo" entry (file+headline ,(concat org-directory "/inbox.org") "Work Tasks") - "** TODO [#B] %?\n:Created: %U\nSCHEDULED: %^{SCHEDULED: }T\n%i\n%a\nNotes: " + "** TODO [#B] %?\n:Created: %U\n%i\n%a\nNotes: " :empty-lines 1))) + + ;; Headline appearance + (custom-set-faces + '(org-level-1 ((t (:inherit outline-1 :height 1.5)))) + '(org-level-2 ((t (:inherit outline-2 :height 1.4)))) + '(org-level-3 ((t (:inherit outline-3 :height 1.3)))) + '(org-level-4 ((t (:inherit outline-4 :height 1.2)))) + '(org-level-5 ((t (:inherit outline-5 :height 1.1))))) :hook (org-mode . org-indent-mode) :init (setopt org-directory "~/Nextcloud/Documents/org") (bind-keys :prefix-map as/org-prefix-map :prefix "C-c o" - ("n" . org-priority-down) - ("p" . org-priority-up) + ("n" . org-metadown) + ("p" . org-metaup) ("f" . org-shiftmetaright) - ("b" . org-shiftmetaleft))) + ("b" . org-shiftmetaleft) + ("v" . org-tags-view) + ("C-n" . org-priority-down) + ("C-p" . org-priority-up))) + +(use-package org-appear + :config + (setopt org-appear-autoentities t + org-appear-autolinks t + org-appear-autosubmarkers t + org-appear-trigger 'on-change) + :hook (org-mode . org-appear-mode)) + +(use-package org-modern + :disabled + :config + (setopt org-modern-symbol "Hack") + :hook + (org-mode . org-modern-mode) + (org-agenda-finalize . org-modern-agenda)) + +(use-package org-super-agenda + :hook (org-agenda-mode . org-super-agenda-mode) + :init + (setq org-agenda-custom-commands + '(("u" "Super agenda" + + ((agenda "" ((org-agenda-prefix-format " %?-12t %s") + ;; (org-agenda-prefix-format " %-20:c%?-12t %s") + (org-agenda-remove-tags t) + (org-agenda-skip-function '(org-agenda-skip-entry-if + 'todo '("WONT-DO"))) + (org-agenda-span 5))) + + (alltodo "" ((org-agenda-overriding-header "") + (org-agenda-prefix-format " %?-12t %s") + (org-agenda-remove-tags t) + (org-super-agenda-groups + '((:name "Important" + :priority "A" + :order 0) + + (:name "In-Progress" + :todo "IN-PROGRESS" + :order 2) + + (:name "Blocked" + :todo "BLOCKED" + :order 3) + + (:name "Overdue" + :deadline past + :scheduled past + :order 1) + + ;; TODO: Figure out how to organize chores/personal + (:name "Chores" + :tag "chores" + :order 19) + + (:name "Personal" + :habit t + :order 17) + + (:name "Research" + :tag "research" + :order 7) + + (:name "Upcoming" + :deadline future + :scheduled future + :order 18) + + (:name "Project Backlog" + :and (:todo "TODO" :tag "project") + :order 5) + + (:name "General Backlog" + :and (:todo "TODO" :priority "B") + :order 6) + + (:name "Less Important" + :priority<= "C" + :order 20)))))))))) + +(use-package org-superstar + :config + (setopt org-indent-mode-turns-on-hiding-stars nil + org-superstar-leading-bullet ?\s + org-superstar-special-todo-items t) + :hook (org-mode . org-superstar-mode)) (use-package org-timeblock :bind @@ -116,6 +230,7 @@ :config (setopt org-timeblock-new-task-time 'pick org-timeblock-show-future-repeats 'next + org-timeblock-scale-options (cons 7 20) org-timeblock-span 3)) (provide 'init-org)