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 **** DONE variable pitch
CLOSED: [2024-11-30 Sat 19:06] 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 *** make a bind for inserting hrules

View File

@@ -184,6 +184,8 @@
"C-d" #'syd-eshell-C-d) "C-d" #'syd-eshell-C-d)
(:keymaps 'eshell-mode-map (:keymaps 'eshell-mode-map
:states '(normal insert) :states '(normal insert)
"[ [" #'eshell-previous-prompt
"] ]" #'eshell-next-prompt
"C-j" #'eshell-next-matching-input-from-input "C-j" #'eshell-next-matching-input-from-input
"C-k" #'eshell-previous-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) (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. "Disable `org-mode's startup processes for temporary agenda buffers.
Prevents recentf pollution as well. However, if the user tries to visit one of 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 "I" #'org-id-get-create
"k" #'org-babel-remove-result "k" #'org-babel-remove-result
"l" `("Links" . ,syd-org-mode-links-map) "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 (use-package org
:defer-incrementally :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)))) "")) '((t (:inherit (bold error org-todo)))) ""))
:custom ((org-startup-folded 'content) :custom ((org-startup-folded 'content)
(org-directory "~/org") (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! ;; Stay out of my config dir!
(org-id-locations-file (file-name-concat syd-cache-dir (org-id-locations-file (file-name-concat syd-cache-dir
"org-id-locations")) "org-id-locations"))
@@ -212,6 +274,8 @@ See https://lists.gnu.org/archive/html/emacs-orgmode/2019-07/msg00081.html."
;; ol-rmail ;; ol-rmail
;; ol-eww ;; ol-eww
)) ))
(syd-add-hook 'org-load-hook
#'syd-org-init-popup-rules-h)
:config :config
(syd-add-hook 'org-mode-hook (syd-add-hook 'org-mode-hook
#'org-indent-mode #'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 :prefix-map 'syd-leader-notes-roam-map
"f" #'org-roam-node-find) "f" #'org-roam-node-find)
(general-def
:keymaps 'syd-leader-open-map
"A" #'org-agenda)
(defun syd-org--init-roam-keybinds () (defun syd-org--init-roam-keybinds ()
(general-def (general-def
:prefix-map 'syd-org-roam-mode-map) :prefix-map 'syd-org-roam-mode-map)
@@ -280,18 +348,23 @@ In case of failure, fail gracefully."
(use-package evil-org (use-package evil-org
:hook ((org-mode . evil-org-mode) :hook ((org-mode . evil-org-mode)
(org-capture-mode . evil-insert-state)) (org-capture-mode . evil-insert-state))
:straight (:type git :host github :repo "doomelpa/evil-org-mode")
:init :init
(defvar evil-org-retain-visual-state-on-shift t) (defvar evil-org-retain-visual-state-on-shift t)
(defvar evil-org-special-o/O '(table-row)) (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 (use-package evil-org-agenda
;; :hook (org-agenda-mode . evil-org-agenda-mode) :hook (org-agenda-mode . evil-org-agenda-mode)
;; :config :straight nil
;; (evil-org-agenda-set-keys) :config
;; ;; Stay away from my leader key! (evil-org-agenda-set-keys)
;; (evil-define-key* 'motion evil-org-agenda-mode-map ;; Stay away from my leader key!
;; (kbd syd-leader-key) nil)) (evil-define-key* 'motion evil-org-agenda-mode-map
(kbd syd-leader-key) nil))
(use-package hide-mode-line (use-package hide-mode-line
:hook (org-mode . hide-mode-line-mode)) :hook (org-mode . hide-mode-line-mode))
@@ -303,9 +376,11 @@ In case of failure, fail gracefully."
(?+ . ?➤) (?+ . ?➤)
(?* . ?⋆)))) (?* . ?⋆))))
:config :config
;; Stars should use fixed-pitch font to align w/ `org-indent'.
(custom-theme-set-faces (custom-theme-set-faces
'user '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) (provide 'syd-org)
;;; syd-org.el ends here ;;; syd-org.el ends here