diff options
-rw-r--r-- | init.el | 156 |
1 files changed, 79 insertions, 77 deletions
diff --git a/init.el b/init.el index da2e440..1e2e586 100644 --- a/init.el +++ b/init.el | |||
@@ -7,27 +7,27 @@ | |||
7 | 7 | ||
8 | ;; This file is NOT part of GNU Emacs. | 8 | ;; This file is NOT part of GNU Emacs. |
9 | 9 | ||
10 | ;;; License: | 10 | ;;;- License: |
11 | ;; Everyone is permitted to do whatever with this software, without | 11 | ;; Everyone is permitted to do whatever with this software, without |
12 | ;; limitation. This software comes without any warranty whatsoever, | 12 | ;; limitation. This software comes without any warranty whatsoever, |
13 | ;; but with two pieces of advice: | 13 | ;; but with two pieces of advice: |
14 | ;; - Don't hurt yourself. | 14 | ;; - Don't hurt yourself. |
15 | ;; - Make good choices. | 15 | ;; - Make good choices. |
16 | 16 | ||
17 | ;;; Code: | 17 | ;;;- Code: |
18 | 18 | ||
19 | ;;; `setup' -- configuration macro | 19 | ;;; `setup' -- configuration macro |
20 | (straight-use-package '(setup :host nil | 20 | (straight-use-package '(setup :host nil |
21 | :repo "https://git.sr.ht/~zge/setup")) | 21 | :repo "https://git.sr.ht/~zge/setup")) |
22 | (require 'setup) | 22 | (require 'setup) |
23 | 23 | ||
24 | ;; shorthand for `customize-set-variable' (via setup) | 24 | ;;;; shorthand for `customize-set-variable' (via setup) |
25 | (defmacro setc (&rest args) | 25 | (defmacro setc (&rest args) |
26 | "Customize user options using ARGS like `setq'." | 26 | "Customize user options using ARGS like `setq'." |
27 | (declare (debug setq)) | 27 | (declare (debug setq)) |
28 | `(setup (:option ,@args))) | 28 | `(setup (:option ,@args))) |
29 | 29 | ||
30 | ;; Install packages with `straight-use-package' | 30 | ;;;; Install packages with `straight-use-package' |
31 | (setup-define :straight | 31 | (setup-define :straight |
32 | (lambda (recipe) | 32 | (lambda (recipe) |
33 | `(straight-use-package ',recipe)) | 33 | `(straight-use-package ',recipe)) |
@@ -39,7 +39,7 @@ | |||
39 | (car recipe) | 39 | (car recipe) |
40 | recipe)))) | 40 | recipe)))) |
41 | 41 | ||
42 | ;; Set options using `setq-default', instead of `customize-set-variable' | 42 | ;;;; Set options using `setq-default', instead of `customize-set-variable' |
43 | ;; From what I can tell, `customize-set-variable' loads "all the dependencies | 43 | ;; From what I can tell, `customize-set-variable' loads "all the dependencies |
44 | ;; for each SYMBOL it sets (see `custom-load-symbol'). Since I don't want to do | 44 | ;; for each SYMBOL it sets (see `custom-load-symbol'). Since I don't want to do |
45 | ;; that all the time, here's `:set'. DON'T USE THIS HARDLY EVER. Honestly, I | 45 | ;; that all the time, here's `:set'. DON'T USE THIS HARDLY EVER. Honestly, I |
@@ -51,7 +51,7 @@ | |||
51 | :debug '(sexp form) | 51 | :debug '(sexp form) |
52 | :repeatable t) | 52 | :repeatable t) |
53 | 53 | ||
54 | ;; Bind keys to `acdw/map' | 54 | ;;;; Bind keys to `acdw/map' |
55 | (setup-define :acdw/map | 55 | (setup-define :acdw/map |
56 | (lambda (key command) | 56 | (lambda (key command) |
57 | `(progn | 57 | `(progn |
@@ -63,7 +63,7 @@ | |||
63 | :debug '(form sexp) | 63 | :debug '(form sexp) |
64 | :repeatable t) | 64 | :repeatable t) |
65 | 65 | ||
66 | ;; Bind keys to `acdw/leader' | 66 | ;;;; Bind keys to `acdw/leader' |
67 | (setup-define :acdw/leader | 67 | (setup-define :acdw/leader |
68 | (lambda (key command) | 68 | (lambda (key command) |
69 | `(progn | 69 | `(progn |
@@ -75,7 +75,7 @@ | |||
75 | :debug '(form sexp) | 75 | :debug '(form sexp) |
76 | :repeatable t) | 76 | :repeatable t) |
77 | 77 | ||
78 | ;; Bind keys, and autoload the functions they're bound to. | 78 | ;;;; Bind keys, and autoload the functions they're bound to. |
79 | (setup-define :bind-autoload | 79 | (setup-define :bind-autoload |
80 | (lambda (key command) | 80 | (lambda (key command) |
81 | `(progn | 81 | `(progn |
@@ -87,16 +87,16 @@ | |||
87 | :debug '(form sexp) | 87 | :debug '(form sexp) |
88 | :repeatable t) | 88 | :repeatable t) |
89 | 89 | ||
90 | ;;; About me | 90 | ;;; Good defaults |
91 | |||
92 | ;;;; About me | ||
91 | (setc user-full-name "Case Duckworth" | 93 | (setc user-full-name "Case Duckworth" |
92 | user-mail-address "acdw@acdw.net" | 94 | user-mail-address "acdw@acdw.net" |
93 | calendar-location-name "Baton Rouge, LA" | 95 | calendar-location-name "Baton Rouge, LA" |
94 | calendar-latitude 30.4 | 96 | calendar-latitude 30.4 |
95 | calendar-longitude -91.1) | 97 | calendar-longitude -91.1) |
96 | 98 | ||
97 | ;;; Good defaults | 99 | ;;;; Lines |
98 | |||
99 | ;; Lines | ||
100 | (setc fill-column 80 | 100 | (setc fill-column 80 |
101 | word-wrap t | 101 | word-wrap t |
102 | truncate-lines nil) | 102 | truncate-lines nil) |
@@ -105,7 +105,7 @@ | |||
105 | (global-display-fill-column-indicator-mode +1) | 105 | (global-display-fill-column-indicator-mode +1) |
106 | (global-so-long-mode +1) | 106 | (global-so-long-mode +1) |
107 | 107 | ||
108 | ;; Whitespace | 108 | ;;;; Whitespace |
109 | (setc whitespace-style | 109 | (setc whitespace-style |
110 | '(empty indentation space-before-tab space-after-tab) | 110 | '(empty indentation space-before-tab space-after-tab) |
111 | indent-tabs-mode nil | 111 | indent-tabs-mode nil |
@@ -113,7 +113,7 @@ | |||
113 | smie-indent-basic tab-width) | 113 | smie-indent-basic tab-width) |
114 | (add-hook 'before-save-hook #'whitespace-cleanup) | 114 | (add-hook 'before-save-hook #'whitespace-cleanup) |
115 | 115 | ||
116 | ;; Pairs | 116 | ;;;; Pairs |
117 | (setc show-paren-delay 0 | 117 | (setc show-paren-delay 0 |
118 | show-paren-style 'mixed | 118 | show-paren-style 'mixed |
119 | show-paren-when-point-inside-paren t | 119 | show-paren-when-point-inside-paren t |
@@ -121,7 +121,7 @@ | |||
121 | (show-paren-mode +1) | 121 | (show-paren-mode +1) |
122 | (add-hook 'prog-mode-hook #'electric-pair-local-mode) | 122 | (add-hook 'prog-mode-hook #'electric-pair-local-mode) |
123 | 123 | ||
124 | ;; Killing and yanking | 124 | ;;;; Killing and yanking |
125 | (setc save-interprogram-paste-before-kill t | 125 | (setc save-interprogram-paste-before-kill t |
126 | yank-pop-change-selection t | 126 | yank-pop-change-selection t |
127 | x-select-enable-clipboard t | 127 | x-select-enable-clipboard t |
@@ -130,7 +130,7 @@ | |||
130 | kill-do-not-save-duplicates t) | 130 | kill-do-not-save-duplicates t) |
131 | (delete-selection-mode +1) | 131 | (delete-selection-mode +1) |
132 | 132 | ||
133 | ;; Encoding | 133 | ;;;; Encoding |
134 | (setc local-coding-system 'utf-8-unix | 134 | (setc local-coding-system 'utf-8-unix |
135 | coding-system-for-read 'utf-8-unix | 135 | coding-system-for-read 'utf-8-unix |
136 | coding-system-for-write 'utf-8-unix | 136 | coding-system-for-write 'utf-8-unix |
@@ -147,14 +147,14 @@ | |||
147 | (set-keyboard-coding-system 'utf-8-unix) | 147 | (set-keyboard-coding-system 'utf-8-unix) |
148 | (set-selection-coding-system 'utf-8-unix) | 148 | (set-selection-coding-system 'utf-8-unix) |
149 | 149 | ||
150 | ;; Uniquify | 150 | ;;;; Uniquify |
151 | (setup (:require uniquify) | 151 | (setup (:require uniquify) |
152 | (:option uniquify-buffer-name-style 'forward | 152 | (:option uniquify-buffer-name-style 'forward |
153 | uniquify-separator path-separator | 153 | uniquify-separator path-separator |
154 | uniquify-after-kill-buffer-p t | 154 | uniquify-after-kill-buffer-p t |
155 | uniquify-ignore-buffers-re "^\\*")) | 155 | uniquify-ignore-buffers-re "^\\*")) |
156 | 156 | ||
157 | ;; Files | 157 | ;;;; Files |
158 | (setc backup-directory-alist `((".*" . ,(acdw/in-dir "backup/" t))) | 158 | (setc backup-directory-alist `((".*" . ,(acdw/in-dir "backup/" t))) |
159 | tramp-backup-directory-alist backup-directory-alist | 159 | tramp-backup-directory-alist backup-directory-alist |
160 | auto-save-file-name-transforms `((".*" ,(acdw/in-dir "auto-save/" t) t)) | 160 | auto-save-file-name-transforms `((".*" ,(acdw/in-dir "auto-save/" t) t)) |
@@ -163,21 +163,26 @@ | |||
163 | delete-old-versions t | 163 | delete-old-versions t |
164 | version-control t | 164 | version-control t |
165 | vc-make-backup-files t) | 165 | vc-make-backup-files t) |
166 | (auto-save-visited-mode +1) | ||
167 | 166 | ||
167 | ;;;;; Auto-save files | ||
168 | (auto-save-visited-mode +1) | ||
169 | ;; And /actually/ save all buffers when unfocused | ||
168 | (add-function :after after-focus-change-function | 170 | (add-function :after after-focus-change-function |
169 | (defun hook--auto-save-when-unfocused () | 171 | (defun hook--auto-save-when-unfocused () |
170 | "Save all buffers when out of focus." | 172 | "Save all buffers when out of focus." |
171 | (acdw/when-unfocused #'save-some-buffers t))) | 173 | (acdw/when-unfocused #'save-some-buffers t))) |
172 | 174 | ||
175 | ;;;;; Autorevert files | ||
173 | (setup (:require autorevert) | 176 | (setup (:require autorevert) |
174 | (global-auto-revert-mode +1)) | 177 | (global-auto-revert-mode +1)) |
175 | 178 | ||
179 | ;;;;; Save place in files | ||
176 | (setup (:require saveplace) | 180 | (setup (:require saveplace) |
177 | (:option save-place-file (acdw/in-dir "places.el") | 181 | (:option save-place-file (acdw/in-dir "places.el") |
178 | save-place-forget-unreadable-files (eq acdw/system :home)) | 182 | save-place-forget-unreadable-files (eq acdw/system :home)) |
179 | (save-place-mode +1)) | 183 | (save-place-mode +1)) |
180 | 184 | ||
185 | ;;;;; Keep track of recent files | ||
181 | (setup (:require recentf) | 186 | (setup (:require recentf) |
182 | (:option recentf-save-file (acdw/in-dir "recentf.el") | 187 | (:option recentf-save-file (acdw/in-dir "recentf.el") |
183 | recentf-max-menu-items 100 | 188 | recentf-max-menu-items 100 |
@@ -186,7 +191,7 @@ | |||
186 | (append recentf-exclude) acdw/dir) | 191 | (append recentf-exclude) acdw/dir) |
187 | (recentf-mode +1)) | 192 | (recentf-mode +1)) |
188 | 193 | ||
189 | ;; Minibuffer | 194 | ;;;; Minibuffer |
190 | (setc minibuffer-prompt-properties | 195 | (setc minibuffer-prompt-properties |
191 | '(read-only t cursor-intangible t face minibuffer-prompt) | 196 | '(read-only t cursor-intangible t face minibuffer-prompt) |
192 | enable-recursive-minibuffers t | 197 | enable-recursive-minibuffers t |
@@ -196,6 +201,7 @@ | |||
196 | (file-name-shadow-mode +1) | 201 | (file-name-shadow-mode +1) |
197 | (fset 'yes-or-no-p #'y-or-n-p) | 202 | (fset 'yes-or-no-p #'y-or-n-p) |
198 | 203 | ||
204 | ;;;;; Save minibuffer command history (and others) | ||
199 | (setup (:require savehist) | 205 | (setup (:require savehist) |
200 | (:option (append savehist-additional-variables) 'kill-ring | 206 | (:option (append savehist-additional-variables) 'kill-ring |
201 | (append savehist-additional-variables) 'search-ring | 207 | (append savehist-additional-variables) 'search-ring |
@@ -206,6 +212,7 @@ | |||
206 | savehist-file (acdw/in-dir "savehist.el")) | 212 | savehist-file (acdw/in-dir "savehist.el")) |
207 | (savehist-mode +1)) | 213 | (savehist-mode +1)) |
208 | 214 | ||
215 | ;;;;; Completion framework | ||
209 | (setup (:require icomplete) | 216 | (setup (:require icomplete) |
210 | (:option completion-ignore-case t | 217 | (:option completion-ignore-case t |
211 | read-buffer-completion-ignore-case t | 218 | read-buffer-completion-ignore-case t |
@@ -219,21 +226,22 @@ | |||
219 | (fido-mode -1) | 226 | (fido-mode -1) |
220 | (icomplete-mode +1)) | 227 | (icomplete-mode +1)) |
221 | 228 | ||
229 | ;;;;; `imenu' | ||
222 | (setup imenu | 230 | (setup imenu |
223 | (:option imenu-auto-rescan t)) | 231 | (:option imenu-auto-rescan t)) |
224 | 232 | ||
225 | ;; Cursor | 233 | ;;;; Cursor |
226 | (setc cursor-type 'bar | 234 | (setc cursor-type 'bar |
227 | cursor-in-non-selected-windows 'hollow) | 235 | cursor-in-non-selected-windows 'hollow) |
228 | 236 | ||
229 | ;; Scrolling | 237 | ;;;; Scrolling |
230 | (setc auto-window-vscroll nil | 238 | (setc auto-window-vscroll nil |
231 | fast-but-imprecise-scrolling t | 239 | fast-but-imprecise-scrolling t |
232 | scroll-margin 0 | 240 | scroll-margin 0 |
233 | scroll-conservatively 101 | 241 | scroll-conservatively 101 |
234 | scroll-preserve-screen-position 1) | 242 | scroll-preserve-screen-position 1) |
235 | 243 | ||
236 | ;; Fonts | 244 | ;;;; Fonts |
237 | ;; Load them /after/ the first frame comes into focus | 245 | ;; Load them /after/ the first frame comes into focus |
238 | (add-function :after after-focus-change-function | 246 | (add-function :after after-focus-change-function |
239 | (defun hook--setup-fonts () | 247 | (defun hook--setup-fonts () |
@@ -253,8 +261,7 @@ | |||
253 | (remove-function after-focus-change-function | 261 | (remove-function after-focus-change-function |
254 | 'hook--setup-fonts))) | 262 | 'hook--setup-fonts))) |
255 | 263 | ||
256 | 264 | ;;;; MS Windows | |
257 | ;; MS Windows | ||
258 | (setc w32-allow-system-shell t | 265 | (setc w32-allow-system-shell t |
259 | w32-pass-lwindow-to-system nil | 266 | w32-pass-lwindow-to-system nil |
260 | w32-lwindow-modifier 'super | 267 | w32-lwindow-modifier 'super |
@@ -263,7 +270,7 @@ | |||
263 | w32-pass-apps-to-system nil | 270 | w32-pass-apps-to-system nil |
264 | w32-apps-modifier 'hyper) | 271 | w32-apps-modifier 'hyper) |
265 | 272 | ||
266 | ;;; Dired | 273 | ;;;; Dired |
267 | (setup dired | 274 | (setup dired |
268 | (:setq-default dired-recursive-copies 'always | 275 | (:setq-default dired-recursive-copies 'always |
269 | dired-recursive-deletes 'always | 276 | dired-recursive-deletes 'always |
@@ -281,11 +288,7 @@ | |||
281 | hl-line-mode) | 288 | hl-line-mode) |
282 | (:acdw/map "C-x C-j" dired-jump)) | 289 | (:acdw/map "C-x C-j" dired-jump)) |
283 | 290 | ||
284 | |||
285 | ;;;; Web browsing | 291 | ;;;; Web browsing |
286 | (when (eq acdw/system :work) | ||
287 | (add-to-list 'exec-path "C:/Program Files/Mozilla Firefox")) | ||
288 | |||
289 | (setup browse-url | 292 | (setup browse-url |
290 | (:setq-default browse-url-browser-function 'eww-browse-url | 293 | (:setq-default browse-url-browser-function 'eww-browse-url |
291 | browse-url-secondary-browser-function | 294 | browse-url-secondary-browser-function |
@@ -293,7 +296,9 @@ | |||
293 | 'browse-url-firefox | 296 | 'browse-url-firefox |
294 | 'browse-url-default-browser) | 297 | 'browse-url-default-browser) |
295 | browse-url-new-window-flag t | 298 | browse-url-new-window-flag t |
296 | browse-url-firefox-new-window-is-tab t)) | 299 | browse-url-firefox-new-window-is-tab t) |
300 | (when (eq acdw/system :work) | ||
301 | (add-to-list 'exec-path "C:/Program Files/Mozilla Firefox"))) | ||
297 | 302 | ||
298 | (setup shr | 303 | (setup shr |
299 | (:option shr-width fill-column | 304 | (:option shr-width fill-column |
@@ -308,24 +313,24 @@ | |||
308 | (add-hook 'text-mode-hook #'goto-address-mode) | 313 | (add-hook 'text-mode-hook #'goto-address-mode) |
309 | (add-hook 'prog-mode-hook #'goto-address-prog-mode) | 314 | (add-hook 'prog-mode-hook #'goto-address-prog-mode) |
310 | 315 | ||
311 | ;; Eshell | 316 | ;;;; Eshell |
312 | (setup eshell | 317 | (setup eshell |
313 | (:option eshell-directory-name (acdw/in-dir "eshell/" t) | 318 | (:option eshell-directory-name (acdw/in-dir "eshell/" t) |
314 | eshell-aliases-file (acdw/in-dir "eshell/aliases" t))) | 319 | eshell-aliases-file (acdw/in-dir "eshell/aliases" t))) |
315 | 320 | ||
316 | ;; Debugger | 321 | ;;;; Debugger |
317 | (setup debugger | 322 | (setup debugger |
318 | (:hook visual-line-mode) | 323 | (:hook visual-line-mode) |
319 | (:acdw/leader "d" toggle-debug-on-error)) | 324 | (:acdw/leader "d" toggle-debug-on-error)) |
320 | 325 | ||
321 | ;; Garbage collection | 326 | ;;;; Garbage collection |
322 | (add-hook 'minibuffer-setup-hook #'acdw/gc-disable) | 327 | (add-hook 'minibuffer-setup-hook #'acdw/gc-disable) |
323 | (add-hook 'minibuffer-exit-hook #'acdw/gc-enable) | 328 | (add-hook 'minibuffer-exit-hook #'acdw/gc-enable) |
324 | (add-function :after after-focus-change-function | 329 | (add-function :after after-focus-change-function |
325 | (defun hook--gc-when-unfocused () | 330 | (defun hook--gc-when-unfocused () |
326 | (acdw/when-unfocused #'garbage-collect))) | 331 | (acdw/when-unfocused #'garbage-collect))) |
327 | 332 | ||
328 | ;; Etc. good defaults | 333 | ;;;; Etc. good defaults |
329 | (setc custom-file (acdw/in-dir "custom.el") | 334 | (setc custom-file (acdw/in-dir "custom.el") |
330 | inhibit-startup-screen t | 335 | inhibit-startup-screen t |
331 | initial-buffer-choice t | 336 | initial-buffer-choice t |
@@ -344,7 +349,7 @@ | |||
344 | (:work "aduckworth") | 349 | (:work "aduckworth") |
345 | (:other (getenv "USER")))) | 350 | (:other (getenv "USER")))) |
346 | 351 | ||
347 | ;; Etc. bindings | 352 | ;;;; Etc. bindings |
348 | (autoload 'ehelp-command "ehelp" nil nil 'keymap) | 353 | (autoload 'ehelp-command "ehelp" nil nil 'keymap) |
349 | (define-key acdw/map (kbd "C-h") 'ehelp-command) | 354 | (define-key acdw/map (kbd "C-h") 'ehelp-command) |
350 | (define-key acdw/map [remap just-one-space] #'cycle-spacing) | 355 | (define-key acdw/map [remap just-one-space] #'cycle-spacing) |
@@ -352,27 +357,24 @@ | |||
352 | (define-key acdw/map (kbd "M-=") #'count-words) | 357 | (define-key acdw/map (kbd "M-=") #'count-words) |
353 | (define-key acdw/map (kbd "C-x C-b") #'ibuffer) | 358 | (define-key acdw/map (kbd "C-x C-b") #'ibuffer) |
354 | 359 | ||
355 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 360 | ;;; Packages |
356 | ;;; Here ends the package-less configuration. Everything following requires a | ||
357 | ;;; package to be downloaded. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
358 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
359 | 361 | ||
360 | ;;; Interactivity | 362 | ;;;; Interactivity |
361 | 363 | ||
362 | ;;;; Begin-end | 364 | ;;;;; Begin-end |
363 | (setup (:straight beginend) | 365 | (setup (:straight beginend) |
364 | (beginend-global-mode +1)) | 366 | (beginend-global-mode +1)) |
365 | 367 | ||
366 | ;;;; MWIM | 368 | ;;;;; MWIM |
367 | (setup (:straight mwim) | 369 | (setup (:straight mwim) |
368 | (:acdw/map "C-a" mwim-beginning | 370 | (:acdw/map "C-a" mwim-beginning |
369 | "C-e" mwim-end)) | 371 | "C-e" mwim-end)) |
370 | 372 | ||
371 | ;;;; Expand-region | 373 | ;;;;; Expand-region |
372 | (setup (:straight expand-region) | 374 | (setup (:straight expand-region) |
373 | (:acdw/map "C-=" er/expand-region)) | 375 | (:acdw/map "C-=" er/expand-region)) |
374 | 376 | ||
375 | ;;;; CRUX | 377 | ;;;;; CRUX |
376 | (setup (:straight crux) | 378 | (setup (:straight crux) |
377 | (:acdw/map "M-o" crux-other-window-or-switch-buffer | 379 | (:acdw/map "M-o" crux-other-window-or-switch-buffer |
378 | "C-k" crux-kill-and-join-forward | 380 | "C-k" crux-kill-and-join-forward |
@@ -382,7 +384,7 @@ | |||
382 | "C-c i" crux-find-user-init-file) | 384 | "C-c i" crux-find-user-init-file) |
383 | (crux-reopen-as-root-mode +1)) | 385 | (crux-reopen-as-root-mode +1)) |
384 | 386 | ||
385 | ;;;; AVY ... & friends | 387 | ;;;;; AVY ... & friends |
386 | (setup (:straight avy) | 388 | (setup (:straight avy) |
387 | (:acdw/map "C-:" avy-goto-char | 389 | (:acdw/map "C-:" avy-goto-char |
388 | "C-'" avy-goto-char-timer | 390 | "C-'" avy-goto-char-timer |
@@ -403,7 +405,7 @@ call `zzz-to-char'." | |||
403 | (call-interactively #'zzz-up-to-char))) | 405 | (call-interactively #'zzz-up-to-char))) |
404 | (:acdw/map "M-z" acdw/zzz-up-to-char)) | 406 | (:acdw/map "M-z" acdw/zzz-up-to-char)) |
405 | 407 | ||
406 | ;;;; anzu | 408 | ;;;;; anzu |
407 | (setup (:straight anzu) | 409 | (setup (:straight anzu) |
408 | (:option anzu-replace-to-string-separator " → " | 410 | (:option anzu-replace-to-string-separator " → " |
409 | anzu-cons-mode-line-p nil) | 411 | anzu-cons-mode-line-p nil) |
@@ -418,20 +420,20 @@ call `zzz-to-char'." | |||
418 | 420 | ||
419 | (global-anzu-mode +1)) | 421 | (global-anzu-mode +1)) |
420 | 422 | ||
421 | ;;;; smart hungry delete | 423 | ;;;;; smart hungry delete |
422 | (setup (:straight smart-hungry-delete) | 424 | (setup (:straight smart-hungry-delete) |
423 | (:acdw/map "<backspace>" smart-hungry-delete-backward-char | 425 | (:acdw/map "<backspace>" smart-hungry-delete-backward-char |
424 | "C-d" smart-hungry-delete-forward-char) | 426 | "C-d" smart-hungry-delete-forward-char) |
425 | (smart-hungry-delete-add-default-hooks)) | 427 | (smart-hungry-delete-add-default-hooks)) |
426 | 428 | ||
427 | ;;; Functionality | 429 | ;;;; Functionality |
428 | 430 | ||
429 | ;;;; Async | 431 | ;;;;; Async |
430 | (setup (:straight async) | 432 | (setup (:straight async) |
431 | (autoload 'dired-async-mode "dired-async.el" nil t) | 433 | (autoload 'dired-async-mode "dired-async.el" nil t) |
432 | (dired-async-mode +1)) | 434 | (dired-async-mode +1)) |
433 | 435 | ||
434 | ;;;; Undo-fu | 436 | ;;;;; Undo-fu |
435 | (setup (:straight undo-fu) | 437 | (setup (:straight undo-fu) |
436 | (:acdw/map "C-/" undo-fu-only-undo | 438 | (:acdw/map "C-/" undo-fu-only-undo |
437 | "C-?" undo-fu-only-redo)) | 439 | "C-?" undo-fu-only-redo)) |
@@ -442,9 +444,9 @@ call `zzz-to-char'." | |||
442 | undo-fu-session-directory (acdw/in-dir "undo/" t)) | 444 | undo-fu-session-directory (acdw/in-dir "undo/" t)) |
443 | (global-undo-fu-session-mode +1)) | 445 | (global-undo-fu-session-mode +1)) |
444 | 446 | ||
445 | ;;; Minibuffer | 447 | ;;;; Minibuffer |
446 | 448 | ||
447 | ;;;; Icomplete-vertical | 449 | ;;;;; Icomplete-vertical |
448 | (setup (:straight icomplete-vertical) | 450 | (setup (:straight icomplete-vertical) |
449 | (let ((map icomplete-minibuffer-map)) | 451 | (let ((map icomplete-minibuffer-map)) |
450 | (let ((command #'icomplete-forward-completions)) | 452 | (let ((command #'icomplete-forward-completions)) |
@@ -457,11 +459,11 @@ call `zzz-to-char'." | |||
457 | (define-key map (kbd "C-RET") #'minibuffer-complete-and-exit)) | 459 | (define-key map (kbd "C-RET") #'minibuffer-complete-and-exit)) |
458 | (icomplete-vertical-mode +1)) | 460 | (icomplete-vertical-mode +1)) |
459 | 461 | ||
460 | ;;;; Orderless | 462 | ;;;;; Orderless |
461 | (setup (:straight orderless) | 463 | (setup (:straight orderless) |
462 | (:option (prepend completion-styles) 'orderless)) | 464 | (:option (prepend completion-styles) 'orderless)) |
463 | 465 | ||
464 | ;;;; Consult | 466 | ;;;;; Consult |
465 | (setup (:straight consult) | 467 | (setup (:straight consult) |
466 | (:acdw/map | 468 | (:acdw/map |
467 | ;; C-c bindings (`mode-specific-map') | 469 | ;; C-c bindings (`mode-specific-map') |
@@ -495,15 +497,15 @@ call `zzz-to-char'." | |||
495 | (:option register-preview-delay 0 | 497 | (:option register-preview-delay 0 |
496 | register-preview-function #'consult-register-preview)) | 498 | register-preview-function #'consult-register-preview)) |
497 | 499 | ||
498 | ;;;; Marginalia | 500 | ;;;;; Marginalia |
499 | (setup (:straight marginalia) | 501 | (setup (:straight marginalia) |
500 | (:option marginalia-annotators '(marginalia-annotators-heavy | 502 | (:option marginalia-annotators '(marginalia-annotators-heavy |
501 | marginalia-annotators-light)) | 503 | marginalia-annotators-light)) |
502 | (marginalia-mode +1)) | 504 | (marginalia-mode +1)) |
503 | 505 | ||
504 | ;;; UI | 506 | ;;;; UI |
505 | 507 | ||
506 | ;;;; Modus themes | 508 | ;;;;; Modus themes |
507 | (setup (:straight (modus-themes | 509 | (setup (:straight (modus-themes |
508 | :host gitlab | 510 | :host gitlab |
509 | :repo "protesilaos/modus-themes")) | 511 | :repo "protesilaos/modus-themes")) |
@@ -517,7 +519,7 @@ call `zzz-to-char'." | |||
517 | (acdw/sunrise-sunset #'modus-themes-load-operandi | 519 | (acdw/sunrise-sunset #'modus-themes-load-operandi |
518 | #'modus-themes-load-vivendi)) | 520 | #'modus-themes-load-vivendi)) |
519 | 521 | ||
520 | ;;;; Mode line | 522 | ;;;;; Mode line |
521 | (setup (:straight simple-modeline) | 523 | (setup (:straight simple-modeline) |
522 | (setup (:straight minions)) | 524 | (setup (:straight minions)) |
523 | (:option simple-modeline-segments | 525 | (:option simple-modeline-segments |
@@ -534,32 +536,32 @@ call `zzz-to-char'." | |||
534 | (require 'acdw-modeline) | 536 | (require 'acdw-modeline) |
535 | (simple-modeline-mode +1)) | 537 | (simple-modeline-mode +1)) |
536 | 538 | ||
537 | ;;;; Olivetti | 539 | ;;;;; Olivetti |
538 | ;; also useful for `acdw/reading-mode' | 540 | ;; also useful for `acdw/reading-mode' |
539 | (setup (:straight olivetti) | 541 | (setup (:straight olivetti) |
540 | (:option olivetti-body-width (+ fill-column 4) | 542 | (:option olivetti-body-width (+ fill-column 4) |
541 | olivetti-minimum-body-width fill-column)) | 543 | olivetti-minimum-body-width fill-column)) |
542 | 544 | ||
543 | ;;;; Outshine | 545 | ;;;;; Outshine |
544 | (setup (:straight outshine) | 546 | (setup (:straight outshine) |
545 | (:option outline-minor-mode-prefix "") | 547 | (:option outline-minor-mode-prefix "") |
546 | (:hook-into emacs-lisp-mode)) | 548 | (:hook-into emacs-lisp-mode)) |
547 | 549 | ||
548 | ;;; Utilities | 550 | ;;;; Utilities |
549 | 551 | ||
550 | ;;;; 0x0 -- upload files to a nullpointer | 552 | ;;;;; 0x0 -- upload files to a nullpointer |
551 | (setup (:straight (0x0 :host nil | 553 | (setup (:straight (0x0 :host nil |
552 | :repo "https://git.sr.ht/~zge/nullpointer-emacs")) | 554 | :repo "https://git.sr.ht/~zge/nullpointer-emacs")) |
553 | (:option 0x0-default-host 'ttm)) | 555 | (:option 0x0-default-host 'ttm)) |
554 | 556 | ||
555 | ;;; System tie-ins | 557 | ;;;; System tie-ins |
556 | ;; Instead of using `setup''s `:needs', I'm going to wrap these in | 558 | ;; Insctead of using `setup''s `:needs', I'm going to wrap these in |
557 | ;; `exectuable-find' forms. I don't want to waste time with pulling packages | 559 | ;; `exectuable-find' forms. I don't want to waste time with pulling packages |
558 | ;; that won't work on a machine. | 560 | ;; that won't work on a machine. |
559 | 561 | ||
560 | ;;; Applications | 562 | ;;;; Applications |
561 | 563 | ||
562 | ;;;; Magit | 564 | ;;;;; Magit |
563 | (setup (:straight magit) | 565 | (setup (:straight magit) |
564 | (:acdw/leader "g" magit-status) | 566 | (:acdw/leader "g" magit-status) |
565 | (:option magit-display-buffer-function | 567 | (:option magit-display-buffer-function |
@@ -568,7 +570,7 @@ call `zzz-to-char'." | |||
568 | (display-buffer buffer '(display-buffer-same-window))) | 570 | (display-buffer buffer '(display-buffer-same-window))) |
569 | magit-popup-display-buffer-action '((display-buffer-same-window)))) | 571 | magit-popup-display-buffer-action '((display-buffer-same-window)))) |
570 | 572 | ||
571 | ;;;; File browsing | 573 | ;;;;; File browsing |
572 | (setup (:straight dired-subtree) | 574 | (setup (:straight dired-subtree) |
573 | (define-key dired-mode-map "i" #'dired-subtree-toggle)) | 575 | (define-key dired-mode-map "i" #'dired-subtree-toggle)) |
574 | 576 | ||
@@ -578,7 +580,7 @@ call `zzz-to-char'." | |||
578 | (setup (:straight trashed) | 580 | (setup (:straight trashed) |
579 | (:option trashed-action-confirmer 'y-or-n-p)) | 581 | (:option trashed-action-confirmer 'y-or-n-p)) |
580 | 582 | ||
581 | ;;;; Gemini/gopher browsing | 583 | ;;;;; Gemini/gopher browsing |
582 | (setup (:straight (elpher :host nil | 584 | (setup (:straight (elpher :host nil |
583 | :repo "git://thelambdalab.xyz/elpher.git")) | 585 | :repo "git://thelambdalab.xyz/elpher.git")) |
584 | (:option elpher-ipv4-always t | 586 | (:option elpher-ipv4-always t |
@@ -598,12 +600,12 @@ call `zzz-to-char'." | |||
598 | (:option (append auto-mode-alist) | 600 | (:option (append auto-mode-alist) |
599 | '("\\.\\(gemini\\|gmi\\)\\'" . gemini-mode))) | 601 | '("\\.\\(gemini\\|gmi\\)\\'" . gemini-mode))) |
600 | 602 | ||
601 | ;;;; Read e-books (nov.el) | 603 | ;;;;; Read e-books (nov.el) |
602 | (setup (:straight nov) | 604 | (setup (:straight nov) |
603 | (:option nov-text-width fill-column | 605 | (:option nov-text-width fill-column |
604 | (append auto-mode-alist) '("\\.epub\\'" . nov-mode))) | 606 | (append auto-mode-alist) '("\\.epub\\'" . nov-mode))) |
605 | 607 | ||
606 | ;;;; Org mode | 608 | ;;;;; Org mode |
607 | (setup (:straight (org :host nil | 609 | (setup (:straight (org :host nil |
608 | :repo "https://code.orgmode.org/bzg/org-mode.git")) | 610 | :repo "https://code.orgmode.org/bzg/org-mode.git")) |
609 | (require 'acdw-org) | 611 | (require 'acdw-org) |
@@ -629,14 +631,14 @@ call `zzz-to-char'." | |||
629 | (:bind "RET" unpackaged/org-return-dwim) | 631 | (:bind "RET" unpackaged/org-return-dwim) |
630 | (add-hook 'before-save-hook #'acdw/hook--org-mode-fix-blank-lines)) | 632 | (add-hook 'before-save-hook #'acdw/hook--org-mode-fix-blank-lines)) |
631 | 633 | ||
632 | ;;; Programming languages | 634 | ;;;; Programming languages |
633 | 635 | ||
634 | ;;;; Formatting | 636 | ;;;;; Formatting |
635 | (setup (:straight (apheleia :host github | 637 | (setup (:straight (apheleia :host github |
636 | :repo "raxod502/apheleia")) | 638 | :repo "raxod502/apheleia")) |
637 | (apheleia-global-mode +1)) | 639 | (apheleia-global-mode +1)) |
638 | 640 | ||
639 | ;;;; Emacs lisp | 641 | ;;;;; Emacs lisp |
640 | (setup emacs-lisp-mode | 642 | (setup emacs-lisp-mode |
641 | (:option eval-expression-print-length nil | 643 | (:option eval-expression-print-length nil |
642 | eval-expression-print-level nil | 644 | eval-expression-print-level nil |
@@ -645,7 +647,7 @@ call `zzz-to-char'." | |||
645 | (setup (:straight macrostep) | 647 | (setup (:straight macrostep) |
646 | (define-key emacs-lisp-mode-map (kbd "C-c e") #'macrostep-expand)) | 648 | (define-key emacs-lisp-mode-map (kbd "C-c e") #'macrostep-expand)) |
647 | 649 | ||
648 | ;;;; Shell scripts | 650 | ;;;;; Shell scripts |
649 | (setup sh-mode | 651 | (setup sh-mode |
650 | (:option sh-basic-offset tab-width | 652 | (:option sh-basic-offset tab-width |
651 | sh-indent-after-case 0 | 653 | sh-indent-after-case 0 |
@@ -663,7 +665,7 @@ call `zzz-to-char'." | |||
663 | (:hook flymake-mode | 665 | (:hook flymake-mode |
664 | flymake-shellcheck-load))) | 666 | flymake-shellcheck-load))) |
665 | 667 | ||
666 | ;;;; Web languages | 668 | ;;;;; Web languages |
667 | (setup (:straight web-mode) | 669 | (setup (:straight web-mode) |
668 | (:option css-level-offset 2 | 670 | (:option css-level-offset 2 |
669 | js-indent-level 2 | 671 | js-indent-level 2 |
@@ -678,4 +680,4 @@ call `zzz-to-char'." | |||
678 | (add-to-list 'auto-mode-alist | 680 | (add-to-list 'auto-mode-alist |
679 | `(,(concat "\\." extension "\\'") . web-mode)))) | 681 | `(,(concat "\\." extension "\\'") . web-mode)))) |
680 | 682 | ||
681 | ;;; init.el ends here | 683 | ;;;- init.el ends here |