From 87fd6abbf2fa7308dec18b17f11431ba9cddd110 Mon Sep 17 00:00:00 2001 From: Michael Thomson Date: Tue, 22 Apr 2025 17:17:13 -0400 Subject: [PATCH] org mode update --- modules/home-manager/emacs/emacs/init.el | 76 +++++++++++++++++------- 1 file changed, 53 insertions(+), 23 deletions(-) diff --git a/modules/home-manager/emacs/emacs/init.el b/modules/home-manager/emacs/emacs/init.el index 34931f6..62fc3c3 100644 --- a/modules/home-manager/emacs/emacs/init.el +++ b/modules/home-manager/emacs/emacs/init.el @@ -175,7 +175,7 @@ (use-package gruvbox-theme :config - (load-theme 'gruvbox-dark-medium t)) ;; We need to add t to trust this package + (load-theme 'modus-vivendi t)) ;; We need to add t to trust this package (add-to-list 'default-frame-alist '(alpha-background . 90)) ;; For all new frames henceforth @@ -298,36 +298,67 @@ (use-package org :ensure nil :custom - (org-edit-src-content-indentation 4) ;; Set src block automatic indent to 4 instead of 2. - (org-todo-keywords '((sequence "TODO(t!)" "IN-PROGRESS(p!)" "CODE-REVIEW(r@/!)" "BLOCKED(b@/!)" "|" "DONE(d!)" "CANCELED(c@/!)"))) + (org-todo-keywords + (quote ((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d)") + (sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)" "MEETING")))) (org-todo-keyword-faces - '(("IN-PROGRESS" . "yellow") ("BLOCKED" . "magenta") ("CODE-REVIEW" . "blue") ("CANCELED" . "grey") ("DONE" . "green"))) + (quote (("TODO" :foreground "red" :weight bold) + ("NEXT" :foreground "blue" :weight bold) + ("DONE" :foreground "forest green" :weight bold) + ("WAITING" :foreground "orange" :weight bold) + ("HOLD" :foreground "magenta" :weight bold) + ("CANCELLED" :foreground "forest green" :weight bold) + ("MEETING" :foreground "forest green" :weight bold)))) (org-treat-insert-todo-heading-as-state-change t) (org-log-into-drawer t) (org-directory "~/RoamNotes") + (org-log-done 'time) ;; capture config (org-capture-templates - `(("i" "Inbox" entry (file "inbox.org") - ,(concat "* TODO %?\n" + `(("t" "Task" entry (file+headline "everything.org" "Inbox") + ,(concat "* TODO %? :task:\n" "Entered on %U")) - ("m" "Meeting" entry (file+headline "agenda.org" "Future") - ,(concat "* %? :meeting:\n" + ("m" "Meeting" entry (file+headline "everything.org" "Inbox") + ,(concat "* MEETING %? :meeting:\n" "<%<%Y-%m-%d %a %H:00>>")) - ("n" "Note" entry (file "notes.org") - ,(concat "* Note (%a)\n" - "Entered on %U\n" "\n" "%?")) - ("@" "Inbox [mu4e]" entry (file "inbox.org") + ("j" "Journal" entry (file+olp+datetree "everything.org" "Journal") + "* %?\n%T") + ("@" "Inbox [mu4e]" entry (file+headline "everything.org" "Inbox") ,(concat "* TODO Process \"%a\" %?\n" "Entered on %U")))) - ;; agenda config - (org-agenda-files (list "everything.org" "inbox.org" "agenda.org" "notes.org")) ;; Refile - (setq org-refile-use-outline-path 'file) - (setq org-outline-path-complete-in-steps nil) - (setq org-refile-targets (quote ((nil :maxlevel . 9) - (org-agenda-files :maxlevel . 9)))) + (org-refile-use-outline-path 'file) + (org-outline-path-complete-in-steps nil) + (org-refile-targets (quote ((nil :maxlevel . 9) + (org-agenda-files :maxlevel . 9)))) + + ;; agenda config + (org-agenda-files (list "everything.org")) + (org-agenda-custom-commands + '(("g" "Get Things Done (GTD)" + ((agenda "" + ((org-agenda-skip-function + '(org-agenda-skip-entry-if 'deadline)) + (org-deadline-warning-days 0))) + (todo "NEXT" + ((org-agenda-skip-function + '(org-agenda-skip-entry-if 'deadline)) + (org-agenda-prefix-format " %i %-12:c [%e] ") + (org-agenda-overriding-header "\nTasks\n"))) + (agenda nil + ((org-agenda-entry-types '(:deadline)) + (org-agenda-format-date "") + (org-deadline-warning-days 7) + (org-agenda-skip-function + '(org-agenda-skip-entry-if 'notregexp "\\* NEXT")) + (org-agenda-overriding-header "\nDeadlines"))) + (tags-todo "inbox" + ((org-agenda-prefix-format " %?-12t% s") + (org-agenda-overriding-header "\nInbox\n"))) + (tags "CLOSED>=\"\"" + ((org-agenda-overriding-header "\nCompleted today\n"))))))) :config (add-to-list 'org-modules 'org-habit t) :hook @@ -392,14 +423,13 @@ `(,(make-mu4e-context :name "personal" :enter-func - (lambda () (mu4e-message "Opening michael@michaelthomson.dev")) + (lambda () (mu4e-message "Opening personal")) :leave-func - (lambda () (mu4e-message "Closing michael@michaelthomson.dev")) - :match-func + (lambda () (mu4e-message "Closing personal")) + :match-func (lambda (msg) (when msg - (mu4e-message-contact-field-matches msg - :to "michael@michaelthomson.dev"))) + (string-match-p "^/personal" (mu4e-message-field msg :maildir)))) :vars '((user-mail-address . "michael@michaelthomson.dev" ) (user-full-name . "Michael Thomson") (mu4e-drafts-folder . "/personal/Drafts")