diff --git a/README.org b/README.org index b8157c6..e30949a 100755 --- a/README.org +++ b/README.org @@ -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 diff --git a/users/crumb/programs/emacs/modules/syd-eshell.el b/users/crumb/programs/emacs/modules/syd-eshell.el index b892961..a105fa2 100644 --- a/users/crumb/programs/emacs/modules/syd-eshell.el +++ b/users/crumb/programs/emacs/modules/syd-eshell.el @@ -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) diff --git a/users/crumb/programs/emacs/modules/syd-org.el b/users/crumb/programs/emacs/modules/syd-org.el index 0959d43..1814517 100755 --- a/users/crumb/programs/emacs/modules/syd-org.el +++ b/users/crumb/programs/emacs/modules/syd-org.el @@ -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")) @@ -190,7 +252,7 @@ See https://lists.gnu.org/archive/html/emacs-orgmode/2019-07/msg00081.html." "|" "DONE(d)" ; Task successfully completed "KILL(k)"))) ; Task was cancelled, aborted, or is no longer - ; applicable + ; applicable (org-todo-keyword-faces '(("[-]" . syd-org-todo-active) ("STRT" . syd-org-todo-active) @@ -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