diff --git a/users/crumb/programs/emacs/modules/syd-org.el b/users/crumb/programs/emacs/modules/syd-org.el index a7b087f..55c2b3c 100755 --- a/users/crumb/programs/emacs/modules/syd-org.el +++ b/users/crumb/programs/emacs/modules/syd-org.el @@ -214,6 +214,45 @@ See https://lists.gnu.org/archive/html/emacs-orgmode/2019-07/msg00081.html." ;; Larger LaTeX previews. (plist-put org-format-latex-options :scale 1.4)) +(defun syd-org-init-agenda-h () + (setq + ;; The lengths of these leaders take account for our added + ;; `syd-org--agenda-repeater'. + org-agenda-scheduled-leaders '("Sched" "S.%2dx") + org-agenda-deadline-leaders '("Deadl" "In%2dd" "D.%2dx") + org-agenda-timerange-leaders '("" ; Range within a single day. + "%2d/%2d") ; Range spanning many days. + ;; Hide "upcoming deadlines" until the scheduled date. + org-agenda-skip-deadline-prewarning-if-scheduled 'pre-scheduled + ;; Hide completed tasks. + org-agenda-skip-scheduled-if-done t) + + ;; Show the repeater (the repeat interval, e.g. +1d) in repeating agenda + ;; entries. + (defun syd-org--agenda-repeater () + (if (org-before-first-heading-p) + "-------" ; fill the time grid + (format "%5s: " (or (org-get-repeat) "")))) + + ;; Add `syd-org--agenda-repeater' to the agenda prefix. + (setcdr (assoc 'agenda org-agenda-prefix-format) + " %i %-12:c%?-12t%s%(syd-org--agenda-repeater)") + + (setq org-agenda-custom-commands + '(("k" "My agenda for today" + ((agenda + "" + ((org-agenda-span 1) + (org-deadline-warning-days 0))) + (agenda + "" + ((org-agenda-span 7) + (org-agenda-start-day "+1d") + (org-deadline-warning-days 0) + (org-agenda-time-grid nil) + (org-agenda-entry-types '(:deadline)) + (org-agenda-overriding-header "Upcoming deadlines")))))))) + (use-package org :defer-incrementally calendar find-func format-spec org-macs org-compat org-faces org-entities @@ -310,9 +349,11 @@ See https://lists.gnu.org/archive/html/emacs-orgmode/2019-07/msg00081.html." ;; ol-rmail ;; ol-eww )) - (add-hook 'org-load-hook - #'syd-org-init-popup-rules-h - #'syd-org-init-appearance-h) + (syd-add-hook 'org-load-hook + #'syd-org-init-popup-rules-h + #'syd-org-init-appearance-h) + (with-eval-after-load 'org-agenda + (syd-org-init-agenda-h)) :config (require 'syd-prose) (syd-add-hook 'org-mode-hook