From b085f5fa2ffb697f523338a80d644b88f8ea6ad4 Mon Sep 17 00:00:00 2001 From: Thierry Pouplier Date: Tue, 11 Aug 2026 11:06:49 -0400 Subject: [PATCH] refactor: rename my-*/my- prefix to gortium/*; org-add-note for metric log --- doom/.config/doom/README.org | 46 +++++++++++++++++------------------- doom/.config/doom/config.el | 44 +++++++++++++++++----------------- 2 files changed, 44 insertions(+), 46 deletions(-) diff --git a/doom/.config/doom/README.org b/doom/.config/doom/README.org index 052d6ce..be7267b 100644 --- a/doom/.config/doom/README.org +++ b/doom/.config/doom/README.org @@ -48,14 +48,14 @@ they are implemented. (setq fancy-splash-image (expand-file-name "hermes_logo_ascii.png" doom-user-dir)) ;; 2. Define the quote function -(defun my-dashboard-quote () +(defun gortium/dashboard-quote () (insert "\n" (+dashboard--center +dashboard--width "Simplicity is the ultimate sophistication.") "\n")) ;; 3. Override the functions list using the correct variable from the docs (after! doom-dashboard (setq +dashboard-functions '(+dashboard-widget-banner - my-dashboard-quote + gortium/dashboard-quote +dashboard-widget-loaded +dashboard-widget-shortmenu +dashboard-widget-footer))) @@ -2766,7 +2766,7 @@ only injects when the project's context-tag matches current mu4e context." (rx (or (: "http" (? "s") "://" (* nonl) "youtube.com" (* nonl)) (: "http" (? "s") "://" (* nonl) "youtu.be" (* nonl)))))) -(defun my-elfeed-tube-add-to-emms () +(defun gortium/elfeed-tube-add-to-emms () "Add the currently selected Elfeed video(s) to the EMMS playlist." (interactive) (let ((entries (if (eq major-mode 'elfeed-show-mode) @@ -2782,10 +2782,10 @@ only injects when the project's context-tag matches current mu4e context." ;; Bind the function to 'e' in both elfeed views (map! :map elfeed-search-mode-map - :n "e" #'my-elfeed-tube-add-to-emms) + :n "e" #'gortium/elfeed-tube-add-to-emms) (map! :map elfeed-show-mode-map - :n "e" #'my-elfeed-tube-add-to-emms) + :n "e" #'gortium/elfeed-tube-add-to-emms) #+end_src * EAF #+begin_src emacs-lisp @@ -3384,15 +3384,13 @@ and ensure the standard property drawer exists without overwriting existing data nil 'tree))) #+end_src -#+RESULTS: -: gortium/add-ids-to-subtree ** Maintenance Engine #+begin_src emacs-lisp (after! org ;; --------------------------------------------------------- ;; 1. THE REUSABLE ENGINE (Domain Agnostic) ;; --------------------------------------------------------- - (defun my/org-metric-sync-engine (&key prop-name value-current prop-last-done prop-interval target-tag log-label) + (defun gortium/org-metric-sync-engine (&key prop-name value-current prop-last-done prop-interval target-tag log-label) "Core logic to sync parent metrics to sub-tasks and log changes. PROP-NAME: The property triggering the change (e.g., LAST_KM). VALUE-CURRENT: The new value being set. @@ -3403,7 +3401,7 @@ and ensure the standard property drawer exists without overwriting existing data (save-excursion ;; A. Log the update to the Logbook with a timestamp (when log-label - (org-add-log-setup 'note (format "%s: %s" log-label value-current) nil 'findpos)) + (org-add-note (format "%s: %s" log-label value-current))) ;; B. Narrow scope to current header and scan sub-tasks (org-narrow-to-subtree) @@ -3420,7 +3418,7 @@ and ensure the standard property drawer exists without overwriting existing data target-tag) (widen))) - (defun my/org-metric-prompt-engine (&key state tag prop-parent-metric prop-task-done label-prompt) + (defun gortium/org-metric-prompt-engine (&key state tag prop-parent-metric prop-task-done label-prompt) "Core logic to prompt for values when a task is marked DONE. STATE: The new TODO state (e.g., DONE). TAG: The tag identifying relevant tasks. @@ -3446,48 +3444,48 @@ and ensure the standard property drawer exists without overwriting existing data ;; --------------------------------------------------------- ;; 2. THE DISPATCHERS (The Switchboard) ;; --------------------------------------------------------- - (defun my/org-property-change-handler (prop value) + (defun gortium/org-property-change-handler (prop value) "Routes property changes to the correct sync parameters." (cond ;; Case: F-150 Odometer ((string= prop "LAST_KM") - (my/org-metric-sync-engine + (gortium/org-metric-sync-engine :prop-name prop :value-current value :prop-last-done "LAST_DONE_KM" - :prop-interval "INTERVAL_KM" :target-tag "SERVICE" :log-label "Odometer Update")))) + :prop-interval "INTERVAL_KM" :target-tag "SERVICE" :log-label "Odometer Update"))))) ;; Case: Equipment/Industrial Hours ;; ((string= prop "LAST_HOURS") - ;; (my/org-metric-sync-engine + ;; (gortium/org-metric-sync-engine ;; :prop-name prop :value-current value :prop-last-done "LAST_DONE_HOURS" ;; :prop-interval "INTERVAL_HOURS" :target-tag "MAINTENANCE" :log-label "Usage Hours Logged")))) -(defun my/org-todo-state-handler () +(defun gortium/org-todo-state-handler () "Safely routes DONE completions, catching any argument errors." (interactive) (condition-case err (when (string= org-state "DONE") - (my/org-metric-prompt-engine + (gortium/org-metric-prompt-engine :state "DONE" :tag "SERVICE" :prop-parent-metric "LAST_KM" :prop-task-done "LAST_DONE_KM" :label-prompt "Current Odometer")) - (error (message "Handler suppressed error: %s" (error-message-string err))))) - ) -;; (my/org-metric-prompt-engine + (error (message "Handler suppressed error: %s" (error-message-string err))))) + +;; (gortium/org-metric-prompt-engine ;; :state org-state :tag "MAINTENANCE" :prop-parent-metric "LAST_HOURS" ;; :prop-task-done "LAST_DONE_HOURS" :label-prompt "Equipment Hours")) ;; --------------------------------------------------------- ;; 3. THE HOOKS ;; --------------------------------------------------------- -(add-hook 'org-after-prop-change-hook #'my/org-property-change-handler) -(add-hook 'org-after-todo-state-change-hook #'my/org-todo-state-handler) +(add-hook 'org-after-prop-change-hook #'gortium/org-property-change-handler) +(add-hook 'org-after-todo-state-change-hook #'gortium/org-todo-state-handler) #+end_src ** Rescheduling task later #+begin_src emacs-lisp -(defun my/org-smart-advance-date () +(defun gortium/org-smart-advance-date () "Jump to next repeater occurrence or add 1 day. Suppresses all logging, notes, and custom odometer hooks." (interactive) @@ -3519,9 +3517,9 @@ Suppresses all logging, notes, and custom odometer hooks." (map! :after org (:map org-mode-map - :localleader "L" #'my/org-smart-advance-date) + :localleader "L" #'gortium/org-smart-advance-date) (:map org-agenda-mode-map - :localleader "L" #'my/org-smart-advance-date)) + :localleader "L" #'gortium/org-smart-advance-date)) #+end_src ** Open link in other frame diff --git a/doom/.config/doom/config.el b/doom/.config/doom/config.el index a6536d4..7bd63f1 100644 --- a/doom/.config/doom/config.el +++ b/doom/.config/doom/config.el @@ -4,14 +4,14 @@ (setq fancy-splash-image (expand-file-name "hermes_logo_ascii.png" doom-user-dir)) ;; 2. Define the quote function -(defun my-dashboard-quote () +(defun gortium/dashboard-quote () (insert "\n" (+dashboard--center +dashboard--width "Simplicity is the ultimate sophistication.") "\n")) ;; 3. Override the functions list using the correct variable from the docs (after! doom-dashboard (setq +dashboard-functions '(+dashboard-widget-banner - my-dashboard-quote + gortium/dashboard-quote +dashboard-widget-loaded +dashboard-widget-shortmenu +dashboard-widget-footer))) @@ -1906,7 +1906,7 @@ only injects when the project's context-tag matches current mu4e context." (rx (or (: "http" (? "s") "://" (* nonl) "youtube.com" (* nonl)) (: "http" (? "s") "://" (* nonl) "youtu.be" (* nonl)))))) -(defun my-elfeed-tube-add-to-emms () +(defun gortium/elfeed-tube-add-to-emms () "Add the currently selected Elfeed video(s) to the EMMS playlist." (interactive) (let ((entries (if (eq major-mode 'elfeed-show-mode) @@ -1922,10 +1922,10 @@ only injects when the project's context-tag matches current mu4e context." ;; Bind the function to 'e' in both elfeed views (map! :map elfeed-search-mode-map - :n "e" #'my-elfeed-tube-add-to-emms) + :n "e" #'gortium/elfeed-tube-add-to-emms) (map! :map elfeed-show-mode-map - :n "e" #'my-elfeed-tube-add-to-emms) + :n "e" #'gortium/elfeed-tube-add-to-emms) (use-package! eaf :load-path "~/.config/emacs/.local/straight/repos/emacs-application-framework" @@ -2478,7 +2478,7 @@ and ensure the standard property drawer exists without overwriting existing data ;; --------------------------------------------------------- ;; 1. THE REUSABLE ENGINE (Domain Agnostic) ;; --------------------------------------------------------- - (defun my/org-metric-sync-engine (&key prop-name value-current prop-last-done prop-interval target-tag log-label) + (defun gortium/org-metric-sync-engine (&key prop-name value-current prop-last-done prop-interval target-tag log-label) "Core logic to sync parent metrics to sub-tasks and log changes. PROP-NAME: The property triggering the change (e.g., LAST_KM). VALUE-CURRENT: The new value being set. @@ -2489,7 +2489,7 @@ and ensure the standard property drawer exists without overwriting existing data (save-excursion ;; A. Log the update to the Logbook with a timestamp (when log-label - (org-add-log-setup 'note (format "%s: %s" log-label value-current) nil 'findpos)) + (org-add-note (format "%s: %s" log-label value-current))) ;; B. Narrow scope to current header and scan sub-tasks (org-narrow-to-subtree) @@ -2506,7 +2506,7 @@ and ensure the standard property drawer exists without overwriting existing data target-tag) (widen))) - (defun my/org-metric-prompt-engine (&key state tag prop-parent-metric prop-task-done label-prompt) + (defun gortium/org-metric-prompt-engine (&key state tag prop-parent-metric prop-task-done label-prompt) "Core logic to prompt for values when a task is marked DONE. STATE: The new TODO state (e.g., DONE). TAG: The tag identifying relevant tasks. @@ -2532,45 +2532,45 @@ and ensure the standard property drawer exists without overwriting existing data ;; --------------------------------------------------------- ;; 2. THE DISPATCHERS (The Switchboard) ;; --------------------------------------------------------- - (defun my/org-property-change-handler (prop value) + (defun gortium/org-property-change-handler (prop value) "Routes property changes to the correct sync parameters." (cond ;; Case: F-150 Odometer ((string= prop "LAST_KM") - (my/org-metric-sync-engine + (gortium/org-metric-sync-engine :prop-name prop :value-current value :prop-last-done "LAST_DONE_KM" - :prop-interval "INTERVAL_KM" :target-tag "SERVICE" :log-label "Odometer Update")))) + :prop-interval "INTERVAL_KM" :target-tag "SERVICE" :log-label "Odometer Update"))))) ;; Case: Equipment/Industrial Hours ;; ((string= prop "LAST_HOURS") - ;; (my/org-metric-sync-engine + ;; (gortium/org-metric-sync-engine ;; :prop-name prop :value-current value :prop-last-done "LAST_DONE_HOURS" ;; :prop-interval "INTERVAL_HOURS" :target-tag "MAINTENANCE" :log-label "Usage Hours Logged")))) -(defun my/org-todo-state-handler () +(defun gortium/org-todo-state-handler () "Safely routes DONE completions, catching any argument errors." (interactive) (condition-case err (when (string= org-state "DONE") - (my/org-metric-prompt-engine + (gortium/org-metric-prompt-engine :state "DONE" :tag "SERVICE" :prop-parent-metric "LAST_KM" :prop-task-done "LAST_DONE_KM" :label-prompt "Current Odometer")) - (error (message "Handler suppressed error: %s" (error-message-string err))))) - ) -;; (my/org-metric-prompt-engine + (error (message "Handler suppressed error: %s" (error-message-string err))))) + +;; (gortium/org-metric-prompt-engine ;; :state org-state :tag "MAINTENANCE" :prop-parent-metric "LAST_HOURS" ;; :prop-task-done "LAST_DONE_HOURS" :label-prompt "Equipment Hours")) ;; --------------------------------------------------------- ;; 3. THE HOOKS ;; --------------------------------------------------------- -(add-hook 'org-after-prop-change-hook #'my/org-property-change-handler) -(add-hook 'org-after-todo-state-change-hook #'my/org-todo-state-handler) +(add-hook 'org-after-prop-change-hook #'gortium/org-property-change-handler) +(add-hook 'org-after-todo-state-change-hook #'gortium/org-todo-state-handler) -(defun my/org-smart-advance-date () +(defun gortium/org-smart-advance-date () "Jump to next repeater occurrence or add 1 day. Suppresses all logging, notes, and custom odometer hooks." (interactive) @@ -2602,9 +2602,9 @@ Suppresses all logging, notes, and custom odometer hooks." (map! :after org (:map org-mode-map - :localleader "L" #'my/org-smart-advance-date) + :localleader "L" #'gortium/org-smart-advance-date) (:map org-agenda-mode-map - :localleader "L" #'my/org-smart-advance-date)) + :localleader "L" #'gortium/org-smart-advance-date)) ;; Open link in another frame (defun gortium/org-open-link-in-other-frame ()