summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorCase Duckworth2021-02-25 17:53:46 -0600
committerCase Duckworth2021-02-25 17:53:46 -0600
commit0ea7241c664644302938a42810cbc8bcc15d8977 (patch)
tree6a532daf1c98f86eb64599ad89db465c205f87dd
parentUse TABs and Smart-Tabs (diff)
downloademacs-0ea7241c664644302938a42810cbc8bcc15d8977.tar.gz
emacs-0ea7241c664644302938a42810cbc8bcc15d8977.zip
W h I t E s P a C e
-rw-r--r--config.org1307
-rw-r--r--early-init.el72
-rw-r--r--init.el4
3 files changed, 704 insertions, 679 deletions
diff --git a/config.org b/config.org index f68f3e9..b35ed30 100644 --- a/config.org +++ b/config.org
@@ -8,15 +8,15 @@
8 8
9#+begin_src emacs-lisp :noweb-ref settings 9#+begin_src emacs-lisp :noweb-ref settings
10 (setq user-full-name "Case Duckworth" 10 (setq user-full-name "Case Duckworth"
11 user-mail-address "acdw@acdw.net") 11 user-mail-address "acdw@acdw.net")
12#+end_src 12#+end_src
13 13
14** Where I am 14** Where I am
15 15
16#+begin_src emacs-lisp :noweb-ref settings 16#+begin_src emacs-lisp :noweb-ref settings
17 (setq calendar-location-name "Baton Rouge, LA" 17 (setq calendar-location-name "Baton Rouge, LA"
18 calendar-latitude 30.4 18 calendar-latitude 30.4
19 calendar-longitude -91.1) 19 calendar-longitude -91.1)
20#+end_src 20#+end_src
21 21
22** Auth-sources 22** Auth-sources
@@ -46,7 +46,7 @@ of unstyled content" thing.
46 46
47#+begin_src emacs-lisp 47#+begin_src emacs-lisp
48 (add-to-list 'default-frame-alist 48 (add-to-list 'default-frame-alist
49 '(tool-bar-lines . 0)) 49 '(tool-bar-lines . 0))
50 50
51 (tool-bar-mode -1) 51 (tool-bar-mode -1)
52#+end_src 52#+end_src
@@ -55,7 +55,7 @@ of unstyled content" thing.
55 55
56#+begin_src emacs-lisp 56#+begin_src emacs-lisp
57 (add-to-list 'default-frame-alist 57 (add-to-list 'default-frame-alist
58 '(menu-bar-lines . 0)) 58 '(menu-bar-lines . 0))
59 59
60 (menu-bar-mode -1) 60 (menu-bar-mode -1)
61#+end_src 61#+end_src
@@ -64,8 +64,8 @@ of unstyled content" thing.
64 64
65#+begin_src emacs-lisp 65#+begin_src emacs-lisp
66 (add-to-list 'default-frame-alist 66 (add-to-list 'default-frame-alist
67 '(vertical-scroll-bars . nil) 67 '(vertical-scroll-bars . nil)
68 '(horizontal-scroll-bars . nil)) 68 '(horizontal-scroll-bars . nil))
69 69
70 (scroll-bar-mode -1) 70 (scroll-bar-mode -1)
71 (horizontal-scroll-bar-mode -1) 71 (horizontal-scroll-bar-mode -1)
@@ -78,21 +78,21 @@ want it to resize by pixels -- we /are/ using a GUI, after all.
78 78
79#+begin_src emacs-lisp 79#+begin_src emacs-lisp
80 (setq-default frame-inhibit-implied-resize t 80 (setq-default frame-inhibit-implied-resize t
81 frame-resize-pixelwise t) 81 frame-resize-pixelwise t)
82#+end_src 82#+end_src
83 83
84*** Frame titles 84*** Frame titles
85 85
86#+begin_src emacs-lisp :noweb-ref settings 86#+begin_src emacs-lisp :noweb-ref settings
87 (setq-default frame-title-format 87 (setq-default frame-title-format
88 '("Emacs " 88 '("Emacs "
89 mode-line-client 89 mode-line-client
90 mode-line-modified 90 mode-line-modified
91 " " 91 " "
92 (:eval (if (buffer-file-name) 92 (:eval (if (buffer-file-name)
93 (abbreviate-file-name (buffer-file-name)) 93 (abbreviate-file-name (buffer-file-name))
94 "%b")) 94 "%b"))
95 )) 95 ))
96#+end_src 96#+end_src
97 97
98*** Fringes 98*** Fringes
@@ -130,16 +130,16 @@ and have made a custom fringe bitmap.
130 (defun hook--setup-fringes-curly-arrows () 130 (defun hook--setup-fringes-curly-arrows ()
131 "Set up curly-arrow fringes." 131 "Set up curly-arrow fringes."
132 (define-fringe-bitmap 'left-curly-arrow 132 (define-fringe-bitmap 'left-curly-arrow
133 [#b11000000 133 [#b11000000
134 #b01100000 134 #b01100000
135 #b00110000 135 #b00110000
136 #b00011000]) 136 #b00011000])
137 137
138 (define-fringe-bitmap 'right-curly-arrow 138 (define-fringe-bitmap 'right-curly-arrow
139 [#b00011000 139 [#b00011000
140 #b00110000 140 #b00110000
141 #b01100000 141 #b01100000
142 #b11000000])) 142 #b11000000]))
143 143
144 (add-hook 'after-init-hook #'hook--setup-fringes-curly-arrows) 144 (add-hook 'after-init-hook #'hook--setup-fringes-curly-arrows)
145#+end_src 145#+end_src
@@ -150,16 +150,16 @@ and have made a custom fringe bitmap.
150 (defun hook--setup-fringes-arrows () 150 (defun hook--setup-fringes-arrows ()
151 "Setup arrow fringe bitmaps." 151 "Setup arrow fringe bitmaps."
152 (define-fringe-bitmap 'left-arrow 152 (define-fringe-bitmap 'left-arrow
153 [#b00000000 153 [#b00000000
154 #b01010100 154 #b01010100
155 #b01010100 155 #b01010100
156 #b00000000]) 156 #b00000000])
157 157
158 (define-fringe-bitmap 'right-arrow 158 (define-fringe-bitmap 'right-arrow
159 [#b00000000 159 [#b00000000
160 #b00101010 160 #b00101010
161 #b00101010 161 #b00101010
162 #b00000000])) 162 #b00000000]))
163 163
164 (add-hook 'after-init-hook #'hook--setup-fringes-arrows) 164 (add-hook 'after-init-hook #'hook--setup-fringes-arrows)
165#+end_src 165#+end_src
@@ -170,8 +170,8 @@ and have made a custom fringe bitmap.
170 170
171#+begin_src emacs-lisp :noweb-ref settings 171#+begin_src emacs-lisp :noweb-ref settings
172 (setq-default window-divider-default-places 'right-only ; only right 172 (setq-default window-divider-default-places 'right-only ; only right
173 window-divider-default-bottom-width 2 173 window-divider-default-bottom-width 2
174 window-divider-default-right-width 2) 174 window-divider-default-right-width 2)
175#+end_src 175#+end_src
176 176
177#+begin_src emacs-lisp :noweb-ref modes 177#+begin_src emacs-lisp :noweb-ref modes
@@ -185,7 +185,7 @@ This is extremely fiddly and I'd love another option.
185 185
186#+begin_src emacs-lisp :noweb-ref settings 186#+begin_src emacs-lisp :noweb-ref settings
187 (setq-default split-width-threshold 100 187 (setq-default split-width-threshold 100
188 split-height-threshold 50) 188 split-height-threshold 50)
189#+end_src 189#+end_src
190 190
191*** Window layouts 191*** Window layouts
@@ -231,9 +231,9 @@ filesystem paths.
231 231
232#+begin_src emacs-lisp :noweb-ref settings 232#+begin_src emacs-lisp :noweb-ref settings
233 (setq-default uniquify-buffer-name-style 'forward 233 (setq-default uniquify-buffer-name-style 'forward
234 uniquify-separator "/" 234 uniquify-separator "/"
235 uniquify-after-kill-buffer-p t 235 uniquify-after-kill-buffer-p t
236 uniquify-ignore-buffers-re "^\\*") 236 uniquify-ignore-buffers-re "^\\*")
237#+end_src 237#+end_src
238 238
239*** Startup buffers 239*** Startup buffers
@@ -243,12 +243,12 @@ also want it to show a cute little message to myself.
243 243
244#+begin_src emacs-lisp :noweb-ref settings 244#+begin_src emacs-lisp :noweb-ref settings
245 (setq-default inhibit-startup-screen t ; Don't show that splash screen thing. 245 (setq-default inhibit-startup-screen t ; Don't show that splash screen thing.
246 initial-buffer-choice t ; Start on *scratch* 246 initial-buffer-choice t ; Start on *scratch*
247 initial-scratch-message 247 initial-scratch-message
248 (concat ";; Howdy, " 248 (concat ";; Howdy, "
249 (nth 0 (split-string user-full-name)) "!" 249 (nth 0 (split-string user-full-name)) "!"
250 " Welcome to Emacs." 250 " Welcome to Emacs."
251 "\n\n")) 251 "\n\n"))
252#+end_src 252#+end_src
253 253
254*** Immortal =*scratch*= buffer 254*** Immortal =*scratch*= buffer
@@ -260,7 +260,7 @@ function to the =kill-buffer-query-functions= hook that will return
260#+begin_src emacs-lisp :noweb-ref functions 260#+begin_src emacs-lisp :noweb-ref functions
261 (defun immortal-scratch () 261 (defun immortal-scratch ()
262 (if (not (eq (current-buffer) (get-buffer "*scratch*"))) 262 (if (not (eq (current-buffer) (get-buffer "*scratch*")))
263 t 263 t
264 (bury-buffer) 264 (bury-buffer)
265 nil)) 265 nil))
266#+end_src 266#+end_src
@@ -299,12 +299,12 @@ someday.
299 (interactive "P") 299 (interactive "P")
300 (pcase (or (car prefix) 0) 300 (pcase (or (car prefix) 0)
301 (0 (kill-current-buffer) 301 (0 (kill-current-buffer)
302 (unless (one-window-p) (delete-window))) 302 (unless (one-window-p) (delete-window)))
303 (4 (other-window 1) 303 (4 (other-window 1)
304 (kill-current-buffer) 304 (kill-current-buffer)
305 (unless (one-window-p) (delete-window))) 305 (unless (one-window-p) (delete-window)))
306 (16 (let ((current-prefix-arg nil)) 306 (16 (let ((current-prefix-arg nil))
307 (kill-buffer))))) 307 (kill-buffer)))))
308#+end_src 308#+end_src
309 309
310#+begin_src emacs-lisp :noweb-ref bindings 310#+begin_src emacs-lisp :noweb-ref bindings
@@ -327,9 +327,9 @@ have =clean-buffer-list= run at 8:00 PM.
327 327
328#+begin_src emacs-lisp :noweb-ref settings 328#+begin_src emacs-lisp :noweb-ref settings
329 (setq-default acdw/clean-buffer-list-timer 329 (setq-default acdw/clean-buffer-list-timer
330 (run-at-time "20:00" 86400 #'clean-buffer-list) 330 (run-at-time "20:00" 86400 #'clean-buffer-list)
331 clean-buffer-list-delay-general 5 331 clean-buffer-list-delay-general 5
332 clean-buffer-list-delay-special (* 7 24 60 60)) 332 clean-buffer-list-delay-special (* 7 24 60 60))
333 333
334 (add-to-list 'clean-buffer-list-kill-buffer-names "*Completions*") 334 (add-to-list 'clean-buffer-list-kill-buffer-names "*Completions*")
335 (add-to-list 'clean-buffer-list-kill-buffer-names "*Calendar*") 335 (add-to-list 'clean-buffer-list-kill-buffer-names "*Calendar*")
@@ -343,7 +343,7 @@ I like a vertical bar, but only in the selected window.
343 343
344#+begin_src emacs-lisp :noweb-ref settings 344#+begin_src emacs-lisp :noweb-ref settings
345 (setq-default cursor-type 'bar 345 (setq-default cursor-type 'bar
346 cursor-in-non-selected-windows nil) 346 cursor-in-non-selected-windows nil)
347#+end_src 347#+end_src
348 348
349*** Don't blink the cursor 349*** Don't blink the cursor
@@ -358,9 +358,9 @@ I like a vertical bar, but only in the selected window.
358 358
359#+begin_src emacs-lisp :noweb-ref settings 359#+begin_src emacs-lisp :noweb-ref settings
360 (setq-default tab-bar-show 1 ; show the tab bar when more than 1 tab 360 (setq-default tab-bar-show 1 ; show the tab bar when more than 1 tab
361 tab-bar-new-tab-choice "*scratch*" 361 tab-bar-new-tab-choice "*scratch*"
362 tab-bar-tab-name-function 362 tab-bar-tab-name-function
363 #'tab-bar-tab-name-current-with-count) 363 #'tab-bar-tab-name-current-with-count)
364#+end_src 364#+end_src
365 365
366*** Tab bar history 366*** Tab bar history
@@ -379,32 +379,32 @@ On Linux, I have a custom build of Iosevka that I like.
379 379
380#+begin_src emacs-lisp :noweb-ref linux-specific 380#+begin_src emacs-lisp :noweb-ref linux-specific
381 (set-face-attribute 'default nil 381 (set-face-attribute 'default nil
382 :family "Iosevka Acdw" 382 :family "Iosevka Acdw"
383 :height 105) 383 :height 105)
384 384
385 (set-face-attribute 'fixed-pitch nil 385 (set-face-attribute 'fixed-pitch nil
386 :family "Iosevka Acdw" 386 :family "Iosevka Acdw"
387 :height 105) 387 :height 105)
388 388
389 (set-face-attribute 'variable-pitch nil 389 (set-face-attribute 'variable-pitch nil
390 :family "DejaVu Serif" 390 :family "DejaVu Serif"
391 :height 110) 391 :height 110)
392#+end_src 392#+end_src
393 393
394But on Windows, I use Consolas. 394But on Windows, I use Consolas.
395 395
396#+begin_src emacs-lisp :noweb-ref windows-specific 396#+begin_src emacs-lisp :noweb-ref windows-specific
397 (set-face-attribute 'default nil 397 (set-face-attribute 'default nil
398 :family "Consolas" 398 :family "Consolas"
399 :height 100) 399 :height 100)
400 400
401 (set-face-attribute 'fixed-pitch nil 401 (set-face-attribute 'fixed-pitch nil
402 :family "Consolas" 402 :family "Consolas"
403 :height 100) 403 :height 100)
404 404
405 (set-face-attribute 'variable-pitch nil 405 (set-face-attribute 'variable-pitch nil
406 :family "Cambria" 406 :family "Cambria"
407 :height 105) 407 :height 105)
408#+end_src 408#+end_src
409 409
410*** Underlines 410*** Underlines
@@ -437,18 +437,18 @@ complains), I need to fork and change that to a =cl-lib=.
437 437
438#+begin_src emacs-lisp :noweb-ref packages 438#+begin_src emacs-lisp :noweb-ref packages
439 (straight-use-package '(list-utils 439 (straight-use-package '(list-utils
440 :host github 440 :host github
441 :repo "rolandwalker/list-utils" 441 :repo "rolandwalker/list-utils"
442 :fork (:repo "duckwork/list-utils"))) 442 :fork (:repo "duckwork/list-utils")))
443#+end_src 443#+end_src
444 444
445***** Persistent-soft 445***** Persistent-soft
446 446
447#+begin_src emacs-lisp :noweb-ref packages 447#+begin_src emacs-lisp :noweb-ref packages
448 (straight-use-package '(persistent-soft 448 (straight-use-package '(persistent-soft
449 :host github 449 :host github
450 :repo "rolandwalker/persistent-soft" 450 :repo "rolandwalker/persistent-soft"
451 :fork (:repo "duckwork/persistent-soft"))) 451 :fork (:repo "duckwork/persistent-soft")))
452#+end_src 452#+end_src
453 453
454***** Font-utils 454***** Font-utils
@@ -460,9 +460,9 @@ to stay hopeful.
460 460
461#+begin_src emacs-lisp :noweb-ref packages 461#+begin_src emacs-lisp :noweb-ref packages
462 (straight-use-package '(font-utils 462 (straight-use-package '(font-utils
463 :host github 463 :host github
464 :repo "rolandwalker/font-utils" 464 :repo "rolandwalker/font-utils"
465 :fork (:repo "duckwork/font-utils"))) 465 :fork (:repo "duckwork/font-utils")))
466#+end_src 466#+end_src
467 467
468***** A function in case it comes up again 468***** A function in case it comes up again
@@ -489,8 +489,8 @@ So... function!
489 489
490#+begin_src emacs-lisp :noweb-ref packages 490#+begin_src emacs-lisp :noweb-ref packages
491 (straight-use-package '(unicode-fonts 491 (straight-use-package '(unicode-fonts
492 :host github 492 :host github
493 :repo "rolandwalker/unicode-fonts")) 493 :repo "rolandwalker/unicode-fonts"))
494 (require 'unicode-fonts) 494 (require 'unicode-fonts)
495#+end_src 495#+end_src
496 496
@@ -534,19 +534,19 @@ I want the git version.
534 534
535#+begin_src emacs-lisp :noweb-ref packages 535#+begin_src emacs-lisp :noweb-ref packages
536 (straight-use-package '(modus-themes 536 (straight-use-package '(modus-themes
537 :host gitlab 537 :host gitlab
538 :repo "protesilaos/modus-themes")) 538 :repo "protesilaos/modus-themes"))
539#+end_src 539#+end_src
540 540
541#+begin_src emacs-lisp :noweb-ref settings 541#+begin_src emacs-lisp :noweb-ref settings
542 (setq-default modus-themes-slanted-constructs t 542 (setq-default modus-themes-slanted-constructs t
543 modus-themes-bold-constructs t 543 modus-themes-bold-constructs t
544 modus-themes-region 'bg-only 544 modus-themes-region 'bg-only
545 modus-themes-org-blocks 'grayscale 545 modus-themes-org-blocks 'grayscale
546 modus-themes-headings '((1 . section) 546 modus-themes-headings '((1 . section)
547 (t . no-color)) 547 (t . no-color))
548 modus-themes-scale-headings nil 548 modus-themes-scale-headings nil
549 modus-themes-mode-line nil) 549 modus-themes-mode-line nil)
550#+end_src 550#+end_src
551 551
552**** Force headings to be =fixed-pitch= 552**** Force headings to be =fixed-pitch=
@@ -557,15 +557,15 @@ To enable the proper alignment of Org tags, I want headings to inherit from the
557 557
558#+begin_src emacs-lisp :noweb-ref settings 558#+begin_src emacs-lisp :noweb-ref settings
559 (dolist (face '(modus-theme-heading-1 559 (dolist (face '(modus-theme-heading-1
560 modus-theme-heading-2 560 modus-theme-heading-2
561 modus-theme-heading-3 561 modus-theme-heading-3
562 modus-theme-heading-4 562 modus-theme-heading-4
563 modus-theme-heading-5 563 modus-theme-heading-5
564 modus-theme-heading-6 564 modus-theme-heading-6
565 modus-theme-heading-7 565 modus-theme-heading-7
566 modus-theme-heading-8)) 566 modus-theme-heading-8))
567 (doremi-face-set face 567 (doremi-face-set face
568 '((t (:inherit (face fixed-pitch bold)))))) 568 '((t (:inherit (face fixed-pitch bold))))))
569#+end_src 569#+end_src
570 570
571*** Change themes based on time of day 571*** Change themes based on time of day
@@ -574,27 +574,27 @@ To enable the proper alignment of Org tags, I want headings to inherit from the
574 (defun acdw/run-with-sun (sunrise-command sunset-command) 574 (defun acdw/run-with-sun (sunrise-command sunset-command)
575 "Run commands at sunrise and sunset." 575 "Run commands at sunrise and sunset."
576 (let* ((times-regex (rx (* nonl) 576 (let* ((times-regex (rx (* nonl)
577 (: (any ?s ?S) "unrise") " " 577 (: (any ?s ?S) "unrise") " "
578 (group (repeat 1 2 digit) ":" 578 (group (repeat 1 2 digit) ":"
579 (repeat 1 2 digit) 579 (repeat 1 2 digit)
580 (: (any ?a ?A ?p ?P) (any ?m ?M))) 580 (: (any ?a ?A ?p ?P) (any ?m ?M)))
581 (* nonl) 581 (* nonl)
582 (: (any ?s ?S) "unset") " " 582 (: (any ?s ?S) "unset") " "
583 (group (repeat 1 2 digit) ":" 583 (group (repeat 1 2 digit) ":"
584 (repeat 1 2 digit) 584 (repeat 1 2 digit)
585 (: (any ?a ?A ?p ?P) (any ?m ?M))) 585 (: (any ?a ?A ?p ?P) (any ?m ?M)))
586 (* nonl))) 586 (* nonl)))
587 (ss (sunrise-sunset)) 587 (ss (sunrise-sunset))
588 (_m (string-match times-regex ss)) 588 (_m (string-match times-regex ss))
589 (sunrise-time (match-string 1 ss)) 589 (sunrise-time (match-string 1 ss))
590 (sunset-time (match-string 2 ss))) 590 (sunset-time (match-string 2 ss)))
591 (run-at-time sunrise-time (* 60 60 24) sunrise-command) 591 (run-at-time sunrise-time (* 60 60 24) sunrise-command)
592 (run-at-time sunset-time (* 60 60 24) sunset-command))) 592 (run-at-time sunset-time (* 60 60 24) sunset-command)))
593#+end_src 593#+end_src
594 594
595#+begin_src emacs-lisp :noweb-ref hooks 595#+begin_src emacs-lisp :noweb-ref hooks
596 (acdw/run-with-sun #'modus-themes-load-operandi 596 (acdw/run-with-sun #'modus-themes-load-operandi
597 #'modus-themes-load-vivendi) 597 #'modus-themes-load-vivendi)
598#+end_src 598#+end_src
599 599
600*** Mode line 600*** Mode line
@@ -617,8 +617,8 @@ minor-modes from the modeline.
617 617
618#+begin_src emacs-lisp :noweb-ref packages 618#+begin_src emacs-lisp :noweb-ref packages
619 (straight-use-package '(blackout 619 (straight-use-package '(blackout
620 :host github 620 :host github
621 :repo "raxod502/blackout")) 621 :repo "raxod502/blackout"))
622#+end_src 622#+end_src
623 623
624**** Which-function mode 624**** Which-function mode
@@ -633,11 +633,11 @@ Shows where we are in the modeline.
633 633
634#+begin_src emacs-lisp :noweb-ref linux-specific 634#+begin_src emacs-lisp :noweb-ref linux-specific
635 (doremi-face-set 'mode-line 635 (doremi-face-set 'mode-line
636 '((t (:family "Terminus" 636 '((t (:family "Terminus"
637 :height 1.0)))) 637 :height 1.0))))
638 (doremi-face-set 'mode-line-inactive 638 (doremi-face-set 'mode-line-inactive
639 '((t (:family "Terminus" 639 '((t (:family "Terminus"
640 :height 1.0)))) 640 :height 1.0))))
641#+end_src 641#+end_src
642 642
643*** Setting faces 643*** Setting faces
@@ -683,7 +683,7 @@ systems.
683 683
684#+begin_src emacs-lisp :noweb-ref settings 684#+begin_src emacs-lisp :noweb-ref settings
685 (setq-default visible-bell nil 685 (setq-default visible-bell nil
686 ring-bell-function #'flash-mode-line) 686 ring-bell-function #'flash-mode-line)
687#+end_src 687#+end_src
688 688
689**** Flash the mode-line 689**** Flash the mode-line
@@ -700,9 +700,9 @@ systems.
700 700
701#+begin_src emacs-lisp :noweb-ref settings 701#+begin_src emacs-lisp :noweb-ref settings
702 (setq-default minibuffer-prompt-properties 702 (setq-default minibuffer-prompt-properties
703 '(read-only t 703 '(read-only t
704 cursor-intangible t 704 cursor-intangible t
705 face minibuffer-prompt)) 705 face minibuffer-prompt))
706#+end_src 706#+end_src
707 707
708*** Enable a recursive minibuffer 708*** Enable a recursive minibuffer
@@ -738,8 +738,8 @@ to /hide/ those contents.
738 738
739#+begin_src emacs-lisp :noweb-ref 739#+begin_src emacs-lisp :noweb-ref
740 (setq-default completion-ignore-case t 740 (setq-default completion-ignore-case t
741 read-buffer-completion-ignore-case t 741 read-buffer-completion-ignore-case t
742 read-file-name-completion-ignore-case t) 742 read-file-name-completion-ignore-case t)
743#+end_src 743#+end_src
744 744
745*** Icomplete 745*** Icomplete
@@ -752,7 +752,7 @@ to /hide/ those contents.
752 (setq-default 752 (setq-default
753 completion-styles '(partial-completion substring flex) 753 completion-styles '(partial-completion substring flex)
754 completion-category-overrides '((file 754 completion-category-overrides '((file
755 (styles basic substring flex)))) 755 (styles basic substring flex))))
756 (setq-default 756 (setq-default
757 icomplete-delay-completions-threshold 0 757 icomplete-delay-completions-threshold 0
758 icomplete-max-delay-chars 0 758 icomplete-max-delay-chars 0
@@ -771,8 +771,8 @@ to /hide/ those contents.
771 ("C-p" #'icomplete-backward-completions))) 771 ("C-p" #'icomplete-backward-completions)))
772 772
773 (acdw/bind "C-v" #'icomplete-vertical-toggle 773 (acdw/bind "C-v" #'icomplete-vertical-toggle
774 :after 'icomplete-vertical 774 :after 'icomplete-vertical
775 :map icomplete-minibuffer-map) 775 :map icomplete-minibuffer-map)
776#+end_src 776#+end_src
777 777
778#+begin_src emacs-lisp :noweb-ref modes 778#+begin_src emacs-lisp :noweb-ref modes
@@ -825,10 +825,10 @@ default completion system. These all come from the [[https://github.com/minad/c
825 ("M-g e" #'consult-error) 825 ("M-g e" #'consult-error)
826 ;; M-s bindings (`search-map') 826 ;; M-s bindings (`search-map')
827 ("M-s g" #'consult-grep) ; alts: 827 ("M-s g" #'consult-grep) ; alts:
828 ; consult-git-grep, 828 ; consult-git-grep,
829 ; consult-ripgrep 829 ; consult-ripgrep
830 ("M-s f" #'consult-find) ; alts: 830 ("M-s f" #'consult-find) ; alts:
831 ; consult-locate 831 ; consult-locate
832 ("M-s l" #'consult-line) 832 ("M-s l" #'consult-line)
833 ("M-s m" #'consult-multi-occur) 833 ("M-s m" #'consult-multi-occur)
834 ("M-s k" #'consult-keep-lines) 834 ("M-s k" #'consult-keep-lines)
@@ -842,7 +842,7 @@ default completion system. These all come from the [[https://github.com/minad/c
842#+begin_src emacs-lisp :noweb-ref settings 842#+begin_src emacs-lisp :noweb-ref settings
843 (autoload 'consult-register-preview "consult") ; make the compiler happy 843 (autoload 'consult-register-preview "consult") ; make the compiler happy
844 (setq-default register-preview-delay 0 844 (setq-default register-preview-delay 0
845 register-preview-function #'consult-register-preview) 845 register-preview-function #'consult-register-preview)
846#+end_src 846#+end_src
847 847
848*** Marginalia :package: 848*** Marginalia :package:
@@ -863,9 +863,9 @@ I like the rich annotations provided by =marginalia=.
863 863
864#+begin_src emacs-lisp :noweb-ref settings 864#+begin_src emacs-lisp :noweb-ref settings
865 (setq-default marginalia-annotators 865 (setq-default marginalia-annotators
866 '(marginalia-annotators-heavy 866 '(marginalia-annotators-heavy
867 marginalia-annotators-light 867 marginalia-annotators-light
868 nil)) 868 nil))
869#+end_src 869#+end_src
870 870
871** Imenu 871** Imenu
@@ -931,13 +931,13 @@ little sugar on top of =define-key= et al.
931 :after PACKAGE-OR-FEATURE .. wrap key definition in `with-eval-after-load' 931 :after PACKAGE-OR-FEATURE .. wrap key definition in `with-eval-after-load'
932 :map KEYMAP .. define key in KEYMAP instead of `acdw/map'" 932 :map KEYMAP .. define key in KEYMAP instead of `acdw/map'"
933 (let* ((after (plist-get args :after)) 933 (let* ((after (plist-get args :after))
934 (map (or (plist-get args :map) 'acdw/map)) 934 (map (or (plist-get args :map) 'acdw/map))
935 (key (if (vectorp key) key `(kbd ,key))) 935 (key (if (vectorp key) key `(kbd ,key)))
936 (def-key `(define-key ,map ,key ,def))) 936 (def-key `(define-key ,map ,key ,def)))
937 (if after 937 (if after
938 `(with-eval-after-load ,after 938 `(with-eval-after-load ,after
939 ,def-key) 939 ,def-key)
940 def-key))) 940 def-key)))
941 941
942 (defmacro acdw/bind-after-map (feature keymap bindings) 942 (defmacro acdw/bind-after-map (feature keymap bindings)
943 "Wrap multiple calls to `acdw/bind' in a `with-eval-after-load' form. 943 "Wrap multiple calls to `acdw/bind' in a `with-eval-after-load' form.
@@ -947,11 +947,11 @@ little sugar on top of =define-key= et al.
947 (declare (indent 2)) 947 (declare (indent 2))
948 (let (bind-list) 948 (let (bind-list)
949 (dolist (bind bindings bind-list) 949 (dolist (bind bindings bind-list)
950 (if keymap 950 (if keymap
951 (push `(acdw/bind ,@bind :map ,keymap) bind-list) 951 (push `(acdw/bind ,@bind :map ,keymap) bind-list)
952 (push `(acdw/bind ,@bind) bind-list))) 952 (push `(acdw/bind ,@bind) bind-list)))
953 `(with-eval-after-load ,feature 953 `(with-eval-after-load ,feature
954 ,@bind-list))) 954 ,@bind-list)))
955#+end_src 955#+end_src
956 956
957**** Turn off acdw/mode in the minibuffer 957**** Turn off acdw/mode in the minibuffer
@@ -973,8 +973,8 @@ generally use it as a leader for entering applications.
973#+begin_src emacs-lisp :noweb-ref acdw-mode 973#+begin_src emacs-lisp :noweb-ref acdw-mode
974 (defvar acdw/leader 974 (defvar acdw/leader
975 (let ((map (make-sparse-keymap)) 975 (let ((map (make-sparse-keymap))
976 (c-z (global-key-binding "\C-z"))) 976 (c-z (global-key-binding "\C-z")))
977 ;(global-unset-key "\C-z") 977 ;(global-unset-key "\C-z")
978 (define-key acdw/map "\C-z" map) 978 (define-key acdw/map "\C-z" map)
979 (define-key map "\C-z" c-z) 979 (define-key map "\C-z" c-z)
980 map)) 980 map))
@@ -1003,15 +1003,15 @@ According to [[https://github.com/mpereira/.emacs.d#make-cursor-movement-an-orde
1003 1003
1004#+begin_src emacs-lisp :noweb-ref settings 1004#+begin_src emacs-lisp :noweb-ref settings
1005 (setq-default auto-window-vscroll nil 1005 (setq-default auto-window-vscroll nil
1006 fast-but-imprecise-scrolling t) 1006 fast-but-imprecise-scrolling t)
1007#+end_src 1007#+end_src
1008 1008
1009*** Scroll margins 1009*** Scroll margins
1010 1010
1011#+begin_src emacs-lisp :noweb-ref settings 1011#+begin_src emacs-lisp :noweb-ref settings
1012 (setq-default scroll-margin 0 1012 (setq-default scroll-margin 0
1013 scroll-conservatively 101 ; if greater than 100 ... 1013 scroll-conservatively 101 ; if greater than 100 ...
1014 scroll-preserve-screen-position 1) 1014 scroll-preserve-screen-position 1)
1015#+end_src 1015#+end_src
1016 1016
1017** Enable commands 1017** Enable commands
@@ -1030,8 +1030,8 @@ including here myself. This is kind of an experiment, to be honest.
1030 1030
1031#+begin_src emacs-lisp :noweb-ref packages 1031#+begin_src emacs-lisp :noweb-ref packages
1032 (straight-use-package '(crux 1032 (straight-use-package '(crux
1033 :host github 1033 :host github
1034 :repo "bbatsov/crux")) 1034 :repo "bbatsov/crux"))
1035 (require 'crux) 1035 (require 'crux)
1036#+end_src 1036#+end_src
1037 1037
@@ -1052,12 +1052,12 @@ I keep all of it.
1052 1052
1053#+begin_src emacs-lisp :noweb-ref modes 1053#+begin_src emacs-lisp :noweb-ref modes
1054 (setq-default savehist-additional-variables 1054 (setq-default savehist-additional-variables
1055 '(kill-ring 1055 '(kill-ring
1056 search-ring 1056 search-ring
1057 regexp-search-ring) 1057 regexp-search-ring)
1058 history-length t ; Don't truncate 1058 history-length t ; Don't truncate
1059 history-delete-duplicates t 1059 history-delete-duplicates t
1060 savehist-autosave-interval 60) 1060 savehist-autosave-interval 60)
1061#+end_src 1061#+end_src
1062 1062
1063#+begin_src emacs-lisp :noweb-ref modes 1063#+begin_src emacs-lisp :noweb-ref modes
@@ -1078,7 +1078,7 @@ of are readable or not when I'm not at home.
1078 1078
1079#+begin_src emacs-lisp :noweb-ref settings 1079#+begin_src emacs-lisp :noweb-ref settings
1080 (setq-default save-place-forget-unreadable-files 1080 (setq-default save-place-forget-unreadable-files
1081 (memq system-type '(gnu gnu/linux gnu/kfreebsd))) 1081 (memq system-type '(gnu gnu/linux gnu/kfreebsd)))
1082#+end_src 1082#+end_src
1083 1083
1084#+begin_src emacs-lisp :noweb-ref modes 1084#+begin_src emacs-lisp :noweb-ref modes
@@ -1096,8 +1096,8 @@ with that.
1096 1096
1097#+begin_src emacs-lisp :noweb-ref settings 1097#+begin_src emacs-lisp :noweb-ref settings
1098 (setq-default recentf-max-menu-items 100 1098 (setq-default recentf-max-menu-items 100
1099 recentf-max-saved-items nil 1099 recentf-max-saved-items nil
1100 recentf-auto-cleanup 'never) 1100 recentf-auto-cleanup 'never)
1101#+end_src 1101#+end_src
1102 1102
1103#+begin_src emacs-lisp :noweb-ref modes 1103#+begin_src emacs-lisp :noweb-ref modes
@@ -1121,14 +1121,14 @@ I also want to ignore the =no-littering-var-directory= and
1121 "When we last saved the `recentf-save-list'.") 1121 "When we last saved the `recentf-save-list'.")
1122 1122
1123 (when (> (time-convert (time-since recentf--last-save) 'integer) 1123 (when (> (time-convert (time-since recentf--last-save) 'integer)
1124 (* 60 5)) 1124 (* 60 5))
1125 (setq-default recentf--last-save (time-convert nil 'integer)) 1125 (setq-default recentf--last-save (time-convert nil 'integer))
1126 (when-unfocused #'recentf-save-list))) 1126 (when-unfocused #'recentf-save-list)))
1127#+end_src 1127#+end_src
1128 1128
1129#+begin_src emacs-lisp :noweb-ref hooks 1129#+begin_src emacs-lisp :noweb-ref hooks
1130 (add-function :after after-focus-change-function 1130 (add-function :after after-focus-change-function
1131 #'maybe-save-recentf) 1131 #'maybe-save-recentf)
1132#+end_src 1132#+end_src
1133 1133
1134* Responsiveness 1134* Responsiveness
@@ -1182,7 +1182,7 @@ I'm going to try it for now.
1182 (when-unfocused #'garbage-collect)) 1182 (when-unfocused #'garbage-collect))
1183 1183
1184 (add-function :after after-focus-change-function 1184 (add-function :after after-focus-change-function
1185 #'hook--gc-when-unfocused) 1185 #'hook--gc-when-unfocused)
1186#+end_src 1186#+end_src
1187 1187
1188** Startup time 1188** Startup time
@@ -1197,10 +1197,10 @@ As a benchmark, on Windows, =emacs -Q= starts up in *0.188585* seconds, and
1197 (defun hook--message-startup-time () 1197 (defun hook--message-startup-time ()
1198 "Message Emacs' startup time." 1198 "Message Emacs' startup time."
1199 (message "Emacs ready in %s with %d garbage collections." 1199 (message "Emacs ready in %s with %d garbage collections."
1200 (format "%.2f seconds" 1200 (format "%.2f seconds"
1201 (float-time (time-subtract after-init-time 1201 (float-time (time-subtract after-init-time
1202 before-init-time))) 1202 before-init-time)))
1203 gcs-done)) 1203 gcs-done))
1204 1204
1205 (add-hook 'emacs-startup-hook #'hook--message-startup-time) 1205 (add-hook 'emacs-startup-hook #'hook--message-startup-time)
1206#+end_src 1206#+end_src
@@ -1224,15 +1224,15 @@ It's 2020. Let's encode files like it is.
1224 (set-selection-coding-system 'utf-8-unix) 1224 (set-selection-coding-system 'utf-8-unix)
1225 1225
1226 (setq-default locale-coding-system 'utf-8-unix 1226 (setq-default locale-coding-system 'utf-8-unix
1227 coding-system-for-read 'utf-8-unix 1227 coding-system-for-read 'utf-8-unix
1228 coding-system-for-write 'utf-8-unix 1228 coding-system-for-write 'utf-8-unix
1229 buffer-file-coding-system 'utf-8-unix 1229 buffer-file-coding-system 'utf-8-unix
1230
1231 org-export-coding-system 'utf-8-unix
1232 org-html-coding-system 'utf-8-unix ; doesn't take from above
1233 1230
1234 default-process-coding-system '(utf-8-unix . utf-8-unix) 1231 org-export-coding-system 'utf-8-unix
1235 x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING)) 1232 org-html-coding-system 'utf-8-unix ; doesn't take from above
1233
1234 default-process-coding-system '(utf-8-unix . utf-8-unix)
1235 x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING))
1236#+end_src 1236#+end_src
1237 1237
1238*** UNIX-style line endings 1238*** UNIX-style line endings
@@ -1244,7 +1244,7 @@ This function is from the [[https://www.emacswiki.org/emacs/EndOfLineTips][Emacs
1244 "Convert line endings to UNIX, dammit." 1244 "Convert line endings to UNIX, dammit."
1245 (let ((coding-str (symbol-name buffer-file-coding-system))) 1245 (let ((coding-str (symbol-name buffer-file-coding-system)))
1246 (when (string-match "-\\(?:dos\\|mac\\)$" coding-str) 1246 (when (string-match "-\\(?:dos\\|mac\\)$" coding-str)
1247 (set-buffer-file-coding-system 'unix)))) 1247 (set-buffer-file-coding-system 'unix))))
1248#+end_src 1248#+end_src
1249 1249
1250I add it to both =file-find-hook= /and/ =before-save-hook= because I'm 1250I add it to both =file-find-hook= /and/ =before-save-hook= because I'm
@@ -1271,19 +1271,19 @@ Notepad can handle UNIX line endings, so I don't want to hear it.
1271 1271
1272#+begin_src emacs-lisp :noweb-ref settings 1272#+begin_src emacs-lisp :noweb-ref settings
1273 (setq-default backup-by-copying t 1273 (setq-default backup-by-copying t
1274 ;; Don't delete old versions 1274 ;; Don't delete old versions
1275 delete-old-versions -1 1275 delete-old-versions -1
1276 ;; Make numeric backups unconditionally 1276 ;; Make numeric backups unconditionally
1277 version-control t 1277 version-control t
1278 ;; Also backup files covered by version control 1278 ;; Also backup files covered by version control
1279 vc-make-backup-files t) 1279 vc-make-backup-files t)
1280#+end_src 1280#+end_src
1281 1281
1282#+begin_src emacs-lisp :noweb-ref no-littering 1282#+begin_src emacs-lisp :noweb-ref no-littering
1283 (let ((dir (no-littering-expand-var-file-name "backup"))) 1283 (let ((dir (no-littering-expand-var-file-name "backup")))
1284 (make-directory dir :parents) 1284 (make-directory dir :parents)
1285 (setq-default backup-directory-alist 1285 (setq-default backup-directory-alist
1286 `((".*" . ,dir)))) 1286 `((".*" . ,dir))))
1287#+end_src 1287#+end_src
1288 1288
1289** Autosaves :package: 1289** Autosaves :package:
@@ -1295,8 +1295,8 @@ Bozhidar Batsov's [[https://github.com/bbatsov/super-save][super-save]] package.
1295 (setq-default auto-save-default nil) 1295 (setq-default auto-save-default nil)
1296 1296
1297 (setq-default super-save-remote-files nil 1297 (setq-default super-save-remote-files nil
1298 super-save-exclude '(".gpg") 1298 super-save-exclude '(".gpg")
1299 super-save-auto-save-when-idle t) 1299 super-save-auto-save-when-idle t)
1300#+end_src 1300#+end_src
1301 1301
1302#+begin_src emacs-lisp :noweb-ref packages 1302#+begin_src emacs-lisp :noweb-ref packages
@@ -1360,7 +1360,7 @@ that's the only time I accidentally call it, anyway.
13601. Enable =auto-fill-mode= with text modes. 13601. Enable =auto-fill-mode= with text modes.
1361 1361
1362#+begin_src emacs-lisp :noweb-ref hooks 1362#+begin_src emacs-lisp :noweb-ref hooks
1363 (add-hook 'text-mode-hook #'auto-fill-mode) 1363 (add-hook 'text-mode-hook #'auto-fill-mode)
1364#+end_src 1364#+end_src
1365 1365
13662a. Enable =visual-line-mode= everywhere. I do this because when I'm typing a 13662a. Enable =visual-line-mode= everywhere. I do this because when I'm typing a
@@ -1402,19 +1402,19 @@ This has to be done /before/ loading the package. It's included in
1402 (dolist (margin '(right-margin left-margin)) 1402 (dolist (margin '(right-margin left-margin))
1403 (dolist (button '(mouse-1 mouse-2 mouse-3)) 1403 (dolist (button '(mouse-1 mouse-2 mouse-3))
1404 (global-set-key (vector margin button) 1404 (global-set-key (vector margin button)
1405 (global-key-binding (vector button))))) 1405 (global-key-binding (vector button)))))
1406 1406
1407 (mouse-wheel-mode +1) 1407 (mouse-wheel-mode +1)
1408 1408
1409 (when (bound-and-true-p mouse-wheel-mode) 1409 (when (bound-and-true-p mouse-wheel-mode)
1410 (dolist (margin '(right-margin left-margin)) 1410 (dolist (margin '(right-margin left-margin))
1411 (dolist (event '(mouse-wheel-down-event 1411 (dolist (event '(mouse-wheel-down-event
1412 mouse-wheel-up-event 1412 mouse-wheel-up-event
1413 wheel-down 1413 wheel-down
1414 wheel-up 1414 wheel-up
1415 mouse-4 1415 mouse-4
1416 mouse-5)) 1416 mouse-5))
1417 (global-set-key (vector margin event) #'mwheel-scroll)))) 1417 (global-set-key (vector margin event) #'mwheel-scroll))))
1418#+END_SRC 1418#+END_SRC
1419 1419
1420**** Then: =visual-fill-column= :package: 1420**** Then: =visual-fill-column= :package:
@@ -1454,10 +1454,10 @@ enabled).
1454 1454
1455#+begin_src emacs-lisp :noweb-ref settings 1455#+begin_src emacs-lisp :noweb-ref settings
1456 (setq-default whitespace-style '(empty ; remove blank lines at buffer edges 1456 (setq-default whitespace-style '(empty ; remove blank lines at buffer edges
1457 indentation ; clean up indentation 1457 indentation ; clean up indentation
1458 ;; fix mixed spaces and tabs 1458 ;; fix mixed spaces and tabs
1459 space-before-tab 1459 space-before-tab
1460 space-after-tab)) 1460 space-after-tab))
1461#+end_src 1461#+end_src
1462 1462
1463*** Clean up whitespace on save 1463*** Clean up whitespace on save
@@ -1600,8 +1600,8 @@ from =undo-fu=.
1600 1600
1601#+begin_src emacs-lisp :noweb-ref settings 1601#+begin_src emacs-lisp :noweb-ref settings
1602 (setq-default undo-fu-session-incompatible-files 1602 (setq-default undo-fu-session-incompatible-files
1603 '("/COMMIT_EDITMSG\\'" 1603 '("/COMMIT_EDITMSG\\'"
1604 "/git-rebase-todo\\'")) 1604 "/git-rebase-todo\\'"))
1605#+end_src 1605#+end_src
1606 1606
1607#+begin_src emacs-lisp :noweb-ref no-littering 1607#+begin_src emacs-lisp :noweb-ref no-littering
@@ -1644,12 +1644,12 @@ I want to search by regexp by default.
1644 1644
1645#+begin_src emacs-lisp :noweb-ref settings 1645#+begin_src emacs-lisp :noweb-ref settings
1646 (setq-default anzu-mode-lighter "" ; hide anzu-mode in the modeline 1646 (setq-default anzu-mode-lighter "" ; hide anzu-mode in the modeline
1647 anzu-replace-to-string-separator " → ") 1647 anzu-replace-to-string-separator " → ")
1648 1648
1649 ;; Set up anzu in the modeline 1649 ;; Set up anzu in the modeline
1650 (setq-default anzu-cons-mode-line-p nil) 1650 (setq-default anzu-cons-mode-line-p nil)
1651 (setcar (cdr (assq 'isearch-mode minor-mode-alist)) 1651 (setcar (cdr (assq 'isearch-mode minor-mode-alist))
1652 '(:eval (concat " " (anzu--update-mode-line)))) 1652 '(:eval (concat " " (anzu--update-mode-line))))
1653#+end_src 1653#+end_src
1654 1654
1655*** Regex 1655*** Regex
@@ -1721,7 +1721,7 @@ Let's use =hunspell=.
1721 (with-eval-after-load "ispell" 1721 (with-eval-after-load "ispell"
1722 (setenv "LANG" "en_US") 1722 (setenv "LANG" "en_US")
1723 (setq-default ispell-program-name "hunspell" 1723 (setq-default ispell-program-name "hunspell"
1724 ispell-dictionary "en_US") 1724 ispell-dictionary "en_US")
1725 (ispell-set-spellchecker-params)) 1725 (ispell-set-spellchecker-params))
1726 1726
1727 (setq ispell-personal-dictionary "~/.hunspell_personal") 1727 (setq ispell-personal-dictionary "~/.hunspell_personal")
@@ -1750,8 +1750,8 @@ Display corrections with =completing-read=.
1750 1750
1751#+begin_src emacs-lisp :noweb-ref bindings 1751#+begin_src emacs-lisp :noweb-ref bindings
1752 (acdw/bind "C-;" #'flyspell-correct-wrapper 1752 (acdw/bind "C-;" #'flyspell-correct-wrapper
1753 :after 'flyspell 1753 :after 'flyspell
1754 :map flyspell-mode-map) 1754 :map flyspell-mode-map)
1755#+end_src 1755#+end_src
1756 1756
1757* Reading 1757* Reading
@@ -1768,7 +1768,7 @@ Display corrections with =completing-read=.
1768 1768
1769#+begin_src emacs-lisp :noweb-ref modes 1769#+begin_src emacs-lisp :noweb-ref modes
1770 (add-hook 'iscroll-mode-hook 1770 (add-hook 'iscroll-mode-hook
1771 #'(lambda () (blackout 'iscroll-mode))) 1771 #'(lambda () (blackout 'iscroll-mode)))
1772#+end_src 1772#+end_src
1773 1773
1774** Reading mode 1774** Reading mode
@@ -1780,16 +1780,16 @@ A custom mode to make reading comfy
1780 "Make reading comfier." 1780 "Make reading comfier."
1781 :lighter " Read" ; later: book emoji 1781 :lighter " Read" ; later: book emoji
1782 (if acdw/reading-mode 1782 (if acdw/reading-mode
1783 (progn ;; turn on 1783 (progn ;; turn on
1784 (text-scale-increase +1) 1784 (text-scale-increase +1)
1785 (visual-fill-column-mode +1) 1785 (visual-fill-column-mode +1)
1786 (iscroll-mode +1) 1786 (iscroll-mode +1)
1787 (display-fill-column-indicator-mode -1)) 1787 (display-fill-column-indicator-mode -1))
1788 (progn ;; turn off 1788 (progn ;; turn off
1789 (text-scale-increase 0) 1789 (text-scale-increase 0)
1790 (visual-fill-column-mode -1) 1790 (visual-fill-column-mode -1)
1791 (iscroll-mode -1) 1791 (iscroll-mode -1)
1792 (display-fill-column-indicator-mode +1)))) 1792 (display-fill-column-indicator-mode +1))))
1793#+end_src 1793#+end_src
1794 1794
1795* Programming 1795* Programming
@@ -1819,18 +1819,18 @@ to auto-fill in programming modes, but /only/ the comments.
1819 1819
1820#+begin_src emacs-lisp :noweb-ref settings 1820#+begin_src emacs-lisp :noweb-ref settings
1821 (setq-default show-paren-delay 0 1821 (setq-default show-paren-delay 0
1822 ;; Show the matching paren if visible, else the whole expression 1822 ;; Show the matching paren if visible, else the whole expression
1823 show-paren-style 'mixed 1823 show-paren-style 'mixed
1824 show-paren-when-point-inside-paren t 1824 show-paren-when-point-inside-paren t
1825 show-paren-when-point-in-periphery t) 1825 show-paren-when-point-in-periphery t)
1826#+end_src 1826#+end_src
1827 1827
1828*** COMMENT Smart parentheses :package: 1828*** COMMENT Smart parentheses :package:
1829 1829
1830#+begin_src emacs-lisp :noweb-ref packages 1830#+begin_src emacs-lisp :noweb-ref packages
1831 (straight-use-package '(smartparens 1831 (straight-use-package '(smartparens
1832 :host github 1832 :host github
1833 :repo "Fuco1/smartparens")) 1833 :repo "Fuco1/smartparens"))
1834 (require 'smartparens-config) 1834 (require 'smartparens-config)
1835#+end_src 1835#+end_src
1836 1836
@@ -1838,7 +1838,7 @@ to auto-fill in programming modes, but /only/ the comments.
1838 1838
1839#+begin_src emacs-lisp :noweb-ref settings 1839#+begin_src emacs-lisp :noweb-ref settings
1840 (setq-default sp-show-pair-delay 0 1840 (setq-default sp-show-pair-delay 0
1841 sp-show-pair-from-inside t) 1841 sp-show-pair-from-inside t)
1842#+end_src 1842#+end_src
1843 1843
1844#+begin_src emacs-lisp :noweb-ref hooks 1844#+begin_src emacs-lisp :noweb-ref hooks
@@ -1857,7 +1857,7 @@ to auto-fill in programming modes, but /only/ the comments.
1857 (add-hook 'prog-mode-hook #'smartparens-mode) 1857 (add-hook 'prog-mode-hook #'smartparens-mode)
1858 1858
1859 (dolist (hook '(lisp-mode-hook 1859 (dolist (hook '(lisp-mode-hook
1860 emacs-lisp-mode-hook)) 1860 emacs-lisp-mode-hook))
1861 (add-hook hook #'smartparens-strict-mode)) 1861 (add-hook hook #'smartparens-strict-mode))
1862#+end_src 1862#+end_src
1863 1863
@@ -1937,15 +1937,15 @@ checks for a shebang).
1937 1937
1938#+begin_src emacs-lisp :noweb-ref hooks 1938#+begin_src emacs-lisp :noweb-ref hooks
1939 (add-hook 'after-save-hook 1939 (add-hook 'after-save-hook
1940 #'executable-make-buffer-file-executable-if-script-p) 1940 #'executable-make-buffer-file-executable-if-script-p)
1941#+end_src 1941#+end_src
1942 1942
1943** Compilation 1943** Compilation
1944 1944
1945#+begin_src emacs-lisp :noweb-ref settings 1945#+begin_src emacs-lisp :noweb-ref settings
1946 (setq-default compilation-ask-about-save nil ; just save 1946 (setq-default compilation-ask-about-save nil ; just save
1947 compilation-always-kill t ; kill the old processes 1947 compilation-always-kill t ; kill the old processes
1948 compilation-scroll-output 'first-error) 1948 compilation-scroll-output 'first-error)
1949#+end_src 1949#+end_src
1950 1950
1951#+begin_src emacs-lisp :noweb-ref bindings 1951#+begin_src emacs-lisp :noweb-ref bindings
@@ -1969,7 +1969,7 @@ of (I suppose) generic files.
1969 1969
1970#+begin_src emacs-lisp :noweb-ref settings 1970#+begin_src emacs-lisp :noweb-ref settings
1971 (setq-default eval-expression-print-length nil 1971 (setq-default eval-expression-print-length nil
1972 eval-expression-print-level nil) 1972 eval-expression-print-level nil)
1973#+end_src 1973#+end_src
1974 1974
1975**** Indent Elisp like Common Lisp 1975**** Indent Elisp like Common Lisp
@@ -2021,6 +2021,31 @@ installed.
2021 (straight-use-package 'i3wm-config-mode)) 2021 (straight-use-package 'i3wm-config-mode))
2022#+end_src 2022#+end_src
2023 2023
2024*** Shell scripts
2025
2026**** Shellcheck
2027
2028#+begin_src emacs-lisp :noweb-ref packages
2029 (straight-use-package 'flymake-shellcheck)
2030 (autoload 'flymake-shellcheck-load "flymake-shellcheck")
2031#+end_src
2032
2033#+begin_src emacs-lisp :noweb-ref hooks
2034 (add-hook 'sh-mode-hook #'flymake-shellcheck-load)
2035#+end_src
2036
2037**** Formatting
2038
2039#+begin_src emacs-lisp :noweb-ref modes
2040 (when (executable-find "shfmt")
2041 (reformatter-define sh-format
2042 :program "shfmt"
2043
2044 :lighter "Shfmt")
2045
2046 (add-hook 'sh-mode-hook #'sh-format-on-save-mode))
2047#+end_src
2048
2024* Applications 2049* Applications
2025 2050
2026Emacs is well-known for its ability to subsume one's entire computing 2051Emacs is well-known for its ability to subsume one's entire computing
@@ -2039,8 +2064,8 @@ I like using Firefox.
2039 2064
2040#+begin_src emacs-lisp :noweb-ref settings 2065#+begin_src emacs-lisp :noweb-ref settings
2041 (setq-default browse-url-browser-function 'browse-url-firefox 2066 (setq-default browse-url-browser-function 'browse-url-firefox
2042 browse-url-new-window-flag t 2067 browse-url-new-window-flag t
2043 browse-url-firefox-new-window-is-tab t) 2068 browse-url-firefox-new-window-is-tab t)
2044#+end_src 2069#+end_src
2045 2070
2046At work, I need to tell Emacs where Firefox is. 2071At work, I need to tell Emacs where Firefox is.
@@ -2053,7 +2078,7 @@ At work, I need to tell Emacs where Firefox is.
2053 2078
2054#+begin_src emacs-lisp :noweb-ref settings 2079#+begin_src emacs-lisp :noweb-ref settings
2055 (setq-default shr-max-width fill-column 2080 (setq-default shr-max-width fill-column
2056 shr-width fill-column) 2081 shr-width fill-column)
2057#+end_src 2082#+end_src
2058 2083
2059** Dired 2084** Dired
@@ -2071,10 +2096,10 @@ move up a directory with a keybinding, I'll change =-a= to =-A=.
2071 2096
2072#+begin_src emacs-lisp :noweb-ref settings 2097#+begin_src emacs-lisp :noweb-ref settings
2073 (setq-default dired-recursive-copies 'always 2098 (setq-default dired-recursive-copies 'always
2074 dired-recursive-deletes 'always 2099 dired-recursive-deletes 'always
2075 delete-by-moving-to-trash t 2100 delete-by-moving-to-trash t
2076 dired-listing-switches "-AFgho --group-directories-first" 2101 dired-listing-switches "-AFgho --group-directories-first"
2077 dired-dwim-target t) 2102 dired-dwim-target t)
2078#+end_src 2103#+end_src
2079 2104
2080#+begin_src emacs-lisp :noweb-ref bindings 2105#+begin_src emacs-lisp :noweb-ref bindings
@@ -2156,8 +2181,8 @@ true, please feel free to hack this repo and change this paragraph.
2156 2181
2157#+begin_src emacs-lisp :noweb-ref packages 2182#+begin_src emacs-lisp :noweb-ref packages
2158 (dolist (feat '(gitattributes-mode 2183 (dolist (feat '(gitattributes-mode
2159 gitconfig-mode 2184 gitconfig-mode
2160 gitignore-mode)) 2185 gitignore-mode))
2161 (straight-use-package feat) 2186 (straight-use-package feat)
2162 (require feat)) 2187 (require feat))
2163#+end_src 2188#+end_src
@@ -2168,8 +2193,8 @@ I love crosswords. I love Emacs. There ya go.
2168 2193
2169#+begin_src emacs-lisp :noweb-ref packages 2194#+begin_src emacs-lisp :noweb-ref packages
2170 (straight-use-package '(crossword 2195 (straight-use-package '(crossword
2171 :host github 2196 :host github
2172 :repo "Boruch-Baum/emacs-crossword")) 2197 :repo "Boruch-Baum/emacs-crossword"))
2173#+end_src 2198#+end_src
2174 2199
2175#+begin_src emacs-lisp :noweb-ref settings 2200#+begin_src emacs-lisp :noweb-ref settings
@@ -2178,7 +2203,7 @@ I love crosswords. I love Emacs. There ya go.
2178 2203
2179#+begin_src emacs-lisp :noweb-ref no-littering 2204#+begin_src emacs-lisp :noweb-ref no-littering
2180 (setq-default crossword-save-path 2205 (setq-default crossword-save-path
2181 (no-littering-expand-var-file-name "crosswords/")) 2206 (no-littering-expand-var-file-name "crosswords/"))
2182 (unless (file-exists-p crossword-save-path) 2207 (unless (file-exists-p crossword-save-path)
2183 (make-directory crossword-save-path :parents)) 2208 (make-directory crossword-save-path :parents))
2184#+end_src 2209#+end_src
@@ -2195,30 +2220,30 @@ bad, to be honest. Let's change em.
2195 2220
2196#+begin_src emacs-lisp :noweb-ref settings 2221#+begin_src emacs-lisp :noweb-ref settings
2197 (doremi-face-set 'crossword-current-face 2222 (doremi-face-set 'crossword-current-face
2198 '((((class color) 2223 '((((class color)
2199 (background light)) 2224 (background light))
2200 (:inherit 'normal :foreground "black" 2225 (:inherit 'normal :foreground "black"
2201 :background "lightgreen")) 2226 :background "lightgreen"))
2202 (((class color) 2227 (((class color)
2203 (background dark)) 2228 (background dark))
2204 (:inherit 'normal :foreground "white" 2229 (:inherit 'normal :foreground "white"
2205 :background "darkgreen")) 2230 :background "darkgreen"))
2206 (t 2231 (t
2207 (:inherit 'normal :foreground "black" 2232 (:inherit 'normal :foreground "black"
2208 :background "darkgreen")))) 2233 :background "darkgreen"))))
2209 2234
2210 (doremi-face-set 'crossword-other-dir-face 2235 (doremi-face-set 'crossword-other-dir-face
2211 '((((class color) 2236 '((((class color)
2212 (background light)) 2237 (background light))
2213 (:inherit 'normal :foreground "black" 2238 (:inherit 'normal :foreground "black"
2214 :background "darkgrey")) 2239 :background "darkgrey"))
2215 (((class color) 2240 (((class color)
2216 (background dark)) 2241 (background dark))
2217 (:inherit 'normal :foreground "black" 2242 (:inherit 'normal :foreground "black"
2218 :background "darkgrey")) 2243 :background "darkgrey"))
2219 (t 2244 (t
2220 (:inherit 'normal :foreground "black" 2245 (:inherit 'normal :foreground "black"
2221 :background "darkgrey")))) 2246 :background "darkgrey"))))
2222#+end_src 2247#+end_src
2223 2248
2224** TODO Gnus 2249** TODO Gnus
@@ -2243,9 +2268,9 @@ See [[https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/mast
2243 2268
2244#+begin_src emacs-lisp :noweb-ref settings 2269#+begin_src emacs-lisp :noweb-ref settings
2245 (setq-default elfeed-db-directory 2270 (setq-default elfeed-db-directory
2246 (expand-file-name "elfeed/db" 2271 (expand-file-name "elfeed/db"
2247 (or (getenv "XDG_CACHE_HOME") 2272 (or (getenv "XDG_CACHE_HOME")
2248 "~/.cache"))) 2273 "~/.cache")))
2249#+end_src 2274#+end_src
2250 2275
2251#+begin_src emacs-lisp :noweb-ref hooks 2276#+begin_src emacs-lisp :noweb-ref hooks
@@ -2260,92 +2285,92 @@ See [[https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/mast
2260 2285
2261#+begin_src emacs-lisp :noweb-ref settings 2286#+begin_src emacs-lisp :noweb-ref settings
2262 (setq elfeed-feeds 2287 (setq elfeed-feeds
2263 `( 2288 `(
2264 ("https://computer.rip/rss.xml" tech newsletter) 2289 ("https://computer.rip/rss.xml" tech newsletter)
2265 ("https://weather-broker-cdn.api.bbci.co.uk/en/forecast/rss/3day/4315588" weather) 2290 ("https://weather-broker-cdn.api.bbci.co.uk/en/forecast/rss/3day/4315588" weather)
2266 ("https://www.realbakingwithrose.com/month?format=rss" food) 2291 ("https://www.realbakingwithrose.com/month?format=rss" food)
2267 ("https://xfnw.tilde.institute/sandcats/feed.rss" fwend pix) 2292 ("https://xfnw.tilde.institute/sandcats/feed.rss" fwend pix)
2268 ("https://www.makeworld.gq/feed.xml" blag) 2293 ("https://www.makeworld.gq/feed.xml" blag)
2269 ("https://whyarentyoucoding.com/feed.xml" comix) 2294 ("https://whyarentyoucoding.com/feed.xml" comix)
2270 ("https://xkcd.com/atom.xml" comix) 2295 ("https://xkcd.com/atom.xml" comix)
2271 ("https://falseknees.com/rss.xml" comix) 2296 ("https://falseknees.com/rss.xml" comix)
2272 ("https://chrisman.github.io/rss.xml" fwend dozens blag) 2297 ("https://chrisman.github.io/rss.xml" fwend dozens blag)
2273 ("https://tilde.team/~dozens/dreams/rss.xml" fwend dozens blag) 2298 ("https://tilde.team/~dozens/dreams/rss.xml" fwend dozens blag)
2274 ("https://society.neocities.org/rss.xml" fwend dozens) 2299 ("https://society.neocities.org/rss.xml" fwend dozens)
2275 ("https://supervegan.neocities.org/feed.xml" fwend dozens food) 2300 ("https://supervegan.neocities.org/feed.xml" fwend dozens food)
2276 ("https://blog.astrosnail.pt.eu.org/feed.atom" tech blag) 2301 ("https://blog.astrosnail.pt.eu.org/feed.atom" tech blag)
2277 ("https://www.greghendershott.com/feeds/all.atom.xml" tech blag) 2302 ("https://www.greghendershott.com/feeds/all.atom.xml" tech blag)
2278 ("https://hans.gerwitz.com/feeds/writing.rss" fwend) 2303 ("https://hans.gerwitz.com/feeds/writing.rss" fwend)
2279 ("http://planet.lisp.org/rss20.xml" tech lisp) 2304 ("http://planet.lisp.org/rss20.xml" tech lisp)
2280 ("https://wflewis.com/feed.xml" blag fwend) 2305 ("https://wflewis.com/feed.xml" blag fwend)
2281 ("HTTPS://atthis.link/rss.xml" blag tech) 2306 ("HTTPS://atthis.link/rss.xml" blag tech)
2282 ("https://rachelbythebay.com/w/atom.xml" blag tech) 2307 ("https://rachelbythebay.com/w/atom.xml" blag tech)
2283 ("https://notes.neeasade.net/rss_full.xml" blag tech) 2308 ("https://notes.neeasade.net/rss_full.xml" blag tech)
2284 ("https://www.uninformativ.de/blog/feeds/en.atom" blag tech) 2309 ("https://www.uninformativ.de/blog/feeds/en.atom" blag tech)
2285 ("http://blog.z3bra.org/rss/feed.xml" blag tech) 2310 ("http://blog.z3bra.org/rss/feed.xml" blag tech)
2286 ("https://blog.sanctum.geek.nz/feed/" blag tech) 2311 ("https://blog.sanctum.geek.nz/feed/" blag tech)
2287 ("https://drewdevault.com/blog/index.xml" blag tech) 2312 ("https://drewdevault.com/blog/index.xml" blag tech)
2288 ("https://usesthis.com/feed.atom" tech) 2313 ("https://usesthis.com/feed.atom" tech)
2289 ("https://occasionallycogent.com/feed.xml" blag) 2314 ("https://occasionallycogent.com/feed.xml" blag)
2290 ("https://www.murilopereira.com/index.xml" blag tech) 2315 ("https://www.murilopereira.com/index.xml" blag tech)
2291 ("https://botanistinthekitchen.blog/feed/" blag food) 2316 ("https://botanistinthekitchen.blog/feed/" blag food)
2292 ("https://www.careercenterbr.com/feed/" work) 2317 ("https://www.careercenterbr.com/feed/" work)
2293 ("https://blog.ebrpl.com/feed/" work) 2318 ("https://blog.ebrpl.com/feed/" work)
2294 (,(concat ; long-ass url 2319 (,(concat ; long-ass url
2295 "https://lemmy.ml/feeds/front/" 2320 "https://lemmy.ml/feeds/front/"
2296 "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9." 2321 "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9."
2297 "eyJpZCI6MTY4MjQsImlzcyI6ImxlbW15Lm1sIn0" 2322 "eyJpZCI6MTY4MjQsImlzcyI6ImxlbW15Lm1sIn0"
2298 ".yE2zUGjvlEuTZZi3TiF9HR7L7ITM9f_" 2323 ".yE2zUGjvlEuTZZi3TiF9HR7L7ITM9f_"
2299 "fQnquyYLgdJ4.xml?sort=Active") 2324 "fQnquyYLgdJ4.xml?sort=Active")
2300 news) 2325 news)
2301 ("https://lobste.rs/rss" news tech) 2326 ("https://lobste.rs/rss" news tech)
2302 ("https://feeds.npr.org/1001/rss.xml" news) 2327 ("https://feeds.npr.org/1001/rss.xml" news)
2303 (,(concat ; long-ass url 2328 (,(concat ; long-ass url
2304 "https://tilde.news/rss?token=" 2329 "https://tilde.news/rss?token="
2305 "FvdFj8rQkhrBy9j1yON1t6RYKDdcuG1MoUlyvRICmbgDGCf2JTWAEObDhdgt") 2330 "FvdFj8rQkhrBy9j1yON1t6RYKDdcuG1MoUlyvRICmbgDGCf2JTWAEObDhdgt")
2306 news tildes tech) 2331 news tildes tech)
2307 ("https://www.acdw.net/atom.xml" fwend) 2332 ("https://www.acdw.net/atom.xml" fwend)
2308 ("https://envs.net/~lucidiot/rsrsss/feed.xml" fwend) 2333 ("https://envs.net/~lucidiot/rsrsss/feed.xml" fwend)
2309 ("https://planet.emacslife.com/atom.xml" emacs tech) 2334 ("https://planet.emacslife.com/atom.xml" emacs tech)
2310 ("http://tilde.town/~lucidiot/fridaypostcard.xml" tildes art) 2335 ("http://tilde.town/~lucidiot/fridaypostcard.xml" tildes art)
2311 ("https://quasivoid.net/feed.atom" tildes) 2336 ("https://quasivoid.net/feed.atom" tildes)
2312 ("https://benjaminwil.info/feed.xml" tildes fwend) 2337 ("https://benjaminwil.info/feed.xml" tildes fwend)
2313 ("https://benjaminwil.info/antisocial/feed.xml" tildes) 2338 ("https://benjaminwil.info/antisocial/feed.xml" tildes)
2314 ("https://blog.ryliejamesthomas.net/feed/" tildes) 2339 ("https://blog.ryliejamesthomas.net/feed/" tildes)
2315 ("https://p1k3.com/feed" tildes) 2340 ("https://p1k3.com/feed" tildes)
2316 ("https://cosmic.voyage/rss.xml" tildes fiction sci-fi) 2341 ("https://cosmic.voyage/rss.xml" tildes fiction sci-fi)
2317 ("https://jackreid.xyz/index.xml" tildes) 2342 ("https://jackreid.xyz/index.xml" tildes)
2318 ("http://lambdacreate.com/static/feed.rss" tildes fwend) 2343 ("http://lambdacreate.com/static/feed.rss" tildes fwend)
2319 ("https://gaffen.co.uk/feed.xml" tildes) 2344 ("https://gaffen.co.uk/feed.xml" tildes)
2320 ("https://gmb.21x2.net/rss.xml" tildes) 2345 ("https://gmb.21x2.net/rss.xml" tildes)
2321 ("https://www.insom.me.uk/feed.xml" tildes) 2346 ("https://www.insom.me.uk/feed.xml" tildes)
2322 ("https://invisibleup.com/atom.xml" tildes) 2347 ("https://invisibleup.com/atom.xml" tildes)
2323 ("https://m455.casa/feed.rss" tildes fwend) 2348 ("https://m455.casa/feed.rss" tildes fwend)
2324 ("https://petras.space/index.xml" tildes) 2349 ("https://petras.space/index.xml" tildes)
2325 ("https://www.benovermyer.com/post/index.xml" tildes) 2350 ("https://www.benovermyer.com/post/index.xml" tildes)
2326 ("https://tilde.town/~trm/blog/atom.xml" tildes) 2351 ("https://tilde.town/~trm/blog/atom.xml" tildes)
2327 ("https://tilde.team/feed.rss" tildes) 2352 ("https://tilde.team/feed.rss" tildes)
2328 ("http://ajroach42.com/feed.xml" tildes) 2353 ("http://ajroach42.com/feed.xml" tildes)
2329 ("http://tilde.town/~mroik/blog/rss.xml" tildes) 2354 ("http://tilde.town/~mroik/blog/rss.xml" tildes)
2330 ("https://hamster.dance/blog/rss/" tildes) 2355 ("https://hamster.dance/blog/rss/" tildes)
2331 ("https://m455.neocities.org/feed.rss" tildes fwend) 2356 ("https://m455.neocities.org/feed.rss" tildes fwend)
2332 ("https://eli.li/feed.rss" tildes fwend) 2357 ("https://eli.li/feed.rss" tildes fwend)
2333 ("https://aiweirdness.com/rss" tech) 2358 ("https://aiweirdness.com/rss" tech)
2334 ("http://tilde.town/~m455/javapool.rss" tilde) 2359 ("http://tilde.town/~m455/javapool.rss" tilde)
2335 ("https://spwhitton.name/blog/index.rss" blag) 2360 ("https://spwhitton.name/blog/index.rss" blag)
2336 (,(concat "https://www.theadvocate.com/search/?" 2361 (,(concat "https://www.theadvocate.com/search/?"
2337 ;; Let's Build A URL!!! 2362 ;; Let's Build A URL!!!
2338 "f=rss" ; RSS feed 2363 "f=rss" ; RSS feed
2339 "&l=10" ; 10 most recent (length) 2364 "&l=10" ; 10 most recent (length)
2340 "&c[]=" ; I'm guessing ... categories? 2365 "&c[]=" ; I'm guessing ... categories?
2341 "baton_rouge/news*," 2366 "baton_rouge/news*,"
2342 "baton_rouge/opinion*" 2367 "baton_rouge/opinion*"
2343 "?t=article" ; type=article 2368 "?t=article" ; type=article
2344 ) 2369 )
2345 news) 2370 news)
2346 ("https://esoteric.codes/rss" tech) 2371 ("https://esoteric.codes/rss" tech)
2347 ("https://wphicks.github.io/feed.xml" blag) 2372 ("https://wphicks.github.io/feed.xml" blag)
2348 )) 2373 ))
2349#+end_src 2374#+end_src
2350 2375
2351** 0x0 (null pointer) :package: 2376** 0x0 (null pointer) :package:
@@ -2355,7 +2380,7 @@ others.
2355 2380
2356#+begin_src emacs-lisp :noweb-ref packages 2381#+begin_src emacs-lisp :noweb-ref packages
2357 (straight-use-package '(0x0 2382 (straight-use-package '(0x0
2358 :repo "https://git.sr.ht/~zge/nullpointer-emacs")) 2383 :repo "https://git.sr.ht/~zge/nullpointer-emacs"))
2359#+end_src 2384#+end_src
2360 2385
2361#+begin_src emacs-lisp :noweb-ref settings 2386#+begin_src emacs-lisp :noweb-ref settings
@@ -2368,27 +2393,27 @@ others.
2368 2393
2369#+begin_src emacs-lisp :noweb-ref packages 2394#+begin_src emacs-lisp :noweb-ref packages
2370 (straight-use-package '(elpher 2395 (straight-use-package '(elpher
2371 :repo "git://thelambdalab.xyz/elpher.git")) 2396 :repo "git://thelambdalab.xyz/elpher.git"))
2372#+end_src 2397#+end_src
2373 2398
2374#+begin_src emacs-lisp :noweb-ref settings 2399#+begin_src emacs-lisp :noweb-ref settings
2375 (setq-default elpher-ipv4-always t) 2400 (setq-default elpher-ipv4-always t)
2376 2401
2377 (doremi-face-set 'elpher-gemini-heading1 2402 (doremi-face-set 'elpher-gemini-heading1
2378 '((t (:inherit (modus-theme-heading-1) 2403 '((t (:inherit (modus-theme-heading-1)
2379 :height 1.0)))) 2404 :height 1.0))))
2380 (doremi-face-set 'elpher-gemini-heading2 2405 (doremi-face-set 'elpher-gemini-heading2
2381 '((t (:inherit (modus-theme-heading-2) 2406 '((t (:inherit (modus-theme-heading-2)
2382 :height 1.0)))) 2407 :height 1.0))))
2383 (doremi-face-set 'elpher-gemini-heading3 2408 (doremi-face-set 'elpher-gemini-heading3
2384 '((t (:inherit (modus-theme-heading-3) 2409 '((t (:inherit (modus-theme-heading-3)
2385 :height 1.0)))) 2410 :height 1.0))))
2386#+end_src 2411#+end_src
2387 2412
2388#+begin_src emacs-lisp :noweb-ref no-littering 2413#+begin_src emacs-lisp :noweb-ref no-littering
2389 (setq-default elpher-certificate-directory 2414 (setq-default elpher-certificate-directory
2390 (no-littering-expand-var-file-name 2415 (no-littering-expand-var-file-name
2391 "elpher-certificates/")) 2416 "elpher-certificates/"))
2392#+end_src 2417#+end_src
2393 2418
2394#+begin_src emacs-lisp :noweb-ref bindings 2419#+begin_src emacs-lisp :noweb-ref bindings
@@ -2407,28 +2432,28 @@ others.
2407 2432
2408#+begin_src emacs-lisp :noweb-ref packages 2433#+begin_src emacs-lisp :noweb-ref packages
2409 (straight-use-package '(gemini-mode 2434 (straight-use-package '(gemini-mode
2410 :repo "https://git.carcosa.net/jmcbray/gemini.el.git")) 2435 :repo "https://git.carcosa.net/jmcbray/gemini.el.git"))
2411#+end_src 2436#+end_src
2412 2437
2413#+begin_src emacs-lisp :noweb-ref settings 2438#+begin_src emacs-lisp :noweb-ref settings
2414 (add-to-list 'auto-mode-alist 2439 (add-to-list 'auto-mode-alist
2415 '("\\.\\(gemini\\|gmi\\)\\'" . gemini-mode)) 2440 '("\\.\\(gemini\\|gmi\\)\\'" . gemini-mode))
2416 2441
2417 (doremi-face-set 'gemini-heading-face-1 2442 (doremi-face-set 'gemini-heading-face-1
2418 '((t (:inherit (elpher-gemini-heading1))))) 2443 '((t (:inherit (elpher-gemini-heading1)))))
2419 (doremi-face-set 'gemini-heading-face2 2444 (doremi-face-set 'gemini-heading-face2
2420 '((t (:inherit (elpher-gemini-heading2))))) 2445 '((t (:inherit (elpher-gemini-heading2)))))
2421 (doremi-face-set 'gemini-heading-face3 2446 (doremi-face-set 'gemini-heading-face3
2422 '((t (:inherit (elpher-gemini-heading3))))) 2447 '((t (:inherit (elpher-gemini-heading3)))))
2423#+end_src 2448#+end_src
2424 2449
2425*** Gemini-write :package: 2450*** Gemini-write :package:
2426 2451
2427#+begin_src emacs-lisp :noweb-ref packages 2452#+begin_src emacs-lisp :noweb-ref packages
2428 (straight-use-package '(gemini-write 2453 (straight-use-package '(gemini-write
2429 :repo "https://alexschroeder.ch/cgit/gemini-write" 2454 :repo "https://alexschroeder.ch/cgit/gemini-write"
2430 :fork (:repo "https://tildegit.org/acdw/gemini-write" 2455 :fork (:repo "https://tildegit.org/acdw/gemini-write"
2431 :branch "main"))) 2456 :branch "main")))
2432 2457
2433 (with-eval-after-load 'elpher 2458 (with-eval-after-load 'elpher
2434 (require 'gemini-write)) 2459 (require 'gemini-write))
@@ -2448,7 +2473,7 @@ one day.
2448 "Start an `eshell', or bury its buffer if focused." 2473 "Start an `eshell', or bury its buffer if focused."
2449 (interactive) 2474 (interactive)
2450 (if (string= (buffer-name) "*eshell*") ;; XXX: brittle 2475 (if (string= (buffer-name) "*eshell*") ;; XXX: brittle
2451 (bury-buffer) 2476 (bury-buffer)
2452 (eshell))) 2477 (eshell)))
2453#+end_src 2478#+end_src
2454 2479
@@ -2526,10 +2551,10 @@ I want to use the newest version of Org that I can.
2526 (defun acdw/org-mode-prettify () 2551 (defun acdw/org-mode-prettify ()
2527 "Prettify `org-mode'." 2552 "Prettify `org-mode'."
2528 (dolist (cell '(("[ ]" . ?☐) ("[X]" . ?☑) ("[-]" . ?◐) 2553 (dolist (cell '(("[ ]" . ?☐) ("[X]" . ?☑) ("[-]" . ?◐)
2529 ("#+BEGIN_SRC" . ?✎) ("#+begin_src" . ?✎) 2554 ("#+BEGIN_SRC" . ?✎) ("#+begin_src" . ?✎)
2530 ("#+BEGIN_QUOTE" . ?❝) ("#+begin_quote" . ?❝) 2555 ("#+BEGIN_QUOTE" . ?❝) ("#+begin_quote" . ?❝)
2531 ("#+END_QUOTE" . ?❞) ("#+end_quote" . ?❞) 2556 ("#+END_QUOTE" . ?❞) ("#+end_quote" . ?❞)
2532 ("#+END_SRC" . ?■) ("#+end_src" . ?■))) 2557 ("#+END_SRC" . ?■) ("#+end_src" . ?■)))
2533 (add-to-list 'prettify-symbols-alist cell :append)) 2558 (add-to-list 'prettify-symbols-alist cell :append))
2534 (prettify-symbols-mode +1)) 2559 (prettify-symbols-mode +1))
2535#+end_src 2560#+end_src
@@ -2545,23 +2570,23 @@ from [[https://github.com/KaratasFurkan/.emacs.d#org-1][Furkan Karataş]].
2545#+begin_src emacs-lisp :noweb-ref modes 2570#+begin_src emacs-lisp :noweb-ref modes
2546 (with-eval-after-load 'org 2571 (with-eval-after-load 'org
2547 (font-lock-add-keywords 'org-mode 2572 (font-lock-add-keywords 'org-mode
2548 '(("^ *\\([-]\\) " 2573 '(("^ *\\([-]\\) "
2549 (0 (prog1 () 2574 (0 (prog1 ()
2550 (compose-region (match-beginning 1) (match-end 1) "•")))))) 2575 (compose-region (match-beginning 1) (match-end 1) "•"))))))
2551 (font-lock-add-keywords 'org-mode 2576 (font-lock-add-keywords 'org-mode
2552 '(("^ *\\([+]\\) " 2577 '(("^ *\\([+]\\) "
2553 (0 (prog1 () 2578 (0 (prog1 ()
2554 (compose-region (match-beginning 1) (match-end 1) "◦")))))) 2579 (compose-region (match-beginning 1) (match-end 1) "◦"))))))
2555 2580
2556 (defface org-checkbox-done-text 2581 (defface org-checkbox-done-text
2557 '((t (:inherit 'font-lock-comment-face :slant normal))) 2582 '((t (:inherit 'font-lock-comment-face :slant normal)))
2558 "Face for the text part of a checked org-mode checkbox." 2583 "Face for the text part of a checked org-mode checkbox."
2559 :group 'org) 2584 :group 'org)
2560 2585
2561 (font-lock-add-keywords 2586 (font-lock-add-keywords
2562 'org-mode 2587 'org-mode
2563 `(("^[ \t]*\\(?:[-+*]\\|[0-9]+[).]\\)[ \t]+\\(\\(?:\\[@\\(?:start:\\)?[0-9]+\\][ \t]*\\)?\\[\\(?:X\\|\\([0-9]+\\)/\\2\\)\\][^\n]*\n\\)" 2588 `(("^[ \t]*\\(?:[-+*]\\|[0-9]+[).]\\)[ \t]+\\(\\(?:\\[@\\(?:start:\\)?[0-9]+\\][ \t]*\\)?\\[\\(?:X\\|\\([0-9]+\\)/\\2\\)\\][^\n]*\n\\)"
2564 1 'org-checkbox-done-text prepend)) 2589 1 'org-checkbox-done-text prepend))
2565 'append)) 2590 'append))
2566#+end_src 2591#+end_src
2567 2592
@@ -2569,14 +2594,14 @@ from [[https://github.com/KaratasFurkan/.emacs.d#org-1][Furkan Karataş]].
2569 2594
2570#+begin_src emacs-lisp :noweb-ref packages 2595#+begin_src emacs-lisp :noweb-ref packages
2571 (straight-use-package '(org-appear 2596 (straight-use-package '(org-appear
2572 :host github 2597 :host github
2573 :repo "awth13/org-appear")) 2598 :repo "awth13/org-appear"))
2574#+end_src 2599#+end_src
2575 2600
2576#+begin_src emacs-lisp :noweb-ref settings 2601#+begin_src emacs-lisp :noweb-ref settings
2577 (setq-default org-appear-autoemphasis t 2602 (setq-default org-appear-autoemphasis t
2578 org-appear-autolinks nil 2603 org-appear-autolinks nil
2579 org-appear-autosubmarkers t) 2604 org-appear-autosubmarkers t)
2580#+end_src 2605#+end_src
2581 2606
2582#+begin_src emacs-lisp :noweb-ref hooks 2607#+begin_src emacs-lisp :noweb-ref hooks
@@ -2588,16 +2613,16 @@ from [[https://github.com/KaratasFurkan/.emacs.d#org-1][Furkan Karataş]].
2588#+begin_src emacs-lisp :noweb-ref settings 2613#+begin_src emacs-lisp :noweb-ref settings
2589 (with-eval-after-load 'org-tempo 2614 (with-eval-after-load 'org-tempo
2590 (dolist (cell '(("el" . "src emacs-lisp") 2615 (dolist (cell '(("el" . "src emacs-lisp")
2591 ("cr" . "src emacs-lisp :noweb-ref requires") 2616 ("cr" . "src emacs-lisp :noweb-ref requires")
2592 ("cf" . "src emacs-lisp :noweb-ref functions") 2617 ("cf" . "src emacs-lisp :noweb-ref functions")
2593 ("cs" . "src emacs-lisp :noweb-ref settings") 2618 ("cs" . "src emacs-lisp :noweb-ref settings")
2594 ("cm" . "src emacs-lisp :noweb-ref modes") 2619 ("cm" . "src emacs-lisp :noweb-ref modes")
2595 ("cl" . "src emacs-lisp :noweb-ref linux-specific") 2620 ("cl" . "src emacs-lisp :noweb-ref linux-specific")
2596 ("cw" . "src emacs-lisp :noweb-ref windows-specific") 2621 ("cw" . "src emacs-lisp :noweb-ref windows-specific")
2597 ("cp" . "src emacs-lisp :noweb-ref packages") 2622 ("cp" . "src emacs-lisp :noweb-ref packages")
2598 ("ch" . "src emacs-lisp :noweb-ref hooks") 2623 ("ch" . "src emacs-lisp :noweb-ref hooks")
2599 ("cb" . "src emacs-lisp :noweb-ref bindings") 2624 ("cb" . "src emacs-lisp :noweb-ref bindings")
2600 ("cnl" . "src emacs-lisp :noweb-ref no-littering"))) 2625 ("cnl" . "src emacs-lisp :noweb-ref no-littering")))
2601 (add-to-list 'org-structure-template-alist cell))) 2626 (add-to-list 'org-structure-template-alist cell)))
2602#+end_src 2627#+end_src
2603 2628
@@ -2611,7 +2636,7 @@ from [[https://github.com/KaratasFurkan/.emacs.d#org-1][Furkan Karataş]].
2611 ;; MAYBE: Use `org-element-lineage'. 2636 ;; MAYBE: Use `org-element-lineage'.
2612 (when-let* ((parent (org-element-property :parent element))) 2637 (when-let* ((parent (org-element-property :parent element)))
2613 (or (eq type (car parent)) 2638 (or (eq type (car parent))
2614 (unpackaged/org-element-descendant-of type parent)))) 2639 (unpackaged/org-element-descendant-of type parent))))
2615 2640
2616 (defun unpackaged/org-return-dwim (&optional default) 2641 (defun unpackaged/org-return-dwim (&optional default)
2617 "A helpful replacement for `org-return'. With prefix, call `org-return'. 2642 "A helpful replacement for `org-return'. With prefix, call `org-return'.
@@ -2623,94 +2648,94 @@ from [[https://github.com/KaratasFurkan/.emacs.d#org-1][Furkan Karataş]].
2623 ;; http://kitchingroup.cheme.cmu.edu/blog/2017/04/09/A-better-return-in-org-mode/ 2648 ;; http://kitchingroup.cheme.cmu.edu/blog/2017/04/09/A-better-return-in-org-mode/
2624 (interactive "P") 2649 (interactive "P")
2625 (if default 2650 (if default
2626 (org-return) 2651 (org-return)
2627 (cond 2652 (cond
2628 ;; Act depending on context around point. 2653 ;; Act depending on context around point.
2629 2654
2630 ;; NOTE: I prefer RET to not follow links, but by uncommenting 2655 ;; NOTE: I prefer RET to not follow links, but by uncommenting
2631 ;; this block, links will be followed. 2656 ;; this block, links will be followed.
2632 ;; FURTHER NOTE: Ideally, I would follow links unless point 2657 ;; FURTHER NOTE: Ideally, I would follow links unless point
2633 ;; /appeared/ to be at the end of the line (even if it's still 2658 ;; /appeared/ to be at the end of the line (even if it's still
2634 ;; inside the link) -- when it would do `org-return'. That 2659 ;; inside the link) -- when it would do `org-return'. That
2635 ;; would take some /doing/, however. 2660 ;; would take some /doing/, however.
2636 2661
2637 ;; ((eq 'link (car (org-element-context))) 2662 ;; ((eq 'link (car (org-element-context)))
2638 ;; ;; Link: Open it. 2663 ;; ;; Link: Open it.
2639 ;; (org-open-at-point-global)) 2664 ;; (org-open-at-point-global))
2640 2665
2641 ((org-at-heading-p) 2666 ((org-at-heading-p)
2642 ;; Heading: Move to position after entry content. 2667 ;; Heading: Move to position after entry content.
2643 ;; NOTE: This is probably the most interesting feature of this function. 2668 ;; NOTE: This is probably the most interesting feature of this function.
2644 (let ((heading-start (org-entry-beginning-position))) 2669 (let ((heading-start (org-entry-beginning-position)))
2645 (goto-char (org-entry-end-position)) 2670 (goto-char (org-entry-end-position))
2646 (cond ((and (org-at-heading-p) 2671 (cond ((and (org-at-heading-p)
2647 (= heading-start (org-entry-beginning-position))) 2672 (= heading-start (org-entry-beginning-position)))
2648 ;; Entry ends on its heading; add newline after 2673 ;; Entry ends on its heading; add newline after
2649 (end-of-line) 2674 (end-of-line)
2650 (insert "\n\n")) 2675 (insert "\n\n"))
2651 (t 2676 (t
2652 ;; Entry ends after its heading; back up 2677 ;; Entry ends after its heading; back up
2653 (forward-line -1) 2678 (forward-line -1)
2654 (end-of-line) 2679 (end-of-line)
2655 (when (org-at-heading-p) 2680 (when (org-at-heading-p)
2656 ;; At the same heading 2681 ;; At the same heading
2657 (forward-line) 2682 (forward-line)
2658 (insert "\n") 2683 (insert "\n")
2659 (forward-line -1)) 2684 (forward-line -1))
2660 ;; FIXME: looking-back is supposed to be called with 2685 ;; FIXME: looking-back is supposed to be called with
2661 ;; more arguments. 2686 ;; more arguments.
2662 (while (not (looking-back (rx 2687 (while (not (looking-back (rx
2663 (repeat 3 2688 (repeat 3
2664 (seq (optional blank) 2689 (seq (optional blank)
2665 "\n"))) 2690 "\n")))
2666 nil)) 2691 nil))
2667 (insert "\n")) 2692 (insert "\n"))
2668 (forward-line -1))))) 2693 (forward-line -1)))))
2669 2694
2670 ((org-at-item-checkbox-p) 2695 ((org-at-item-checkbox-p)
2671 ;; Checkbox: Insert new item with checkbox. 2696 ;; Checkbox: Insert new item with checkbox.
2672 (org-insert-todo-heading nil)) 2697 (org-insert-todo-heading nil))
2673 2698
2674 ((org-in-item-p) 2699 ((org-in-item-p)
2675 ;; Plain list. Yes, this gets a little complicated... 2700 ;; Plain list. Yes, this gets a little complicated...
2676 (let ((context (org-element-context))) 2701 (let ((context (org-element-context)))
2677 (if (or (eq 'plain-list (car context)) ; First item in list 2702 (if (or (eq 'plain-list (car context)) ; First item in list
2678 (and (eq 'item (car context)) 2703 (and (eq 'item (car context))
2679 (not (eq (org-element-property :contents-begin context) 2704 (not (eq (org-element-property :contents-begin context)
2680 (org-element-property :contents-end context)))) 2705 (org-element-property :contents-end context))))
2681 ;; Element in list item, e.g. a link 2706 ;; Element in list item, e.g. a link
2682 (unpackaged/org-element-descendant-of 'item context)) 2707 (unpackaged/org-element-descendant-of 'item context))
2683 ;; Non-empty item: Add new item. 2708 ;; Non-empty item: Add new item.
2684 (org-insert-item) 2709 (org-insert-item)
2685 ;; Empty item: Close the list. 2710 ;; Empty item: Close the list.
2686 ;; TODO: Do this with org functions rather than operating 2711 ;; TODO: Do this with org functions rather than operating
2687 ;; on the text. Can't seem to find the right function. 2712 ;; on the text. Can't seem to find the right function.
2688 (delete-region (line-beginning-position) (line-end-position)) 2713 (delete-region (line-beginning-position) (line-end-position))
2689 (insert "\n")))) 2714 (insert "\n"))))
2690 2715
2691 ((when (fboundp 'org-inlinetask-in-task-p) 2716 ((when (fboundp 'org-inlinetask-in-task-p)
2692 (org-inlinetask-in-task-p)) 2717 (org-inlinetask-in-task-p))
2693 ;; Inline task: Don't insert a new heading. 2718 ;; Inline task: Don't insert a new heading.
2694 (org-return)) 2719 (org-return))
2695 2720
2696 ((org-at-table-p) 2721 ((org-at-table-p)
2697 (cond ((save-excursion 2722 (cond ((save-excursion
2698 (beginning-of-line) 2723 (beginning-of-line)
2699 ;; See `org-table-next-field'. 2724 ;; See `org-table-next-field'.
2700 (cl-loop with end = (line-end-position) 2725 (cl-loop with end = (line-end-position)
2701 for cell = (org-element-table-cell-parser) 2726 for cell = (org-element-table-cell-parser)
2702 always (equal (org-element-property :contents-begin cell) 2727 always (equal (org-element-property :contents-begin cell)
2703 (org-element-property :contents-end cell)) 2728 (org-element-property :contents-end cell))
2704 while (re-search-forward "|" end t))) 2729 while (re-search-forward "|" end t)))
2705 ;; Empty row: end the table. 2730 ;; Empty row: end the table.
2706 (delete-region (line-beginning-position) (line-end-position)) 2731 (delete-region (line-beginning-position) (line-end-position))
2707 (org-return)) 2732 (org-return))
2708 (t 2733 (t
2709 ;; Non-empty row: call `org-return'. 2734 ;; Non-empty row: call `org-return'.
2710 (org-return)))) 2735 (org-return))))
2711 (t 2736 (t
2712 ;; All other cases: call `org-return'. 2737 ;; All other cases: call `org-return'.
2713 (org-return))))) 2738 (org-return)))))
2714#+end_src 2739#+end_src
2715 2740
2716#+begin_src emacs-lisp :noweb-ref bindings 2741#+begin_src emacs-lisp :noweb-ref bindings
@@ -2727,34 +2752,34 @@ from [[https://github.com/KaratasFurkan/.emacs.d#org-1][Furkan Karataş]].
2727 exist after each headings's drawers." 2752 exist after each headings's drawers."
2728 (interactive "P") 2753 (interactive "P")
2729 (org-map-entries (lambda () 2754 (org-map-entries (lambda ()
2730 (org-with-wide-buffer 2755 (org-with-wide-buffer
2731 ;; `org-map-entries' narrows the buffer, which prevents us 2756 ;; `org-map-entries' narrows the buffer, which prevents us
2732 ;; from seeing newlines before the current heading, so we 2757 ;; from seeing newlines before the current heading, so we
2733 ;; do this part widened. 2758 ;; do this part widened.
2734 (while (not (looking-back "\n\n" nil)) 2759 (while (not (looking-back "\n\n" nil))
2735 ;; Insert blank lines before heading. 2760 ;; Insert blank lines before heading.
2736 (insert "\n"))) 2761 (insert "\n")))
2737 (let ((end (org-entry-end-position))) 2762 (let ((end (org-entry-end-position)))
2738 ;; Insert blank lines before entry content 2763 ;; Insert blank lines before entry content
2739 (forward-line) 2764 (forward-line)
2740 (while (and (org-at-planning-p) 2765 (while (and (org-at-planning-p)
2741 (< (point) (point-max))) 2766 (< (point) (point-max)))
2742 ;; Skip planning lines 2767 ;; Skip planning lines
2743 (forward-line)) 2768 (forward-line))
2744 (while (re-search-forward org-drawer-regexp end t) 2769 (while (re-search-forward org-drawer-regexp end t)
2745 ;; Skip drawers. You might think that `org-at-drawer-p' 2770 ;; Skip drawers. You might think that `org-at-drawer-p'
2746 ;; would suffice, but for some reason it doesn't work 2771 ;; would suffice, but for some reason it doesn't work
2747 ;; correctly when operating on hidden text. This 2772 ;; correctly when operating on hidden text. This
2748 ;; works, taken from `org-agenda-get-some-entry-text'. 2773 ;; works, taken from `org-agenda-get-some-entry-text'.
2749 (re-search-forward "^[ \t]*:END:.*\n?" end t) 2774 (re-search-forward "^[ \t]*:END:.*\n?" end t)
2750 (goto-char (match-end 0))) 2775 (goto-char (match-end 0)))
2751 (unless (or (= (point) (point-max)) 2776 (unless (or (= (point) (point-max))
2752 (org-at-heading-p) 2777 (org-at-heading-p)
2753 (looking-at-p "\n")) 2778 (looking-at-p "\n"))
2754 (insert "\n")))) 2779 (insert "\n"))))
2755 t (if prefix 2780 t (if prefix
2756 nil 2781 nil
2757 'tree))) 2782 'tree)))
2758#+end_src 2783#+end_src
2759 2784
2760I fix the headline spacing every time I save. 2785I fix the headline spacing every time I save.
@@ -2763,7 +2788,7 @@ I fix the headline spacing every time I save.
2763 (defun hook--org-mode-fix-blank-lines () 2788 (defun hook--org-mode-fix-blank-lines ()
2764 (when (eq major-mode 'org-mode) 2789 (when (eq major-mode 'org-mode)
2765 (let ((current-prefix-arg 4)) ; Emulate C-u 2790 (let ((current-prefix-arg 4)) ; Emulate C-u
2766 (call-interactively 'unpackaged/org-fix-blank-lines)))) 2791 (call-interactively 'unpackaged/org-fix-blank-lines))))
2767 2792
2768 (add-hook 'before-save-hook #'hook--org-mode-fix-blank-lines) 2793 (add-hook 'before-save-hook #'hook--org-mode-fix-blank-lines)
2769#+end_src 2794#+end_src
@@ -2780,19 +2805,19 @@ Inspo:
2780 2805
2781#+begin_src emacs-lisp :noweb-ref settings 2806#+begin_src emacs-lisp :noweb-ref settings
2782 (setq-default org-agenda-files ; look for files in ~/org 2807 (setq-default org-agenda-files ; look for files in ~/org
2783 (list org-directory) 2808 (list org-directory)
2784 ;; agenda 2809 ;; agenda
2785 org-agenda-span 5 2810 org-agenda-span 5
2786 org-agenda-skip-scheduled-if-done t 2811 org-agenda-skip-scheduled-if-done t
2787 org-agenda-skip-deadline-if-done t 2812 org-agenda-skip-deadline-if-done t
2788 org-deadline-warning-days 2 2813 org-deadline-warning-days 2
2789 ;; logging 2814 ;; logging
2790 org-log-into-drawer "LOGBOOK" 2815 org-log-into-drawer "LOGBOOK"
2791 org-log-done t 2816 org-log-done t
2792 ;; archive 2817 ;; archive
2793 org-archive-location (concat (expand-file-name ".archive.org" 2818 org-archive-location (concat (expand-file-name ".archive.org"
2794 org-directory) 2819 org-directory)
2795 "::")) 2820 "::"))
2796#+end_src 2821#+end_src
2797 2822
2798#+begin_src emacs-lisp :noweb-ref bindings 2823#+begin_src emacs-lisp :noweb-ref bindings
@@ -2841,12 +2866,12 @@ altogether. Hm.
2841 2866
2842#+begin_src emacs-lisp :noweb-ref settings 2867#+begin_src emacs-lisp :noweb-ref settings
2843 (setq-default org-todo-keywords 2868 (setq-default org-todo-keywords
2844 '((sequence 2869 '((sequence
2845 "TODO(t)" "STARTED(s)" 2870 "TODO(t)" "STARTED(s)"
2846 "WAITING(w@/!)" "SOMEDAY(.)" 2871 "WAITING(w@/!)" "SOMEDAY(.)"
2847 "|" "DONE(x!)" "CANCELLED(c@/!)") 2872 "|" "DONE(x!)" "CANCELLED(c@/!)")
2848 (sequence "RECUR(r)" "|" "DONE(x!)") 2873 (sequence "RECUR(r)" "|" "DONE(x!)")
2849 (sequence "MEETING(m)"))) 2874 (sequence "MEETING(m)")))
2850#+end_src 2875#+end_src
2851 2876
2852** Org Capture 2877** Org Capture
@@ -2871,29 +2896,29 @@ TODO, and Diary.
2871 org-capture-templates 2896 org-capture-templates
2872 `(;; Todo -- these go to the Inbox for further processing 2897 `(;; Todo -- these go to the Inbox for further processing
2873 ("t" "Quick Task" entry 2898 ("t" "Quick Task" entry
2874 (file ,acdw/org-inbox-file) 2899 (file ,acdw/org-inbox-file)
2875 "* TODO %^{Task}\n" 2900 "* TODO %^{Task}\n"
2876 :immediate-finish t) 2901 :immediate-finish t)
2877 ("T" "Task" entry 2902 ("T" "Task" entry
2878 (file ,acdw/org-inbox-file) 2903 (file ,acdw/org-inbox-file)
2879 "* TODO %^{Task}\n") 2904 "* TODO %^{Task}\n")
2880 ("." "Today" entry 2905 ("." "Today" entry
2881 (file ,acdw/org-inbox-file) 2906 (file ,acdw/org-inbox-file)
2882 "* TODO %^{Task}\nSCHEDULED: %t\n" 2907 "* TODO %^{Task}\nSCHEDULED: %t\n"
2883 :immediate-finish t) 2908 :immediate-finish t)
2884 ;; Meetings 2909 ;; Meetings
2885 ("m" "Meeting" entry 2910 ("m" "Meeting" entry
2886 (file ,acdw/org-inbox-file) 2911 (file ,acdw/org-inbox-file)
2887 "* MEETING %^{Meeting}\n%^T\n\n%?") 2912 "* MEETING %^{Meeting}\n%^T\n\n%?")
2888 ;; Diary -- for the special Diary file 2913 ;; Diary -- for the special Diary file
2889 ("j" "Diary entry" entry 2914 ("j" "Diary entry" entry
2890 (file+olp+datetree ,acdw/org-diary-file) 2915 (file+olp+datetree ,acdw/org-diary-file)
2891 "* %U\n\n%?" 2916 "* %U\n\n%?"
2892 :empty-lines 1) 2917 :empty-lines 1)
2893 ;; Books to read 2918 ;; Books to read
2894 ("b" "Book to read" entry 2919 ("b" "Book to read" entry
2895 (file+headline "books.org" "Later") 2920 (file+headline "books.org" "Later")
2896 "* TOREAD %^{Title} 2921 "* TOREAD %^{Title}
2897 :PROPERTIES: 2922 :PROPERTIES:
2898 :Author: %^{Author} 2923 :Author: %^{Author}
2899 :END:\n" :immediate-finish t))) 2924 :END:\n" :immediate-finish t)))
@@ -2939,23 +2964,23 @@ any data loss. Here's what all that looks like.
2939#+begin_src emacs-lisp 2964#+begin_src emacs-lisp
2940 (let ((win-app-dir "~/Applications")) 2965 (let ((win-app-dir "~/Applications"))
2941 (dolist (path (list 2966 (dolist (path (list
2942 ;; Windows 2967 ;; Windows
2943 (expand-file-name "exe" win-app-dir) 2968 (expand-file-name "exe" win-app-dir)
2944 (expand-file-name "exe/bin" win-app-dir) 2969 (expand-file-name "exe/bin" win-app-dir)
2945 (expand-file-name "Git/bin" win-app-dir) 2970 (expand-file-name "Git/bin" win-app-dir)
2946 (expand-file-name "Git/usr/bin" win-app-dir) 2971 (expand-file-name "Git/usr/bin" win-app-dir)
2947 (expand-file-name "Git/mingw64/bin" win-app-dir) 2972 (expand-file-name "Git/mingw64/bin" win-app-dir)
2948 (expand-file-name "Everything" win-app-dir) 2973 (expand-file-name "Everything" win-app-dir)
2949 (expand-file-name "Win-builds/bin" win-app-dir) 2974 (expand-file-name "Win-builds/bin" win-app-dir)
2950 (expand-file-name "Z/bin" win-app-dir) 2975 (expand-file-name "Z/bin" win-app-dir)
2951 ;; Linux 2976 ;; Linux
2952 (expand-file-name "bin" user-emacs-directory) 2977 (expand-file-name "bin" user-emacs-directory)
2953 (expand-file-name "~/bin") 2978 (expand-file-name "~/bin")
2954 (expand-file-name "~/.local/bin") 2979 (expand-file-name "~/.local/bin")
2955 (expand-file-name "~/Scripts") 2980 (expand-file-name "~/Scripts")
2956 )) 2981 ))
2957 (when (file-exists-p path) 2982 (when (file-exists-p path)
2958 (add-to-list 'exec-path path :append)))) 2983 (add-to-list 'exec-path path :append))))
2959 2984
2960 ;; Set $PATH 2985 ;; Set $PATH
2961 (setenv "PATH" (mapconcat #'identity exec-path path-separator)) 2986 (setenv "PATH" (mapconcat #'identity exec-path path-separator))
@@ -2984,19 +3009,19 @@ function so I can call it in another wrapper.
2984 "Bootstrap straight.el." 3009 "Bootstrap straight.el."
2985 (defvar bootstrap-version) 3010 (defvar bootstrap-version)
2986 (let ((bootstrap-file 3011 (let ((bootstrap-file
2987 (expand-file-name 3012 (expand-file-name
2988 "straight/repos/straight.el/bootstrap.el" 3013 "straight/repos/straight.el/bootstrap.el"
2989 user-emacs-directory)) 3014 user-emacs-directory))
2990 (bootstrap-version 5)) 3015 (bootstrap-version 5))
2991 (unless (file-exists-p bootstrap-file) 3016 (unless (file-exists-p bootstrap-file)
2992 (with-current-buffer 3017 (with-current-buffer
2993 (url-retrieve-synchronously 3018 (url-retrieve-synchronously
2994 (concat 3019 (concat
2995 "https://raw.githubusercontent.com/" 3020 "https://raw.githubusercontent.com/"
2996 "raxod502/straight.el/develop/install.el") 3021 "raxod502/straight.el/develop/install.el")
2997 'silent 'inhibit-cookies) 3022 'silent 'inhibit-cookies)
2998 (goto-char (point-max)) 3023 (goto-char (point-max))
2999 (eval-print-last-sexp))) 3024 (eval-print-last-sexp)))
3000 (load bootstrap-file nil 'nomessage))) 3025 (load bootstrap-file nil 'nomessage)))
3001#+end_src 3026#+end_src
3002 3027
@@ -3008,22 +3033,22 @@ the repo using git, /then/ run the bootstrap code.
3008 (when (executable-find "git") 3033 (when (executable-find "git")
3009 (unless (ignore-errors (acdw/bootstrap-straight)) 3034 (unless (ignore-errors (acdw/bootstrap-straight))
3010 (let ((msg "Straight.el didn't bootstrap correctly. Cloning directly")) 3035 (let ((msg "Straight.el didn't bootstrap correctly. Cloning directly"))
3011 (message "%s..." msg) 3036 (message "%s..." msg)
3012 (call-process "git" nil 3037 (call-process "git" nil
3013 (get-buffer-create "*bootstrap-straight-messages*") nil 3038 (get-buffer-create "*bootstrap-straight-messages*") nil
3014 "clone" 3039 "clone"
3015 "https://github.com/raxod502/straight.el" 3040 "https://github.com/raxod502/straight.el"
3016 (expand-file-name "straight/repos/straight.el" 3041 (expand-file-name "straight/repos/straight.el"
3017 user-emacs-directory)) 3042 user-emacs-directory))
3018 (message "%s...Done." msg) 3043 (message "%s...Done." msg)
3019 (acdw/bootstrap-straight)))) 3044 (acdw/bootstrap-straight))))
3020#+end_src 3045#+end_src
3021 3046
3022** Ignore =straight/build/= 3047** Ignore =straight/build/=
3023 3048
3024#+begin_src emacs-lisp :noweb-ref settings 3049#+begin_src emacs-lisp :noweb-ref settings
3025 (add-to-list 'recentf-exclude (expand-file-name "straight/build/" 3050 (add-to-list 'recentf-exclude (expand-file-name "straight/build/"
3026 user-emacs-directory)) 3051 user-emacs-directory))
3027#+end_src 3052#+end_src
3028 3053
3029* System integration 3054* System integration
@@ -3059,13 +3084,13 @@ This function require [[https://github.com/simonthum/git-sync][git-sync]].
3059 (interactive) 3084 (interactive)
3060 (message "Git-Syncing %s..." directory) 3085 (message "Git-Syncing %s..." directory)
3061 (let ((proc (start-process "git-sync" 3086 (let ((proc (start-process "git-sync"
3062 (get-buffer-create (format "*git-sync:%s*" directory)) 3087 (get-buffer-create (format "*git-sync:%s*" directory))
3063 "git" "-C" (expand-file-name directory) "sync"))) 3088 "git" "-C" (expand-file-name directory) "sync")))
3064 (add-function :after (process-sentinel proc) 3089 (add-function :after (process-sentinel proc)
3065 (lambda (proc ev) 3090 (lambda (proc ev)
3066 (cond 3091 (cond
3067 ((string-match "finished\n\\'" ev) 3092 ((string-match "finished\n\\'" ev)
3068 (message "Git-Syncing %s...Done." directory))))))) 3093 (message "Git-Syncing %s...Done." directory)))))))
3069#+end_src 3094#+end_src
3070 3095
3071**** ~/org 3096**** ~/org
@@ -3110,7 +3135,7 @@ machine git.example.com user acdw password hahayeahrightyamoroniwouldn'tgiveyout
3110#+begin_src emacs-lisp :noweb-ref hooks 3135#+begin_src emacs-lisp :noweb-ref hooks
3111 (autoload 'magit-process-password-auth-source "magit") 3136 (autoload 'magit-process-password-auth-source "magit")
3112 (add-hook 'magit-process-find-password-functions 3137 (add-hook 'magit-process-find-password-functions
3113 #'magit-process-password-auth-source) 3138 #'magit-process-password-auth-source)
3114#+end_src 3139#+end_src
3115 3140
3116*** TRAMP 3141*** TRAMP
@@ -3131,9 +3156,9 @@ from [[https://github.com/grandfoobah/spartan-emacs/blob/master/spartan-layers/s
3131 3156
3132#+begin_src emacs-lisp :noweb-ref settings 3157#+begin_src emacs-lisp :noweb-ref settings
3133 (setq-default tramp-default-method "ssh" 3158 (setq-default tramp-default-method "ssh"
3134 tramp-copy-size-limit nil 3159 tramp-copy-size-limit nil
3135 tramp-use-ssh-controlmaster-options nil 3160 tramp-use-ssh-controlmaster-options nil
3136 tramp-default-remote-shell "/bin/bash") 3161 tramp-default-remote-shell "/bin/bash")
3137#+end_src 3162#+end_src
3138 3163
3139** Linux (home) 3164** Linux (home)
@@ -3154,8 +3179,8 @@ your =$PATH= somewhere.
3154 3179
3155#+begin_src sh :shebang "#!/bin/sh" :tangle (if (eq system-type 'gnu/linux) "~/bin/em" "") 3180#+begin_src sh :shebang "#!/bin/sh" :tangle (if (eq system-type 'gnu/linux) "~/bin/em" "")
3156 if ! emacsclient -nc "$@"; then 3181 if ! emacsclient -nc "$@"; then
3157 emacs --daemon 3182 emacs --daemon
3158 emacsclient -nc "$@" 3183 emacsclient -nc "$@"
3159 fi 3184 fi
3160#+end_src 3185#+end_src
3161 3186
@@ -3195,7 +3220,7 @@ section come from [[https://github.com/termitereform/JunkPile/blob/master/emacs-
3195 3220
3196#+begin_src emacs-lisp :noweb-ref windows-specific 3221#+begin_src emacs-lisp :noweb-ref windows-specific
3197 (setenv "DICPATH" (expand-file-name "exe/share/hunspell" 3222 (setenv "DICPATH" (expand-file-name "exe/share/hunspell"
3198 "~/Applications/")) 3223 "~/Applications/"))
3199#+end_src 3224#+end_src
3200 3225
3201*** Settings 3226*** Settings
@@ -3207,13 +3232,13 @@ See also [[https://github.com/bbatsov/prelude/blob/master/core/prelude-windows.e
3207 3232
3208#+begin_src emacs-lisp 3233#+begin_src emacs-lisp
3209 (setq-default w32-allow-system-shell t ; enable cmd.exe as shell 3234 (setq-default w32-allow-system-shell t ; enable cmd.exe as shell
3210 ;; modifier keys 3235 ;; modifier keys
3211 w32-pass-lwindow-to-system nil 3236 w32-pass-lwindow-to-system nil
3212 w32-lwindow-modifier 'super 3237 w32-lwindow-modifier 'super
3213 w32-pass-rwindow-to-system nil 3238 w32-pass-rwindow-to-system nil
3214 w32-rwindow-modifier 'super 3239 w32-rwindow-modifier 'super
3215 w32-pass-apps-to-system nil 3240 w32-pass-apps-to-system nil
3216 w32-apps-modifier 'hyper) 3241 w32-apps-modifier 'hyper)
3217#+end_src 3242#+end_src
3218 3243
3219*** Scripts 3244*** Scripts
@@ -3298,38 +3323,38 @@ have them all out of sync.
3298#+begin_src gitconfig :tangle (if (eq system-type 'windows-nt) "~/.gitconfig" "") 3323#+begin_src gitconfig :tangle (if (eq system-type 'windows-nt) "~/.gitconfig" "")
3299 # tangled from ~/.emacs.d/config.org 3324 # tangled from ~/.emacs.d/config.org
3300 [github] 3325 [github]
3301 user = duckwork 3326 user = duckwork
3302 [credential] 3327 [credential]
3303 helper = store 3328 helper = store
3304 [user] 3329 [user]
3305 name = Case Duckworth 3330 name = Case Duckworth
3306 email = acdw@acdw.net 3331 email = acdw@acdw.net
3307 [pull] 3332 [pull]
3308 rebase = false 3333 rebase = false
3309 [core] 3334 [core]
3310 excludesfile = ~/.gitignore 3335 excludesfile = ~/.gitignore
3311 attributesfile = ~/.gitattributes 3336 attributesfile = ~/.gitattributes
3312 autocrlf = false 3337 autocrlf = false
3313 eol = lf 3338 eol = lf
3314 [diff "lisp"] 3339 [diff "lisp"]
3315 # basic 3340 # basic
3316 #xfuncname = "^(\\(.*)$" 3341 #xfuncname = "^(\\(.*)$"
3317 # advanced 3342 # advanced
3318 xfuncname = "^(((;;;+ )|\\(|([ \t]+\\(((cl-|el-patch-)?def(un|var|macro|method|custom)|gb/))).*)$" 3343 xfuncname = "^(((;;;+ )|\\(|([ \t]+\\(((cl-|el-patch-)?def(un|var|macro|method|custom)|gb/))).*)$"
3319 [diff "org"] 3344 [diff "org"]
3320 xfuncname = "^(\\*+ +.*)$" 3345 xfuncname = "^(\\*+ +.*)$"
3321 3346
3322 [url "https://github.com/"] 3347 [url "https://github.com/"]
3323 insteadOf = gh: 3348 insteadOf = gh:
3324 pushInsteadOf = gh: 3349 pushInsteadOf = gh:
3325 3350
3326 [url "https://gitlab.com/"] 3351 [url "https://gitlab.com/"]
3327 insteadOf = gl: 3352 insteadOf = gl:
3328 pushInsteadOf = gl: 3353 pushInsteadOf = gl:
3329 3354
3330 [url "https://git.sr.ht/"] 3355 [url "https://git.sr.ht/"]
3331 insteadOf = sr: 3356 insteadOf = sr:
3332 pushInsteadOf = sr: 3357 pushInsteadOf = sr:
3333#+end_src 3358#+end_src
3334 3359
3335* Appendices 3360* Appendices
@@ -3449,14 +3474,14 @@ Bind it to =C-z i= because =C-z C-c= is taken for capture.
3449 (let ((config (locate-user-emacs-file "config.org"))) 3474 (let ((config (locate-user-emacs-file "config.org")))
3450 ;; tangle 3475 ;; tangle
3451 (with-current-buffer (find-file-noselect config) 3476 (with-current-buffer (find-file-noselect config)
3452 (message "Tangling config.org...") 3477 (message "Tangling config.org...")
3453 (let ((prog-mode-hook nil) 3478 (let ((prog-mode-hook nil)
3454 (inhibit-redisplay t) 3479 (inhibit-redisplay t)
3455 (inhibit-message t)) 3480 (inhibit-message t))
3456 (add-to-list 'load-path (locate-user-emacs-file 3481 (add-to-list 'load-path (locate-user-emacs-file
3457 "straight/build/org/")) 3482 "straight/build/org/"))
3458 (require 'org) 3483 (require 'org)
3459 (org-babel-tangle))) 3484 (org-babel-tangle)))
3460 (message "Tangling config.org... Done.") 3485 (message "Tangling config.org... Done.")
3461 ;; load init files 3486 ;; load init files
3462 (load (locate-user-emacs-file "early-init.el")) 3487 (load (locate-user-emacs-file "early-init.el"))
@@ -3500,15 +3525,15 @@ the needed boolean expression to tangle config.org. Booleans, yall!
3500#+begin_src emacs-lisp 3525#+begin_src emacs-lisp
3501 (message "%s..." "Loading init.el") 3526 (message "%s..." "Loading init.el")
3502 (let* (;; Speed up init 3527 (let* (;; Speed up init
3503 (gc-cons-threshold most-positive-fixnum) 3528 (gc-cons-threshold most-positive-fixnum)
3504 ;; (gc-cons-percentage 0.6) 3529 ;; (gc-cons-percentage 0.6)
3505 (file-name-handler-alist nil) 3530 (file-name-handler-alist nil)
3506 ;; Config file names 3531 ;; Config file names
3507 (config (expand-file-name "config" 3532 (config (expand-file-name "config"
3508 user-emacs-directory)) 3533 user-emacs-directory))
3509 (config.el (concat config ".el")) 3534 (config.el (concat config ".el"))
3510 (config.org (concat config ".org")) 3535 (config.org (concat config ".org"))
3511 (straight-org-dir (locate-user-emacs-file "straight/build/org"))) 3536 (straight-org-dir (locate-user-emacs-file "straight/build/org")))
3512 ;; Okay, let's figure this out. 3537 ;; Okay, let's figure this out.
3513 ;; `and' evaluates each form, and returns nil on the first that 3538 ;; `and' evaluates each form, and returns nil on the first that
3514 ;; returns nil. `unless' only executes its body if the test 3539 ;; returns nil. `unless' only executes its body if the test
@@ -3518,12 +3543,12 @@ the needed boolean expression to tangle config.org. Booleans, yall!
3518 ;; 2. Try to load the config. If it errors (nil), it'll bubble that 3543 ;; 2. Try to load the config. If it errors (nil), it'll bubble that
3519 ;; to the `and' and the body will be evaluated. 3544 ;; to the `and' and the body will be evaluated.
3520 (unless (and (not (file-newer-than-file-p config.org config.el)) 3545 (unless (and (not (file-newer-than-file-p config.org config.el))
3521 (load config :noerror)) 3546 (load config :noerror))
3522 ;; A plain require here just loads the older `org' 3547 ;; A plain require here just loads the older `org'
3523 ;; in Emacs' install dir. We need to add the newer 3548 ;; in Emacs' install dir. We need to add the newer
3524 ;; one to the `load-path', hopefully that's all. 3549 ;; one to the `load-path', hopefully that's all.
3525 (when (file-exists-p straight-org-dir) 3550 (when (file-exists-p straight-org-dir)
3526 (add-to-list 'load-path straight-org-dir)) 3551 (add-to-list 'load-path straight-org-dir))
3527 ;; Load config.org 3552 ;; Load config.org
3528 (message "%s..." "Loading config.org") 3553 (message "%s..." "Loading config.org")
3529 (require 'org) 3554 (require 'org)
diff --git a/early-init.el b/early-init.el index 1a26b03..056670a 100644 --- a/early-init.el +++ b/early-init.el
@@ -18,21 +18,21 @@
18;; BOOTSTRAP PACKAGE MANAGEMENT 18;; BOOTSTRAP PACKAGE MANAGEMENT
19(let ((win-app-dir "~/Applications")) 19(let ((win-app-dir "~/Applications"))
20 (dolist (path (list 20 (dolist (path (list
21 ;; Windows 21 ;; Windows
22 (expand-file-name "exe" win-app-dir) 22 (expand-file-name "exe" win-app-dir)
23 (expand-file-name "exe/bin" win-app-dir) 23 (expand-file-name "exe/bin" win-app-dir)
24 (expand-file-name "Git/bin" win-app-dir) 24 (expand-file-name "Git/bin" win-app-dir)
25 (expand-file-name "Git/usr/bin" win-app-dir) 25 (expand-file-name "Git/usr/bin" win-app-dir)
26 (expand-file-name "Git/mingw64/bin" win-app-dir) 26 (expand-file-name "Git/mingw64/bin" win-app-dir)
27 (expand-file-name "Everything" win-app-dir) 27 (expand-file-name "Everything" win-app-dir)
28 (expand-file-name "Win-builds/bin" win-app-dir) 28 (expand-file-name "Win-builds/bin" win-app-dir)
29 (expand-file-name "Z/bin" win-app-dir) 29 (expand-file-name "Z/bin" win-app-dir)
30 ;; Linux 30 ;; Linux
31 (expand-file-name "bin" user-emacs-directory) 31 (expand-file-name "bin" user-emacs-directory)
32 (expand-file-name "~/bin") 32 (expand-file-name "~/bin")
33 (expand-file-name "~/.local/bin") 33 (expand-file-name "~/.local/bin")
34 (expand-file-name "~/Scripts") 34 (expand-file-name "~/Scripts")
35 )) 35 ))
36 (when (file-exists-p path) 36 (when (file-exists-p path)
37 (add-to-list 'exec-path path :append)))) 37 (add-to-list 'exec-path path :append))))
38 38
@@ -43,49 +43,49 @@
43 "Bootstrap straight.el." 43 "Bootstrap straight.el."
44 (defvar bootstrap-version) 44 (defvar bootstrap-version)
45 (let ((bootstrap-file 45 (let ((bootstrap-file
46 (expand-file-name 46 (expand-file-name
47 "straight/repos/straight.el/bootstrap.el" 47 "straight/repos/straight.el/bootstrap.el"
48 user-emacs-directory)) 48 user-emacs-directory))
49 (bootstrap-version 5)) 49 (bootstrap-version 5))
50 (unless (file-exists-p bootstrap-file) 50 (unless (file-exists-p bootstrap-file)
51 (with-current-buffer 51 (with-current-buffer
52 (url-retrieve-synchronously 52 (url-retrieve-synchronously
53 (concat 53 (concat
54 "https://raw.githubusercontent.com/" 54 "https://raw.githubusercontent.com/"
55 "raxod502/straight.el/develop/install.el") 55 "raxod502/straight.el/develop/install.el")
56 'silent 'inhibit-cookies) 56 'silent 'inhibit-cookies)
57 (goto-char (point-max)) 57 (goto-char (point-max))
58 (eval-print-last-sexp))) 58 (eval-print-last-sexp)))
59 (load bootstrap-file nil 'nomessage))) 59 (load bootstrap-file nil 'nomessage)))
60(when (executable-find "git") 60(when (executable-find "git")
61 (unless (ignore-errors (acdw/bootstrap-straight)) 61 (unless (ignore-errors (acdw/bootstrap-straight))
62 (let ((msg "Straight.el didn't bootstrap correctly. Cloning directly")) 62 (let ((msg "Straight.el didn't bootstrap correctly. Cloning directly"))
63 (message "%s..." msg) 63 (message "%s..." msg)
64 (call-process "git" nil 64 (call-process "git" nil
65 (get-buffer-create "*bootstrap-straight-messages*") nil 65 (get-buffer-create "*bootstrap-straight-messages*") nil
66 "clone" 66 "clone"
67 "https://github.com/raxod502/straight.el" 67 "https://github.com/raxod502/straight.el"
68 (expand-file-name "straight/repos/straight.el" 68 (expand-file-name "straight/repos/straight.el"
69 user-emacs-directory)) 69 user-emacs-directory))
70 (message "%s...Done." msg) 70 (message "%s...Done." msg)
71 (acdw/bootstrap-straight)))) 71 (acdw/bootstrap-straight))))
72;; SETUP FRAME 72;; SETUP FRAME
73(add-to-list 'default-frame-alist 73(add-to-list 'default-frame-alist
74 '(tool-bar-lines . 0)) 74 '(tool-bar-lines . 0))
75 75
76(tool-bar-mode -1) 76(tool-bar-mode -1)
77(add-to-list 'default-frame-alist 77(add-to-list 'default-frame-alist
78 '(menu-bar-lines . 0)) 78 '(menu-bar-lines . 0))
79 79
80(menu-bar-mode -1) 80(menu-bar-mode -1)
81(add-to-list 'default-frame-alist 81(add-to-list 'default-frame-alist
82 '(vertical-scroll-bars . nil) 82 '(vertical-scroll-bars . nil)
83 '(horizontal-scroll-bars . nil)) 83 '(horizontal-scroll-bars . nil))
84 84
85(scroll-bar-mode -1) 85(scroll-bar-mode -1)
86(horizontal-scroll-bar-mode -1) 86(horizontal-scroll-bar-mode -1)
87(setq-default frame-inhibit-implied-resize t 87(setq-default frame-inhibit-implied-resize t
88 frame-resize-pixelwise t) 88 frame-resize-pixelwise t)
89(setq-default indicate-empty-lines t) 89(setq-default indicate-empty-lines t)
90(setq-default indicate-buffer-boundaries 'right) 90(setq-default indicate-buffer-boundaries 'right)
91(setq-default visual-line-fringe-indicators '(left-curly-arrow nil)) 91(setq-default visual-line-fringe-indicators '(left-curly-arrow nil))
diff --git a/init.el b/init.el index 28238aa..a0e072f 100644 --- a/init.el +++ b/init.el
@@ -23,7 +23,7 @@
23 (file-name-handler-alist nil) 23 (file-name-handler-alist nil)
24 ;; Config file names 24 ;; Config file names
25 (config (expand-file-name "config" 25 (config (expand-file-name "config"
26 user-emacs-directory)) 26 user-emacs-directory))
27 (config.el (concat config ".el")) 27 (config.el (concat config ".el"))
28 (config.org (concat config ".org")) 28 (config.org (concat config ".org"))
29 (straight-org-dir (locate-user-emacs-file "straight/build/org"))) 29 (straight-org-dir (locate-user-emacs-file "straight/build/org")))
@@ -36,7 +36,7 @@
36 ;; 2. Try to load the config. If it errors (nil), it'll bubble that 36 ;; 2. Try to load the config. If it errors (nil), it'll bubble that
37 ;; to the `and' and the body will be evaluated. 37 ;; to the `and' and the body will be evaluated.
38 (unless (and (not (file-newer-than-file-p config.org config.el)) 38 (unless (and (not (file-newer-than-file-p config.org config.el))
39 (load config :noerror)) 39 (load config :noerror))
40 ;; A plain require here just loads the older `org' 40 ;; A plain require here just loads the older `org'
41 ;; in Emacs' install dir. We need to add the newer 41 ;; in Emacs' install dir. We need to add the newer
42 ;; one to the `load-path', hopefully that's all. 42 ;; one to the `load-path', hopefully that's all.