From f0497a537072930edbcfc70ff1115690114d5dd5 Mon Sep 17 00:00:00 2001 From: KemoNine Date: Sun, 28 Jul 2024 12:04:49 -0400 Subject: [PATCH] adjust automatic add of archive property to entries -- now applies to all items in a file whenever the file is saved -- tweak auto-org-id method to be less code --- org/config-org-tags.el | 17 --------- org/init.el | 82 ++++++++++++++++++++++++++---------------- 2 files changed, 52 insertions(+), 47 deletions(-) diff --git a/org/config-org-tags.el b/org/config-org-tags.el index 110db83..2782765 100644 --- a/org/config-org-tags.el +++ b/org/config-org-tags.el @@ -10,23 +10,6 @@ '(("TODO" . "turquoise") ("READY" . "yellow") ("WIP" . "magenta") ("COMPLETE" . "green") ("CANCELED" . "orange")) ) -; mangle the 'ARCHIVE' property of todo's so they archive off to a year/month.org file when complete -(defun my/org-set-archive-prop-for-todo () - (interactive) - (org-set-property "ARCHIVE" (concat - "~/org/Attic/org-mode/%s/" - (format-time-string "%Y" (current-time)) - "/" - (format-time-string "%m" (current-time)) - ".archive.org::datetree/" - ) -)) - -; hooks to auto manage todo 'ARCHIVE' property -(add-hook 'org-after-todo-state-change-hook 'my/org-set-archive-prop-for-todo) -; auto archive complete todo items -;(add-hook 'org-mode-hook (lambda () (add-hook 'after-save-hook 'org-archive-all-done nil t))) - (setq org-tags-exclude-from-inheritance (quote ("@recipe" "@budgetbytes" "@vegan" "@vegetarian" "@instapot" "@slowcooker" "@onepot" "@oven" "@baked" "@baking" "@dehydrator" "@ricecooker" diff --git a/org/init.el b/org/init.el index c37ea92..675ea20 100644 --- a/org/init.el +++ b/org/init.el @@ -127,20 +127,41 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; automatic ids for everything ; From https://web.archive.org/web/20220512120917/https://stackoverflow.com/questions/13340616/assign-ids-to-every-entry-in-org-mode +; From https://stackoverflow.com/questions/13340616/assign-ids-to-every-entry-in-org-mode ; This hunk of lisp automatically adds IDs to every header in an org file when you hit save. it usese org-id which can generated IDs of various types including timestamps. I’m using the default UUIDs (defun stackoverflow/org-add-ids-to-headlines-in-file () "cargo cult from stackoverflow to add ids" - (interactive) - (save-excursion - (goto-char (point-max)) - (while (outline-previous-heading) - (org-id-get-create))) - ) - (add-hook 'org-mode-hook - (lambda () - (add-hook 'before-save-hook 'stackoverflow/org-add-ids-to-headlines-in-file nil 'local))) + (interactive) + (org-map-entries 'org-id-get-create) +) +(add-hook 'org-mode-hook + (lambda () + (add-hook 'before-save-hook 'stackoverflow/org-add-ids-to-headlines-in-file nil 'local))) (add-hook 'org-capture-prepare-finalize-hook 'org-id-get-create) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; keep 'ARCHIVE' property up to date for entire buffer so any archives are filed in 'todays' archive +; assumes you want archive dates to be the date of the archive operation, not the last time they were 'touched' (or created) +(defun kmn/org-set-archive-prop-for-todo () + (interactive) + (save-excursion + (goto-char (point-max)) + (while (outline-previous-heading) + (org-set-property "ARCHIVE" (concat + "~/org/Attic/org-mode/%s/" + (format-time-string "%Y" (current-time)) + "/" + (format-time-string "%m" (current-time)) + ".archive.org::datetree/" + )) + )) +) + +(add-hook 'org-mode-hook + (lambda () + (add-hook 'before-save-hook 'kmn/org-set-archive-prop-for-todo nil 'local))) +(add-hook 'org-capture-prepare-finalize-hook 'kmn/org-set-archive-prop-for-todo) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ox-hugo for blog (with-eval-after-load 'ox (require 'ox-hugo)) @@ -264,25 +285,26 @@ (which-key all-the-icons revert-buffer-all centaur-tabs scratch persistent-scratch persp-mode rainbow-mode rainbow-delimiters markdown-mode focus zoom popwin dired-single diredfl doominhibitinhibit-modeline helpful helm helm-org dired-rainbow dired-rainbow-listing dired-single dash s origami modus-themes use-package))) '(safe-local-variable-values '((org-auto-expand-nodes - (("To Do") - body 1) - (("Daily / Weekly Reset") - children 2)) - (org-auto-expand-nodes - (("Daily / Weekly Reset") - body 2)) - (eval org-auto-expand) - (org-auto-expand-nodes - (("To Do") - body 1)) - (eval setq org-html-postamble nil) - (eval setq org-export-html-postamble-format nil) - (eval add-hook 'after-save-hook 'org-pandoc-export-to-latex-pdf t t) - (eval add-hook 'after-save-hook 'org-pandoc-export-to-docx t t) - (eval add-hook 'after-save-hook 'org-ascii-export-to-ascii t t) - (eval add-hook 'after-save-hook 'org-md-export-to-markdown t t) - (eval add-hook 'after-save-hook 'org-org-export-to-org t t) - (eval add-hook 'after-save-hook 'org-html-export-to-html t t) - (eval add-hook 'after-save-hook 'org-gfm-export-to-markdown t t))) + (("To Do") + body 1) + (("Daily / Weekly Reset") + children 2)) + (org-auto-expand-nodes + (("Daily / Weekly Reset") + body 2)) + (eval org-auto-expand) + (org-auto-expand-nodes + (("To Do") + body 1)) + (eval setq org-html-postamble nil) + (eval setq org-export-html-postamble-format nil) + (eval add-hook 'after-save-hook 'org-pandoc-export-to-latex-pdf t t) + (eval add-hook 'after-save-hook 'org-pandoc-export-to-docx t t) + (eval add-hook 'after-save-hook 'org-ascii-export-to-ascii t t) + (eval add-hook 'after-save-hook 'org-md-export-to-markdown t t) + (eval add-hook 'after-save-hook 'org-org-export-to-org t t) + (eval add-hook 'after-save-hook 'org-html-export-to-html t t) + (eval add-hook 'after-save-hook 'org-gfm-export-to-markdown t t))) '(temp-buffer-resize-mode t) - '(zoom-ignored-major-modes '(dired-mode))) + '(zoom-ignored-major-modes '(dired-mode)) + '(zoom-size 'kmn-zoom-size-callback))