Compare commits

...

9 commits

Author SHA1 Message Date
Kiana Sheibani 0e393c6dc2
style: misc style edits 2024-11-14 00:56:20 -05:00
Kiana Sheibani 8dbed6bdba
fix: resolve load order issue in pass popup rule 2024-11-14 00:55:57 -05:00
Kiana Sheibani bdac52fca3
feat: add custom forge to forge-alist 2024-11-14 00:55:05 -05:00
Kiana Sheibani 2978acd30c
refactor: use convenience macro in winum config 2024-11-14 00:54:29 -05:00
Kiana Sheibani cfd5a1c458
tweak: remove lsp-mode install suggestions 2024-11-14 00:53:43 -05:00
Kiana Sheibani 283724a55b
refactor: move LSP config to mode section 2024-11-14 00:53:06 -05:00
Kiana Sheibani a330856332
tweak: turn on corfu for minibuffer completion
I don't know why I turned this off, honestly.
2024-11-14 00:48:47 -05:00
Kiana Sheibani f32b2002a6
fix: properly sort agenda entries by date
The sorting methods `time-up` and `timestamp-up` are somewhat
confusingly worded, so I didn't fully understand how they worked.
2024-11-14 00:46:52 -05:00
Kiana Sheibani 22f2515207
tweak: revert truncation ellipses to default
Doom now has support for configuring this, so I don't see any need for
doing it myself.
2024-11-14 00:45:19 -05:00
2 changed files with 57 additions and 36 deletions

View file

@ -1157,14 +1157,13 @@ It wouldn't be Emacs if there wasn't an endless list of config variables to chan
) )
(setq compile-command "nix build" (setq compile-command "nix build"
truncate-string-ellipsis "…" ; Unicode!
shell-file-name (executable-find "bash") ; Use bash instead of fish for default shell shell-file-name (executable-find "bash") ; Use bash instead of fish for default shell
disabled-command-function nil ; Disabled commands are a stupid idea disabled-command-function nil ; Disabled commands are a stupid idea
password-cache-expiry nil ; Security? Never heard of it password-cache-expiry nil ; Security? Never heard of it
scroll-margin 2 ; A few extra lines on each end of the window scroll-margin 2 ; A few extra lines on each end of the window
) )
(global-subword-mode 1) (global-subword-mode +1)
#+end_src #+end_src
** Personal Information ** Personal Information
@ -1563,8 +1562,6 @@ Now that we've enabled our preferred modules and done some basic configuration,
+corfu-want-tab-prefer-expand-snippets t +corfu-want-tab-prefer-expand-snippets t
+corfu-want-tab-prefer-navigating-org-tables t +corfu-want-tab-prefer-navigating-org-tables t
+corfu-want-minibuffer-completion nil
corfu-min-width 25)) corfu-min-width 25))
#+end_src #+end_src
@ -2101,11 +2098,11 @@ Having an IDE-style tooltip pop up is nice, but ~flymake-popon~ is a bit ugly by
** Git ** Git
#+call: confpkg("Pkg: magit") #+call: confpkg("Pkg: git")
I use GPG signing for commits, which means that committing often takes longer than the single second timeout. Eight seconds seems like a reasonable amount of time to type in a password. I use GPG signing for commits, which means that committing often takes longer than the single second timeout. Eight seconds seems like a reasonable amount of time to type in a password.
Let's also increase the maximum length of commit summaries past the default of 50 characters, because that's a very restrictive limit. Let's also increase the maximum length of commit summaries past the default of 50 characters, because that's a somewhat restrictive limit.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(after! git-commit (after! git-commit
@ -2126,16 +2123,17 @@ Magit already looks great, but it could use some proper syntax highlighting!
:hook (magit-mode . magit-delta-mode)) :hook (magit-mode . magit-delta-mode))
#+end_src #+end_src
** Language Servers *** Forge
#+call: confpkg("Pkg: lsp") Forge is a convenient package for working with remote code forges like GitHub, GitLab, etc. These days, I've mostly switched over to my own [[https://git.tokinanpa.dev/][personal forge]] instead of something public like GitHub, so I'll need to let Forge know about that.
Some more convenient leader key bindings would be nice to prevent having to trawl through the =lsp-command-map=.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(map! :leader (after! forge
:desc "Select LSP code lens" (push '("git.tokinanpa.dev"
"c L" #'lsp-avy-lens) "git.tokinanpa.dev/api/v1"
"git.tokinanpa.dev"
forge-gitea-repository)
forge-alist))
#+end_src #+end_src
** Marginalia ** Marginalia
@ -2436,19 +2434,13 @@ With the basic config out of the way, we can implement popup-aware numbering by
(after! winum (after! winum
(defun ~/winum-auto-assign (windows) (defun ~/winum-auto-assign (windows)
"Assign indices to windows, handling popup windows separately." "Assign indices to windows, handling popup windows separately."
(let ((index 1) (popup-index 1)) (let ((index 1) (popup-index '(popup . 1)))
(dolist (w windows) (dolist (w windows)
(if (+popup-window-p w) (if (+popup-window-p w)
(progn (winum--assign-unique
(while (member (cons 'popup popup-index) w popup-index t
winum--assigned-indices) (cons 'popup-index (1+ (cdr popup-index))))
(setq popup-index (1+ popup-index))) (winum--assign-unique w index t)))))
(winum--assign w (cons 'popup popup-index))
(setq popup-index (1+ popup-index)))
(while (member index winum--assigned-indices)
(setq index (1+ index)))
(winum--assign w index)
(setq index (1+ index))))))
(setq winum-auto-assign-function #'~/winum-auto-assign)) (setq winum-auto-assign-function #'~/winum-auto-assign))
#+end_src #+end_src
@ -2482,7 +2474,8 @@ If prefix ARG is given, delete the window instead of selecting it." n)
"Jump to popup window 0, or popup 10 if 0 is not assigned. "Jump to popup window 0, or popup 10 if 0 is not assigned.
If prefix ARG is given, delete the window instead of selecting it." If prefix ARG is given, delete the window instead of selecting it."
(interactive "P") (interactive "P")
(let ((n (if (winum-get-window-by-index '(popup . 0)) '(popup . 0) '(popup . 10)))) (let ((n (if (winum-get-window-by-index '(popup . 0))
'(popup . 0) '(popup . 10))))
(if arg (if arg
(winum-delete-window-by-index n) (winum-delete-window-by-index n)
(winum-select-window-by-index n)))) (winum-select-window-by-index n))))
@ -2599,9 +2592,10 @@ Calc doesn't use faces to show selections by default, which I think is rather st
#+begin_src emacs-lisp #+begin_src emacs-lisp
(after! calc (after! calc
(setq calc-window-height 13 ; Make window taller (setq calc-window-height 13 ; Make window taller
calc-angle-mode 'rad ; Default to radians calc-angle-mode 'rad ; Default to radians
calc-symbolic-mode t ; Symbolic evaluation calc-symbolic-mode t ; Symbolic evaluation
calc-kill-line-numbering nil ; Don't copy stack position numbers
)) ))
#+end_src #+end_src
@ -2714,7 +2708,8 @@ I use the standard Unix-style password management system, [[https://www.password
)) ))
;; Move to right side ;; Move to right side
(set-popup-rule! "^\\*Password-Store" :side 'right :size 0.25 :quit nil) (after! pass
(set-popup-rule! "^\\*Password-Store" :side 'right :size 0.25 :quit nil))
#+end_src #+end_src
*** Tweaks *** Tweaks
@ -2950,7 +2945,8 @@ It's sometimes nice to be able to click a link in an Org file that takes me to o
("bbZ" "\\mathbb{Z}" t "" "" "2124" "") ("bbZ" "\\mathbb{Z}" t "" "" "2124" "")
("bbQ" "\\mathbb{Q}" t "" "" "211A" "") ("bbQ" "\\mathbb{Q}" t "" "" "211A" "")
("bbR" "\\mathbb{R}" t "" "" "211D" "") ("bbR" "\\mathbb{R}" t "" "" "211D" "")
("qed" "\\square" t "" "" "25A0" "■")))) ("qed" "\\square" t "" "" "2B1C" "⬜")
("sqrt" "\\sqrt" t "" "" "221A" "√"))))
#+end_src #+end_src
*** Modern *** Modern
@ -3217,7 +3213,9 @@ If nil, then use the current time.")
(lambda (&optional time) (funcall float-time-old (or time org-todo-time)))) (lambda (&optional time) (funcall float-time-old (or time org-todo-time))))
(time-subtract-old (symbol-function #'time-subtract)) (time-subtract-old (symbol-function #'time-subtract))
((symbol-function #'time-subtract) ((symbol-function #'time-subtract)
(lambda (a b) (funcall time-subtract-old (or a org-todo-time) (or b org-todo-time)))) (lambda (a b) (funcall time-subtract-old
(or a org-todo-time)
(or b org-todo-time))))
(decode-time-old (symbol-function #'decode-time)) (decode-time-old (symbol-function #'decode-time))
((symbol-function #'decode-time) ((symbol-function #'decode-time)
(lambda (&optional time &rest args) (lambda (&optional time &rest args)
@ -3486,7 +3484,7 @@ If on a:
When an explicit category is not specified, Org mode typically defaults to the filename (sans extension). This ... sort of makes sense? I guess? It doesn't really, because filename conventions don't make for good agenda category names. I want my category names to be in title case, whereas a file name is typically going to be all lowercase and without spaces. This is especially bad for Org-roam, where filenames are automatically generated and way too long to be a UI element. When an explicit category is not specified, Org mode typically defaults to the filename (sans extension). This ... sort of makes sense? I guess? It doesn't really, because filename conventions don't make for good agenda category names. I want my category names to be in title case, whereas a file name is typically going to be all lowercase and without spaces. This is especially bad for Org-roam, where filenames are automatically generated and way too long to be a UI element.
To fix this issue, it's thankfully rather simple to patch Org-mode's category system. The following code sets things up so that the file's =#+title= metadata is used as the default category, falling back on the default behavior if a title is not given. To fix this issue, it's thankfully rather simple to patch Org-mode's metadata system. The following code sets things up so that the file's =#+title= metadata is used as the default category, falling back on the default behavior if a title is not given.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(defadvice! ~/org-default-category (old-fn) (defadvice! ~/org-default-category (old-fn)
@ -3757,9 +3755,9 @@ A full week-long agenda is usually too cluttered for me to read, so I'll narrow
org-deadline-warning-days 7 org-deadline-warning-days 7
org-agenda-sorting-strategy org-agenda-sorting-strategy
'((agenda time-up habit-down priority-down category-up) '((agenda time-up habit-down timestamp-up priority-down category-up)
(todo habit-down priority-down time-up category-up) (todo habit-down priority-down category-up)
(tags habit-down priority-down time-up category-up) (tags habit-down priority-down category-up)
(search category-up)) (search category-up))
;; Agenda files ;; Agenda files
@ -4263,6 +4261,29 @@ The =lsp-java= package provides LSP support using the standard Java language ser
"-data" (f-join root "java-workspace")))) "-data" (f-join root "java-workspace"))))
#+end_src #+end_src
** Language Servers
#+call: confpkg("Mode: LSP")
The emacs package =lsp-mode= is the package of choice for general LSP integration in Emacs. The Doom Emacs module =:tools lsp= handles most of the basic configuration for it, but there's one minor annoyance it doesn't cover: when a server isn't found for a particular language, =lsp-mode= tries to install the server itself to a local directory, which is a completely useless space-filler for my purposes since that I use NixOS.
There is luckily a configuration variable to disable this suggestion:
#+begin_src emacs-lisp
(after! lsp-mode
(setq lsp-enable-suggest-server-download nil))
#+end_src
*** Bindings
Some more convenient leader key bindings would be nice to prevent having to trawl through the =lsp-command-map=.
#+begin_src emacs-lisp
(map! :leader
:desc "Select LSP code lens"
"c L" #'lsp-avy-lens)
#+end_src
** Yuck ** Yuck
#+call: confpkg("Mode: Yuck") #+call: confpkg("Mode: Yuck")

@ -1 +1 @@
Subproject commit aca0f74f3a442b1b1a6f4315303c340f7c1005b8 Subproject commit efa0aedb7c4c03fb287210cd248f5fad8d4442c9