feat(emacs): Org agenda

This commit is contained in:
Madeleine Sydney
2025-02-17 22:09:51 -07:00
parent e730599357
commit 91b94d911f
3 changed files with 90 additions and 13 deletions

View File

@@ -429,7 +429,7 @@ CLOSED: [2024-11-21 Thu 09:04]
**** DONE variable pitch
CLOSED: [2024-11-30 Sat 19:06]
*** TODO jump to prev/next hole in haskell
*** TODO jump to prev/next hole in Haskell
*** make a bind for inserting hrules

View File

@@ -184,6 +184,8 @@
"C-d" #'syd-eshell-C-d)
(:keymaps 'eshell-mode-map
:states '(normal insert)
"[ [" #'eshell-previous-prompt
"] ]" #'eshell-next-prompt
"C-j" #'eshell-next-matching-input-from-input
"C-k" #'eshell-previous-matching-input-from-input)

View File

@@ -41,7 +41,7 @@ via an indirect buffer."
(defvar recentf-exclude)
(syd-defadvice syd-org--optimize-backgrounded-agenda-buffers-a (fn file)
(syd-defadvice syd-org--optimise-backgrounded-agenda-buffers-a (fn file)
"Disable `org-mode's startup processes for temporary agenda buffers.
Prevents recentf pollution as well. However, if the user tries to visit one of
@@ -149,7 +149,35 @@ See https://lists.gnu.org/archive/html/emacs-orgmode/2019-07/msg00081.html."
"I" #'org-id-get-create
"k" #'org-babel-remove-result
"l" `("Links" . ,syd-org-mode-links-map)
"t" #'org-todo))
"t" #'org-todo)
(general-define-key
:keymaps 'org-agenda-mode-map
:states '(normal visual motion emacs insert)
:major-modes t
:prefix syd-localleader-key
:non-normal-prefix syd-alt-localleader-key
"t" #'org-agenda-todo
"r" #'org-agenda-refile
"q" #'org-agenda-set-tags
"p p" #'org-agenda-priority
"p u" #'org-agenda-priority-up
"p d" #'org-agenda-priority-down
"p k" #'org-agenda-priority-up
"p j" #'org-agenda-priority-down
"d d" #'org-agenda-deadline
"d s" #'org-agenda-schedule))
(defun syd-org-init-popup-rules-h ()
(set-popup-rules!
'(("^\\*Org Links" :slot -1 :vslot -1 :size 2 :ttl 0)
("^ ?\\*\\(?:Agenda Com\\|Calendar\\|Org Export Dispatcher\\)"
:slot -1 :vslot -1 :size #'+popup-shrink-to-fit :ttl 0)
("^\\*Org \\(?:Select\\|Attach\\|Table Edit\\)" :slot -1 :vslot -2 :ttl 0 :size 0.25)
("^\\*Edit Formulas\\*$" :slot -1 :vslot -2 :ttl 0 :size 0.25)
("^\\*Org Agenda" :ignore t)
("^\\*Org Src" :size 0.42 :quit nil :select t :autosave t :modeline t :ttl nil)
("^\\*Org-Babel")
("^\\*Capture\\*$\\|CAPTURE-.*$" :size 0.42 :quit nil :select t :autosave ignore))))
(use-package org
:defer-incrementally
@@ -171,6 +199,40 @@ See https://lists.gnu.org/archive/html/emacs-orgmode/2019-07/msg00081.html."
'((t (:inherit (bold error org-todo)))) ""))
:custom ((org-startup-folded 'content)
(org-directory "~/org")
;; Let the agenda be comfortably mutable by storing the list of
;; agenda files in a file.
(org-agenda-files "~/org/agenda-files")
(org-agenda-deadline-faces '((1.001 . error)
(1.0 . org-warning)
(0.5 . org-upcoming-deadline)
(0.0 . org-upcoming-distant-deadline)))
(org-agenda-window-setup 'current-window)
(org-agenda-skip-unavailable-files t)
;; Shift the agenda to show the previous 3 days and the next 7 days
;; for better context on your week. The past is less important than
;; the future.
(org-agenda-span 10)
(org-agenda-start-on-weekday nil)
(org-agenda-start-day "-3d")
;; Optimize `org-agenda' by inhibiting extra work while opening
;; agenda buffers in the background. They'll be "restarted" if the
;; user switches to them anyway (see
;; `syd-org-exclude-agenda-buffers-from-workspace-h')
(org-agenda-inhibit-startup t)
;; Upon finishing a task, leave a timestamp.
(org-log-done 'time)
(org-indirect-buffer-display 'current-window)
;; Force a TeX-like syntax for {sub,super}-scripts. x^{blah blah}
(org-use-sub-superscripts '{})
(org-fontify-quote-and-verse-blocks t)
(org-enforce-todo-dependencies t)
(org-image-actual-width nil)
(org-imenu-depth 6)
;; Don't right-align tags.
(org-tags-column 0)
(org-priority-faces '((?A . error)
(?B . warning)
(?C . success)))
;; Stay out of my config dir!
(org-id-locations-file (file-name-concat syd-cache-dir
"org-id-locations"))
@@ -212,6 +274,8 @@ See https://lists.gnu.org/archive/html/emacs-orgmode/2019-07/msg00081.html."
;; ol-rmail
;; ol-eww
))
(syd-add-hook 'org-load-hook
#'syd-org-init-popup-rules-h)
:config
(syd-add-hook 'org-mode-hook
#'org-indent-mode
@@ -229,6 +293,10 @@ See https://lists.gnu.org/archive/html/emacs-orgmode/2019-07/msg00081.html."
:prefix-map 'syd-leader-notes-roam-map
"f" #'org-roam-node-find)
(general-def
:keymaps 'syd-leader-open-map
"A" #'org-agenda)
(defun syd-org--init-roam-keybinds ()
(general-def
:prefix-map 'syd-org-roam-mode-map)
@@ -280,18 +348,23 @@ In case of failure, fail gracefully."
(use-package evil-org
:hook ((org-mode . evil-org-mode)
(org-capture-mode . evil-insert-state))
:straight (:type git :host github :repo "doomelpa/evil-org-mode")
:init
(defvar evil-org-retain-visual-state-on-shift t)
(defvar evil-org-special-o/O '(table-row))
(defvar evil-org-use-additional-insert t))
(defvar evil-org-use-additional-insert t)
:config
(add-hook 'evil-org-mode-hook #'evil-normalize-keymaps)
(evil-org-set-key-theme))
;; (use-package evil-org-agenda
;; :hook (org-agenda-mode . evil-org-agenda-mode)
;; :config
;; (evil-org-agenda-set-keys)
;; ;; Stay away from my leader key!
;; (evil-define-key* 'motion evil-org-agenda-mode-map
;; (kbd syd-leader-key) nil))
(use-package evil-org-agenda
:hook (org-agenda-mode . evil-org-agenda-mode)
:straight nil
:config
(evil-org-agenda-set-keys)
;; Stay away from my leader key!
(evil-define-key* 'motion evil-org-agenda-mode-map
(kbd syd-leader-key) nil))
(use-package hide-mode-line
:hook (org-mode . hide-mode-line-mode))
@@ -303,9 +376,11 @@ In case of failure, fail gracefully."
(?+ . ?➤)
(?* . ?⋆))))
:config
;; Stars should use fixed-pitch font to align w/ `org-indent'.
(custom-theme-set-faces
'user
`(org-superstar-header-bullet ((t (:font ,syd-alt-fixed-pitch-font))))))
`(org-superstar-header-bullet ((t (:font ,syd-alt-fixed-pitch-font))))
`(org-superstar-item ((t (:font ,syd-alt-fixed-pitch-font))))))
(provide 'syd-org)
;;; syd-org.el ends here