diff options
-rw-r--r-- | config.org | 191 |
1 files changed, 126 insertions, 65 deletions
diff --git a/config.org b/config.org index bfa7490..c4d7afd 100644 --- a/config.org +++ b/config.org | |||
@@ -301,60 +301,51 @@ Except. Using =setq= is actually /not/ recommended any more, because =customize | |||
301 | 301 | ||
302 | Protesilaos Stavrou's /excellent/ theme pair. At some point I'll probably write my own that's really minimal and does some funky stuff with faces, but until then, these really are the best I've used. | 302 | Protesilaos Stavrou's /excellent/ theme pair. At some point I'll probably write my own that's really minimal and does some funky stuff with faces, but until then, these really are the best I've used. |
303 | 303 | ||
304 | The big ~dolist~ form is from [[https://protesilaos.com/modus-themes/#h:a897b302-8e10-4a26-beab-3caaee1e1193][his documentation]]; it basically allows me to configure both themes before loading them. I've tweaked his code a little to use =use-package=. | 304 | He's recently updated the themes to 1.0.0, with a refactor and betterment; my config here reflects that change. |
305 | 305 | ||
306 | #+begin_src emacs-lisp | 306 | #+begin_src emacs-lisp |
307 | (defmacro modus-themes-format-sexp (sexp &rest objects) | 307 | (use-package modus-themes |
308 | `(eval (read (format ,(format "%S" sexp) ,@objects)))) | 308 | :straight (modus-themes |
309 | 309 | :host gitlab | |
310 | (dolist (theme '("operandi" "vivendi")) | 310 | :repo "protesilaos/modus-themes" |
311 | (modus-themes-format-sexp | 311 | :branch "main") |
312 | (use-package modus-%1$s-theme | ||
313 | :custom | ||
314 | (modus-%1$s-theme-slanted-constructs t) | ||
315 | (modus-%1$s-theme-bold-constructs t) | ||
316 | (modus-%1$s-theme-fringes nil) | ||
317 | (modus-%1$s-theme-mode-line '3d) | ||
318 | (modus-%1$s-theme-syntax 'yellow-comments) | ||
319 | (modus-%1$s-theme-intense-hl-line nil) | ||
320 | (modus-%1$s-theme-intense-paren-match t) | ||
321 | (modus-%1$s-theme-links nil) | ||
322 | (modus-%1$s-theme-no-mixed-fonts nil) | ||
323 | (modus-%1$s-theme-prompts nil) | ||
324 | (modus-%1$s-theme-completions nil) | ||
325 | (modus-%1$s-theme-diffs nil) | ||
326 | (modus-%1$s-theme-org-blocks 'grayscale) | ||
327 | (modus-%1$s-theme-headings | ||
328 | '((1 . section) | ||
329 | (2 . line) | ||
330 | (t . rainbow-line))) | ||
331 | (modus-%1$s-theme-variable-pitch-headings t) | ||
332 | (modus-%1$s-theme-scale-headings t) | ||
333 | (modus-%1$s-theme-scale-1 1.1) | ||
334 | (modus-%1$s-theme-scale-2 1.15) | ||
335 | (modus-%1$s-theme-scale-3 1.21) | ||
336 | (modus-%1$s-theme-scale-4 1.27) | ||
337 | (modus-%1$s-theme-scale-5 1.33) | ||
338 | :custom-face | ||
339 | (font-lock-comment-face | ||
340 | ((t (:inherit (custom-comment italic variable-pitch)))))) | ||
341 | theme)) | ||
342 | #+end_src | ||
343 | |||
344 | ** Theme changer | ||
345 | |||
346 | I also want to switch themes between night and day. | ||
347 | |||
348 | #+begin_src emacs-lisp | ||
349 | (use-package theme-changer | ||
350 | :custom | 312 | :custom |
351 | (calendar-latitude 30.39) | 313 | (modus-themes-slanted-constructs t) |
352 | (calendar-longitude -91.83) | 314 | (modus-themes-bold-constructs t) |
353 | :config | 315 | (modus-themes-fringes nil) |
354 | (change-theme 'modus-operandi 'modus-vivendi)) | 316 | (modus-themes-mode-line '3d) |
317 | (modus-themes-syntax 'yellow-comments) | ||
318 | (modus-themes-intense-hl-line nil) | ||
319 | (modus-themes-paren-match 'intense-bold) | ||
320 | (modus-themes-links nil) | ||
321 | (modus-themes-no-mixed-fonts nil) | ||
322 | (modus-themes-prompts nil) | ||
323 | (modus-themes-completions nil) | ||
324 | (modus-themes-diffs nil) | ||
325 | (modus-themes-org-blocks 'grayscale) | ||
326 | (modus-themes-headings | ||
327 | '()) | ||
328 | (modus-themes-variable-pitch-headings t) | ||
329 | (modus-themes-scale-headings t) | ||
330 | (modus-themes-scale-1 1.1) | ||
331 | (modus-themes-scale-2 1.15) | ||
332 | (modus-themes-scale-3 1.21) | ||
333 | (modus-themes-scale-4 1.27) | ||
334 | (modus-themes-scale-5 1.33) | ||
335 | :custom-face | ||
336 | (font-lock-comment-face | ||
337 | ((t (:inherit (custom-comment italic variable-pitch))))) | ||
338 | :init | ||
339 | (load-theme 'modus-operandi t)) | ||
355 | #+end_src | 340 | #+end_src |
356 | 341 | ||
357 | * Simplify GUI | 342 | Due to the new =modus-themes-load-operandi= and =modus-themes-load-vivendi= funcitons, I don't need =theme-changer= any more -- but I still need to set up the themes to change at sunrise and sunset. Well, I'll do that later -- for now I'll use a key to toggle them. |
343 | |||
344 | #+begin_src emacs-lisp | ||
345 | (global-set-key (kbd "<f10>") #'modus-themes-toggle) | ||
346 | #+end_src | ||
347 | |||
348 | * GUI | ||
358 | 349 | ||
359 | ** Frame defaults | 350 | ** Frame defaults |
360 | 351 | ||
@@ -457,6 +448,14 @@ This confuration means that, by default, no minor modes are shown; if you want | |||
457 | (rm/whitelist-add "^$")) | 448 | (rm/whitelist-add "^$")) |
458 | #+end_src | 449 | #+end_src |
459 | 450 | ||
451 | *** Which-function-mode | ||
452 | |||
453 | Show the name of the current function in the modeline. Also works in Org mode to display the current header. Very cool! | ||
454 | |||
455 | #+begin_src emacs-lisp | ||
456 | (which-function-mode 1) | ||
457 | #+end_src | ||
458 | |||
460 | ** Minibuffer | 459 | ** Minibuffer |
461 | 460 | ||
462 | *** Keep cursor from going into the prompt | 461 | *** Keep cursor from going into the prompt |
@@ -487,6 +486,23 @@ I want my cursor to be a bar in focused windows, but a hollow box in non-focused | |||
487 | (cuss cursor-in-non-selected-windows 'hollow) | 486 | (cuss cursor-in-non-selected-windows 'hollow) |
488 | #+end_src | 487 | #+end_src |
489 | 488 | ||
489 | ** Buffer decorations | ||
490 | *** Show buffer boundaries | ||
491 | |||
492 | These little L-shaped graphics at the top and bottom of buffers don't do anything, but I like 'em. | ||
493 | |||
494 | #+begin_src emacs-lisp | ||
495 | (cuss indicate-buffer-boundaries | ||
496 | '((top . right) | ||
497 | (bottom . right) | ||
498 | (t . nil))) | ||
499 | #+end_src | ||
500 | |||
501 | *** Indicate empty lines at the end of the buffer | ||
502 | #+begin_src emacs-lisp | ||
503 | (cuss indicate-empty-lines t) | ||
504 | #+end_src | ||
505 | |||
490 | * Typesetting | 506 | * Typesetting |
491 | 507 | ||
492 | ** Fonts | 508 | ** Fonts |
@@ -511,16 +527,16 @@ See [[https://emacs.stackexchange.com/questions/12351/when-to-call-find-font-if- | |||
511 | (font-candidate | 527 | (font-candidate |
512 | "Libertinus Mono-11" | 528 | "Libertinus Mono-11" |
513 | "Linux Libertine Mono O-11" | 529 | "Linux Libertine Mono O-11" |
514 | "Go Mono-11" | 530 | "Go Mono-10" |
515 | "Consolas-11")) | 531 | "Consolas-10")) |
516 | 532 | ||
517 | (set-face-attribute 'fixed-pitch nil | 533 | (set-face-attribute 'fixed-pitch nil |
518 | :font | 534 | :font |
519 | (font-candidate | 535 | (font-candidate |
520 | "Libertinus Mono-11" | 536 | "Libertinus Mono-11" |
521 | "Linux Libertine Mono O-11" | 537 | "Linux Libertine Mono O-11" |
522 | "Go Mono-11" | 538 | "Go Mono-10" |
523 | "Consolas-11")) | 539 | "Consolas-10")) |
524 | 540 | ||
525 | (set-face-attribute 'variable-pitch nil | 541 | (set-face-attribute 'variable-pitch nil |
526 | :font | 542 | :font |
@@ -730,23 +746,20 @@ This names buffers with the same basename (e.g., =~/.config/emacs/config.org= an | |||
730 | (cuss uniquify-buffer-name-style 'forward) | 746 | (cuss uniquify-buffer-name-style 'forward) |
731 | #+end_src | 747 | #+end_src |
732 | 748 | ||
733 | *** Show buffer boundaries | 749 | *** Hippie expand |
734 | 750 | ||
735 | These little L-shaped graphics at the top and bottom of buffers don't do anything, but I like 'em. | 751 | At some point, will probably replace with [[https://company-mode.github.io/][company]]. |
736 | 752 | ||
737 | #+begin_src emacs-lisp | 753 | #+begin_src emacs-lisp |
738 | (cuss indicate-buffer-boundaries | 754 | (global-set-key (kbd "M-/") 'hippie-expand) |
739 | '((top . right) | ||
740 | (bottom . right) | ||
741 | (t . nil))) | ||
742 | #+end_src | 755 | #+end_src |
743 | 756 | ||
744 | *** Hippie expand | 757 | *** Delete the selection |
745 | 758 | ||
746 | At some point, will probably replace with [[https://company-mode.github.io/][company]]. | 759 | Like modern editors, if I have text selected and start typing – just /delete the selection/. |
747 | 760 | ||
748 | #+begin_src emacs-lisp | 761 | #+BEGIN_SRC emacs-lisp |
749 | (global-set-key (kbd "M-/") 'hippie-expand) | 762 | (delete-selection-mode 1) |
750 | #+end_src | 763 | #+end_src |
751 | 764 | ||
752 | *** "[[https://git.sr.ht/~technomancy/better-defaults/tree/master/better-defaults.el][better defaults]]" | 765 | *** "[[https://git.sr.ht/~technomancy/better-defaults/tree/master/better-defaults.el][better defaults]]" |
@@ -766,6 +779,8 @@ Most of these come from technomancy's repo, linked above, just copy-pasted into | |||
766 | 779 | ||
767 | Similarly to =ibuffer=, this is a Better default™. | 780 | Similarly to =ibuffer=, this is a Better default™. |
768 | 781 | ||
782 | Of course, could be even betterered with [[https://github.com/mrkkrp/zzz-to-char][zzz-to-char]]. | ||
783 | |||
769 | #+begin_src emacs-lisp | 784 | #+begin_src emacs-lisp |
770 | (autoload 'zap-up-to-char "misc" | 785 | (autoload 'zap-up-to-char "misc" |
771 | "Kill up to, but not including, ARGth occurrence of CHAR." t) | 786 | "Kill up to, but not including, ARGth occurrence of CHAR." t) |
@@ -1001,12 +1016,27 @@ I'm not sure if I'll /keep/ this forever, because in combination with =super-sav | |||
1001 | (add-hook 'before-save-hook #'delete-trailing-whitespace) | 1016 | (add-hook 'before-save-hook #'delete-trailing-whitespace) |
1002 | #+end_src | 1017 | #+end_src |
1003 | 1018 | ||
1019 | ** [[https://github.com/nflath/hungry-delete][hungry-delete]] | ||
1020 | |||
1021 | I find myself typing delete /way/ too much. I really like Emacs's =TAB= functionality -- it tabs to where I need and that's it -- but backspace leaves much to be desired. Enter =hungry-delete=. | ||
1022 | |||
1023 | Also of interest: [[https://github.com/hrehfeld/emacs-smart-hungry-delete][smart-hungry-delete]]. | ||
1024 | |||
1025 | #+begin_src emacs-lisp | ||
1026 | (use-package hungry-delete | ||
1027 | :custom | ||
1028 | (hungry-delete-join-reluctantly t) | ||
1029 | :config | ||
1030 | (global-hungry-delete-mode)) | ||
1031 | #+end_src | ||
1032 | |||
1004 | ** Automatically revert a file to what it is on disk | 1033 | ** Automatically revert a file to what it is on disk |
1005 | 1034 | ||
1006 | Revert a buffer to reflect what's on disk if it's changed outside of Emacs. | 1035 | Revert a buffer to reflect what's on disk if it's changed outside of Emacs. |
1007 | 1036 | ||
1008 | #+begin_src emacs-lisp | 1037 | #+begin_src emacs-lisp |
1009 | (global-auto-revert-mode 1) | 1038 | (global-auto-revert-mode 1) |
1039 | (cuss auto-revert-verbose nil) | ||
1010 | #+end_src | 1040 | #+end_src |
1011 | 1041 | ||
1012 | * Writing | 1042 | * Writing |
@@ -1284,6 +1314,18 @@ from [[https://github.com/alphapapa/unpackaged.el#org-return-dwim][unpackaged.el | |||
1284 | (bind-key "RET" #'unpackaged/org-return-dwim 'org-mode-map) | 1314 | (bind-key "RET" #'unpackaged/org-return-dwim 'org-mode-map) |
1285 | #+end_src | 1315 | #+end_src |
1286 | 1316 | ||
1317 | ** “Typographical editing” with [[https://github.com/jorgenschaefer/typoel][Typo]] | ||
1318 | |||
1319 | When I'm writing, I've been annoyed at the straight quotes. | ||
1320 | |||
1321 | #+begin_src emacs-lisp | ||
1322 | (use-package typo | ||
1323 | :custom | ||
1324 | (typo-language "English") | ||
1325 | :hook | ||
1326 | (text-mode)) | ||
1327 | #+end_src | ||
1328 | |||
1287 | * Coding | 1329 | * Coding |
1288 | 1330 | ||
1289 | The Other Thing Emacs is Good For. | 1331 | The Other Thing Emacs is Good For. |
@@ -1810,6 +1852,11 @@ I can /not/ get over how hilarious this name is 😜 | |||
1810 | (cuss url-cookie-confirmation t)) | 1852 | (cuss url-cookie-confirmation t)) |
1811 | #+end_src | 1853 | #+end_src |
1812 | 1854 | ||
1855 | ** TODO eshell | ||
1856 | |||
1857 | look at [[https://github.com/dieggsy/esh-autosuggest/][esh-autosuggest]] and [[https://www.masteringemacs.org/article/complete-guide-mastering-eshell][mastering eshell]] and stuff. idk. | ||
1858 | oh and [[https://github.com/kyagi/shell-pop-el][shell pop]] too. | ||
1859 | |||
1813 | * Appendix A: Scripts | 1860 | * Appendix A: Scripts |
1814 | 1861 | ||
1815 | ** ~emacsdc~ | 1862 | ** ~emacsdc~ |
@@ -1825,6 +1872,8 @@ Here's a wrapper script that'll start =emacs --daemon= if there isn't one, and t | |||
1825 | 1872 | ||
1826 | * Appendix B: areas for further research | 1873 | * Appendix B: areas for further research |
1827 | 1874 | ||
1875 | - [[https://github.com/caisah/emacs.dz][big list of popular emacs configs]] | ||
1876 | |||
1828 | ** TODO [[https://github.com/flexibeast/ebuku][ebuku]] (of course, I'd need [[https://github.com/jarun/buku][buku]] as well) -- bookmarks | 1877 | ** TODO [[https://github.com/flexibeast/ebuku][ebuku]] (of course, I'd need [[https://github.com/jarun/buku][buku]] as well) -- bookmarks |
1829 | ** TODO [[https://github.com/rolandwalker/ignoramus][Ignoramus]] -- this might not e necessary | 1878 | ** TODO [[https://github.com/rolandwalker/ignoramus][Ignoramus]] -- this might not e necessary |
1830 | ** TODO [[https://git.sr.ht/~iank/visible-mark][visible mark]] -- show where the marks are ... | 1879 | ** TODO [[https://git.sr.ht/~iank/visible-mark][visible mark]] -- show where the marks are ... |
@@ -1845,3 +1894,15 @@ I think it has something to do with the package =consult=, because it was /slow/ | |||
1845 | ** TODO Figure out Org-mode TODOs | 1894 | ** TODO Figure out Org-mode TODOs |
1846 | 1895 | ||
1847 | I need some standard once, and also some specific ones for this section. | 1896 | I need some standard once, and also some specific ones for this section. |
1897 | |||
1898 | ** TODO Add =C-z= as a me-mode map | ||
1899 | |||
1900 | I saw someone do this, and honestly it's a great idea. I could use it for my applications. Just have to find it ...... | ||
1901 | |||
1902 | ** TODO Really think about [[https://github.com/abo-abo/avy][avy]] again | ||
1903 | |||
1904 | It could actually be pretty useful, and it could be hooked into things like [[https://github.com/abo-abo/ace-link][ace-link]]. | ||
1905 | |||
1906 | ** TODO Test out [[https://github.com/magnars/multiple-cursors.el][multiple cursors]] | ||
1907 | |||
1908 | Allegedly it's really cool. | ||