about summary refs log tree commit diff stats
path: root/init.el
diff options
context:
space:
mode:
authorCase Duckworth2020-09-22 20:42:13 -0500
committerCase Duckworth2020-09-22 20:42:13 -0500
commit673c6e5ceb95e74a2c5af097a669bb7c465b5096 (patch)
treeecca08d913573d9b5f40651ad7e449e860faaa30 /init.el
parentAdd slime and gnus (diff)
parentAdd LICENSE and README.org (diff)
downloademacs-673c6e5ceb95e74a2c5af097a669bb7c465b5096.tar.gz
emacs-673c6e5ceb95e74a2c5af097a669bb7c465b5096.zip
Merge branch 'master' of git.sr.ht:~acdw/.emacs.d into master
Diffstat (limited to 'init.el')
-rw-r--r--init.el603
1 files changed, 353 insertions, 250 deletions
diff --git a/init.el b/init.el index fc7eae7..bafdda2 100644 --- a/init.el +++ b/init.el
@@ -1,231 +1,247 @@
1;;; init.el ~ acdw -*- lexical-binding: t -*- 1;;; init.el -*- lexical-binding: t; coding: utf-8; fill-column: 70 -*-
2 2
3;;; emacs configuration - general 3;;; Commentary:
4 4;; I /was/ going to convert this to org-mode, but then I found this
5;; page: https://yiufung.net/post/pure-emacs-lisp-init-skeleton/,
6;; which pointed out that I could use `outline-mode' (or in my case,
7;; `outshine') to fold and navigate a pure-elisp `init.el'. So that's
8;; what I'm doing.
9;;; Basic emacs config & built-in packages
10;;;; /Really/ basic emacs config
11;; I /did/ use `better-defaults', but it turns out that that package
12;; is (a) short and (b) mostly overriden by other settings.
5(use-package emacs 13(use-package emacs
6 :demand 14 :demand ; make sure this stuff loads
7 :init 15 :init
16 ;; where I am
8 (setq calendar-location-name "Baton Rouge, LA") 17 (setq calendar-location-name "Baton Rouge, LA")
9 (setq calendar-latitude 30.39) 18 (setq calendar-latitude 30.39)
10 (setq calendar-longitude -91.83) 19 (setq calendar-longitude -91.83)
11 20
12 (setq browse-url-browser-function 'browse-url-generic) 21 ;; firefox is love, firefox is life
13 (setq browse-url-generic-program "firefox")) 22 (setq browse-url-browser-function 'browse-url-firefox
23 browse-url-new-window-flag t
24 browse-url-firefox-new-window-is-tab t)
14 25
15(use-package no-littering 26 ;; honestly not sure if this is necessary
16 :config 27 (autoload 'zap-up-to-char "misc"
17 (require 'recentf) 28 "Kill up to, but not including, ARGth occurence of CHAR." t)
18 (add-to-list 'recentf-exclude no-littering-var-directory)
19 (add-to-list 'recentf-exclude no-littering-etc-directory)
20 29
21 (setq delete-old-versions t) 30 ;; show parentheses
22 (setq kept-new-versions 6) 31 (setq show-paren-style 'mixed)
23 (setq kept-old-versions 2) 32 (show-paren-mode)
24 (setq version-control t)
25 (setq backup-directory-alist
26 `((".*" . ,(no-littering-expand-var-file-name "backup/"))))
27 33
28 (setq auto-save-file-name-transforms 34 ;; always work on visual lines
29 `((".*" ,(no-littering-expand-var-file-name "auto-save/") t))) 35 (global-visual-line-mode)
30 (auto-save-mode)
31 36
32 (setq custom-file (no-littering-expand-etc-file-name "custom.el")) 37 ;; make the mouse avoid where I'm typing
38 (mouse-avoidance-mode 'jump)
33 39
34 (setq create-lockfiles nil)) 40 ;; delete the selection when I start typing, like a normal editor
41 (delete-selection-mode)
35 42
36(use-package auth-source 43 ;; ignore case
37 :init 44 (setq-default completion-ignore-case t
38 (setq auth-sources '("~/.authinfo")) ;; TODO: gpg 45 read-buffer-completion-ignore-case t
39 (setq user-full-name "Case Duckworth") 46 read-file-name-completion-ignore-case t)
40 (setq user-mail-address "acdw@acdw.net"))
41 47
42(use-package better-defaults 48 ;; etc defaults
43 :demand 49 (fset 'yes-or-no-p 'y-or-n-p)
44 :config ; add other "better defaults" of my own 50 (setq-default indent-tabs-mode nil
51 save-interprogram-paste-before-kill t
52 apropos-do-all t
53 mouse-yank-at-point t
54 require-final-newline t
55 visible-bell (not *acdw/at-larry*)
56 ediff-window-setup-function 'ediff-setup-windows-plain
57 use-dialog-box nil
58 mark-even-if-inactive nil
59 sentence-end-double-space t)
60
61 ;; utf-8 is now, old man
62 (set-charset-priority 'unicode)
63 (set-language-environment "UTF-8")
64 (set-default-coding-systems 'utf-8)
65 (set-terminal-coding-system 'utf-8)
66 (set-keyboard-coding-system 'utf-8)
67 (set-selection-coding-system 'utf-8)
68 (prefer-coding-system 'utf-8)
69 (setq default-buffer-file-coding-system 'utf-8
70 default-process-coding-system '(utf-8-unix . utf-8-unix)
71 locale-coding-system 'utf-8)
72
73 ;; don't confirm killing
74 (setq confirm-kill-processes nil
75 confirm-kill-emacs nil)
76
77 ;; simplify the GUI
78 (setq default-frame-alist '((tool-bar-lines . 0)
79 (menu-bar-lines . 0)
80 (vertical-scroll-bars . nil)
81 (horizontal-scroll-bars . nil)
82 (right-divider-width . 2)
83 (bottom-divider-width . 2)
84 (left-fringe-width . 2)
85 (right-fringe-width . 2))
86 inhibit-startup-buffer-menu t
87 inhibit-startup-screen t
88 initial-buffer-choice t
89 initial-scratch-message nil)
90
91 ;; When at larry, fullscreen emacs.
45 (when *acdw/at-larry* 92 (when *acdw/at-larry*
46 (setq visible-bell nil)) 93 (add-to-list 'default-frame-alist '(fullscreen . maximized)))
47 94
48 (auto-save-mode) 95 ;; set up the cursor
96 (blink-cursor-mode 0)
97 (setq-default cursor-type 'bar
98 cursor-in-non-selected-windows 'hollow)
49 99
50 (defun full-auto-save () 100 ;; display line numbers in `prog-mode'
51 (interactive) 101 (add-hook 'prog-mode-hook
52 (save-excursion 102 (if (and (fboundp 'display-line-numbers-mode)
53 (dolist (buf (buffer-list)) 103 (display-graphic-p))
54 (set-buffer buf) 104 #'display-line-numbers-mode
55 (if (and (buffer-file-name) (buffer-modified-p)) 105 #'linum-mode))
56 (basic-save-buffer)))))
57 (add-hook 'auto-save-hook 'full-auto-save)
58 (add-hook 'focus-out-hook 'full-auto-save) ; might be resource-intensive
59 106
60 ;; follow the split! 107 ;; custom functions
61 (defun split-and-follow-below () 108 (defun split-and-follow-below ()
109 "Split the window below and switch to the split."
62 (interactive) 110 (interactive)
63 (split-window-below) 111 (split-window-below)
64 (balance-windows) 112 (balance-windows)
65 (other-window 1)) 113 (other-window 1))
66 114
67 (defun split-and-follow-right () 115 (defun split-and-follow-right ()
116 "Split the window right and switch to the split."
68 (interactive) 117 (interactive)
69 (split-window-right) 118 (split-window-right)
70 (balance-windows) 119 (balance-windows)
71 (other-window 1)) 120 (other-window 1))
72 121
73 (setq save-place-file (no-littering-expand-var-file-name "places")) 122 (defun full-auto-save ()
74 (save-place-mode) 123 "Save all buffers that (a) have files associated and (b) are modified."
75 124 (interactive)
76 (set-language-environment "UTF-8") 125 (save-excursion
77 (prefer-coding-system 'utf-8) 126 (dolist (buf (buffer-list))
78 (set-default-coding-systems 'utf-8) 127 (set-buffer buf)
79 (set-terminal-coding-system 'utf-8) 128 (if (and (buffer-file-name) (buffer-modified-p))
80 (set-keyboard-coding-system 'utf-8) 129 (basic-save-buffer)))))
81 (setq default-buffer-file-coding-system 'utf-8)
82
83 (fset 'yes-or-no-p 'y-or-n-p)
84
85 (global-visual-line-mode)
86 (mouse-avoidance-mode 'jump)
87 (setq show-paren-style 'mixed)
88 (delete-selection-mode 1)
89
90 ;; TODO figure out how to add this to the :hook block
91 (add-hook 'prog-mode-hook (if (and (fboundp 'display-line-numbers-mode)
92 (display-graphic-p))
93 #'display-line-numbers-mode
94 #'linum-mode))
95
96 (setq completion-ignore-case t)
97 (setq read-buffer-completion-ignore-case t)
98 (setq read-file-name-completion-ignore-case t)
99
100 ;; don't confirm death
101 (setq confirm-kill-processes nil)
102 (setq confirm-kill-emacs nil)
103 130
104 ;; cursor betterment 131 (defun kill-this-buffer ()
105 (blink-cursor-mode 0) 132 "Kill the current buffer."
106 (setq-default cursor-type 'bar) 133 (interactive)
134 (kill-buffer nil))
107 135
108 :bind 136 :bind
137 ("C-x C-b" . ibuffer)
138 ("M-z" . zap-up-to-char)
109 ([remap split-window-below] . split-and-follow-below) 139 ([remap split-window-below] . split-and-follow-below)
110 ([remap split-window-right] . split-and-follow-right) 140 ([remap split-window-right] . split-and-follow-right)
141 ("C-x f" . find-file)
142 ("C-z" . nil)
143 ("C-x k" . kill-this-buffer)
144 ("C-x K" . kill-buffer)
111 145
112 :hook 146 :hook
113 (prog-mode-hook . prettify-symbols-mode) 147 (prog-mode-hook . prettify-symbols-mode)
114 (auto-save-hook . full-auto-save) 148 ((auto-save-hook focus-out-hook) . full-auto-save)
115 (focus-out-hook . full-auto-save)
116 (before-save-hook . delete-trailing-whitespace)) 149 (before-save-hook . delete-trailing-whitespace))
117 150
118(use-package async 151;;;; Keep .emacs.d clean
152;; load this early for other packages to use
153(use-package no-littering
154 :demand
119 :config 155 :config
120 (dired-async-mode 1)) 156 (setq custom-file (no-littering-expand-etc-file-name "custom.el"))
121 157
122(use-package auto-compile 158 (setq create-lockfiles nil)
123 :config
124 (auto-compile-on-load-mode)
125 (setq load-prefer-newer t))
126 159
127;; start the server when at home 160 (setq delete-old-versions t
161 kept-new-versions 6
162 kept-old-versions 2
163 version-control t)
128 164
129(if *acdw/at-home* 165 (setq backup-directory-alist
130 (server-start)) 166 `((".*" . ,(no-littering-expand-var-file-name "backup/"))))
131 167
132;;; quality-of-life improvements 168 (setq auto-save-file-name-transforms
169 `((".*" ,(no-littering-expand-var-file-name "auto-save/") t)))
170 (auto-save-mode))
133 171
134(use-package diminish) 172;;;; Uniquily name buffers
173(use-package uniquify
174 :straight nil
175 :init
176 (setq uniquify-buffer-name-style 'forward))
135 177
136(use-package which-key 178;;;; Use async when possible
137 :diminish which-key-mode 179(use-package async
138 :config 180 :config
139 (which-key-mode)) 181 (dired-async-mode))
182
183;;;; Autocompile elisp files (like this one)
184(use-package auto-compile
185 :init
186 (setq load-prefer-newer t)
187 :config
188 (auto-compile-on-load-mode))
140 189
190;;;; Recent files
141(use-package recentf 191(use-package recentf
142 :init 192 :init
143 (setq recentf-max-menu-items 100) 193 (setq recentf-max-menu-items 100
144 (setq recentf-max-saved-items 100) 194 recentf-max-saved-items 100)
145 :config 195 :config
196 (add-to-list 'recentf-exclude no-littering-var-directory)
197 (add-to-list 'recentf-exclude no-littering-etc-directory)
146 (recentf-mode)) 198 (recentf-mode))
199;;;; Save places in files
200(use-package saveplace
201 :init
202 (setq save-place-file (no-littering-expand-var-file-name "places"))
203 (when *acdw/at-work*
204 (setq save-place-forget-unreadable-files nil))
205 :config
206 (save-place-mode))
147 207
208;;;; Save history of commands, etc.
148(use-package savehist 209(use-package savehist
149 :config 210 :init
150 (savehist-mode)
151 (setq savehist-additional-variables 211 (setq savehist-additional-variables
152 '(kill-ring search-ring regexp-search-ring))) 212 '(kill-ring
153 213 search-ring
154(use-package restart-emacs) 214 regexp-search-ring))
155
156(use-package volatile-highlights
157 :config
158 (volatile-highlights-mode t))
159
160(use-package zop-to-char
161 :bind
162 ([remap zap-to-char] . zop-to-char)
163 ([remap zap-up-to-char] . zop-up-to-char))
164
165(use-package easy-kill
166 :bind
167 ([remap kill-ring-save] . easy-kill)
168 ([remap mark-sexp] . easy-mark))
169
170(use-package whole-line-or-region
171 :config
172 (whole-line-or-region-global-mode 1))
173
174(use-package avy
175 :bind
176 ("M-s" . avy-goto-char-timer))
177
178(use-package selectrum
179 :config
180 (ido-mode -1) ;; not sure why this is necessary
181 (setq enable-recursive-minibuffers t)
182 (minibuffer-depth-indicate-mode)
183 (selectrum-mode 1))
184
185(use-package prescient)
186
187(use-package selectrum-prescient
188 :config
189 (selectrum-prescient-mode 1)
190 (prescient-persist-mode 1))
191
192(use-package ctrlf
193 :config 215 :config
194 (ctrlf-mode 1)) 216 (savehist-mode))
195 217
196;;; programming 218;;;; Authority sources for logins
197 219;; TODO: use gpg
198(use-package aggressive-indent 220(use-package auth-source
199 :diminish aggressive-indent-mode 221 :init
200 :hook 222 (setq auth-sources '("~/.authinfo"))
201 (prog-mode-hook . aggressive-indent-mode)) 223 (setq user-full-name "Case Duckworth")
224 (setq user-mail-address "acdw@acdw.net"))
202 225
203(use-package magit 226;;; General-ish Packages
204 :if *acdw/at-home* 227;;;; General improvements
205 :bind 228;;;;; Diminish TODO: is this necessary?
206 ("C-x g" . magit)) 229(use-package diminish)
207 230
208(use-package forge 231;;;;; Restart emacs /from within/ emacs
209 :if *acdw/at-home* 232(use-package restart-emacs)
210 :after magit
211 :custom
212 (forge-owned-accounts '(("duckwork"))))
213 233
214(use-package company 234;;;; User interface
215 :commands company-mode 235;;;;; Pop-up help for keys
236(use-package which-key
237 :diminish which-key-mode
216 :init 238 :init
217 (setq company-idle-delay 0.1) 239 (setq which-key-enable-extended-define-key t)
218 :hook
219 (prog-mode-hook . company-mode)
220 :bind (:map company-active-map
221 ("C-n" . company-select-next)
222 ("C-p" . company-select-previous))
223 :config 240 :config
224 (use-package company-quickhelp 241 (which-key-setup-side-window-right-bottom)
225 :hook 242 (which-key-mode))
226 (company-mode-hook . (lambda ()
227 (company-quickhelp-local-mode)))))
228 243
244;;;;; A better help buffer
229(use-package helpful 245(use-package helpful
230 :bind 246 :bind
231 ("C-h f" . helpful-callable) 247 ("C-h f" . helpful-callable)
@@ -235,40 +251,37 @@
235 ("C-h F" . helpful-function) 251 ("C-h F" . helpful-function)
236 ("C-h C" . helpful-command)) 252 ("C-h C" . helpful-command))
237 253
238(when *acdw/at-home* 254;;;;; A better `outline-mode'
239 (use-package su 255(use-package outshine
240 :config 256 :init
241 (su-mode)) 257 (setq outshine-cycle-emulate-tab t)
242 258 :bind (:map outshine-mode-map
243 (use-package trashed 259 ("<S-iso-lefttab>" . outshine-cycle-buffer)
244 :init 260 ("<backtab>" . outshine-cycle-buffer))
245 (setq delete-by-moving-to-trash t)))
246
247(use-package smartparens
248 :config
249 (require 'smartparens-config)
250 (smartparens-global-mode))
251
252(use-package rainbow-mode
253 :hook 261 :hook
254 (prog-mode-hook . rainbow-mode)) 262 (emacs-lisp-mode-hook: . outshine-mode))
255 263
256(use-package slime 264;;;;; Item selection & narrowing
265(use-package selectrum
257 :init 266 :init
258 (setq inferior-lisp-program "/usr/bin/sbcl")) 267 (setq enable-recursive-minibuffers t)
268 (minibuffer-depth-indicate-mode)
269 :config
270 (selectrum-mode))
259 271
260;;; writing 272(use-package prescient)
261 273
262(use-package visual-fill-column 274(use-package selectrum-prescient
263 :init
264 (setq split-window-preferred-function 'visual-fill-column-split-window-sensibly)
265 (setq visual-fill-column-center-text t)
266 :config 275 :config
267 (advice-add 'text-scale-adjust 276 (selectrum-prescient-mode)
268 :after #'visual-fill-column-adjust)) 277 (prescient-persist-mode))
269 278
270;;; window management 279;;;;; Searching
280(use-package ctrlf
281 :config
282 (ctrlf-mode))
271 283
284;;;;; Visually switch windows
272(use-package switch-window 285(use-package switch-window
273 :init 286 :init
274 (setq switch-window-shortcut-style 'qwerty) 287 (setq switch-window-shortcut-style 'qwerty)
@@ -276,37 +289,20 @@
276 ([remap other-window] . switch-window) 289 ([remap other-window] . switch-window)
277 ("s-o" . switch-window)) 290 ("s-o" . switch-window))
278 291
279;;; theming and looks 292;;;; Theming, looks, fonts
280 293;;;;; Modeline
281(use-package dynamic-fonts
282 :init
283 (setq dynamic-fonts-preferred-monospace-fonts
284 '("Iosevka Term Slab"
285 "Consolas"
286 "Fira Code"
287 "DejaVu Sans Mono"
288 "Courier"
289 "Fixed"))
290 (setq dynamic-fonts-preferred-monospace-point-size 11)
291 (setq dynamic-fonts-preferred-proportional-fonts
292 '("DejaVu Sans"
293 "Georgia"
294 "Times New Roman"
295 "Times"))
296 (setq dynamic-fonts-preferred-proportional-point-size 12)
297 :config
298 (dynamic-fonts-setup))
299
300(use-package doom-modeline 294(use-package doom-modeline
301 :init 295 :init
302 (setq doom-modeline-icon nil) 296 (setq doom-modeline-icon nil
303 (setq doom-modeline-enable-word-count t) 297 doom-modeline-enable-word-count t)
298
304 (when *acdw/at-larry* 299 (when *acdw/at-larry*
305 (setq display-time-format "%R") 300 (setq display-time-format "%R")
306 (display-time-mode)) 301 (display-time-mode))
307 :hook
308 (after-init-hook . doom-modeline-mode))
309 302
303 :hook
304 (window-setup-hook . doom-modeline-mode))
305;;;;; Ligatures
310(use-package ligature 306(use-package ligature
311 :straight (ligature 307 :straight (ligature
312 :host github 308 :host github
@@ -327,14 +323,12 @@
327 ":=" "..." ":>" ":<" ">:" "<:" 323 ":=" "..." ":>" ":<" ">:" "<:"
328 "::=" ;; add others here 324 "::=" ;; add others here
329 )) 325 ))
330 (global-ligature-mode t)) 326 (global-ligature-mode))
331 327;;;;; Unicode
332(use-package unicode-fonts 328(use-package unicode-fonts
333 :config 329 :config
334 (unicode-fonts-setup)) 330 (unicode-fonts-setup))
335 331;;;;; Modus themes
336;; modus themes
337
338(use-package modus-operandi-theme 332(use-package modus-operandi-theme
339 :if window-system 333 :if window-system
340 :config 334 :config
@@ -362,8 +356,131 @@
362 (run-at-time (nth 4 (split-string (sunrise-sunset))) 356 (run-at-time (nth 4 (split-string (sunrise-sunset)))
363 (* 60 60 24) #'acdw/sunset) 357 (* 60 60 24) #'acdw/sunset)
364 (run-at-time "12am" (* 60 60 24) #'acdw/sunset))) 358 (run-at-time "12am" (* 60 60 24) #'acdw/sunset)))
359;;;; General text editing
360;;;;; Jump to characters fast
361(use-package avy
362 :bind
363 ("M-s" . avy-goto-char-timer))
364;;;;; Show text commands acted on
365(use-package volatile-highlights
366 :config
367 (volatile-highlights-mode))
368;;;;; Visual replacement for `zap-to-char'
369(use-package zop-to-char
370 :bind
371 ([remap zap-to-char] . zop-to-char)
372 ([remap zap-up-to-char] . zop-up-to-char))
373;;;;; Kill & mark things more visually
374(use-package easy-kill
375 :bind
376 ([remap kill-ring-save] . easy-kill)
377 ([remap mark-sexp] . easy-mark))
378;;;;; Operate on the current line if no region is active
379(use-package whole-line-or-region
380 :config
381 (whole-line-or-region-global-mode))
382
383;;;;; Expand region
384(use-package expand-region
385 :bind
386 ("C-=" . er/expand-region))
387;;;; Programming
388;;;;; Code completion
389(use-package company
390 :init
391 (setq company-idle-delay 0.1
392 company-show-numbers t)
393 :config
394 (let ((map company-active-map))
395 (mapc (lambda (x)
396 (define-key map (format "%d" x)
397 `(lambda ()
398 (interactive)
399 (company-complete-number ,x))))
400 (number-sequence 0 9)))
401 :hook
402 (prog-mode-hook . company-mode)
403 :bind (:map company-active-map
404 ("C-n" . company-select-next)
405 ("C-p" . company-select-previous)))
406
407(use-package company-quickhelp
408 :hook
409 (company-mode-hook . company-quickhelp-local-mode))
410
411(use-package company-prescient
412 :hook
413 (company-mode-hook . company-prescient-mode))
414
415;;;;; Git integration
416(use-package magit
417 :if *acdw/at-home*
418 :bind
419 ("C-x g" . magit-status)
420 :config
421 (add-to-list 'magit-no-confirm 'stage-all-changes))
422
423;; use libgit to speed up magit, only at home
424(when (and *acdw/at-home* (executable-find "cmake"))
425 (use-package libgit)
365 426
366;;; gemini/gopher 427 (use-package magit-libgit
428 :after (magit libgit))
429 )
430
431(use-package forge
432 :if *acdw/at-home*
433 :after magit
434 :config
435 (setq forge-owned-accounts '(("duckwork"))))
436;;;;; Code formatting & display
437;;;;;; Keep code properly indented
438(use-package aggressive-indent
439 :diminish aggressive-indent-mode
440 :hook
441 (prog-mode-hook . aggressive-indent-mode))
442;;;;;; Smartly deal with pairs
443(use-package smartparens
444 :config
445 (require 'smartparens-config)
446 (smartparens-global-mode))
447;;;;;; Show delimiters as different colors
448(use-package rainbow-delimiters
449 :hook
450 (prog-mode-hook . rainbow-delimiters-mode))
451;;;;;; Show colors as they appear in the buffer
452(use-package rainbow-mode
453 :hook
454 (prog-mode-hook . rainbow-mode))
455;;;; Writing
456;;;;; `fill-column', but in `visual-line-mode'
457(use-package visual-fill-column
458 :init
459 (setq split-window-preferred-function 'visual-fill-column-split-window-sensibly)
460 (setq visual-fill-column-center-text t)
461 :config
462 (advice-add 'text-scale-adjust
463 :after #'visual-fill-column-adjust))
464
465;;;; Machine-specific
466;;;;; Linux at home
467(when *acdw/at-home*
468;;;;;; Edit files with `sudo' (I think?)
469 (use-package su
470 :config
471 (su-mode))
472;;;;;; Implement XDG Trash specification
473 (use-package trashed
474 :init
475 (setq delete-by-moving-to-trash t))
476;;;;;; Build exec-path from $PATH
477 (use-package exec-path-from-shell
478 :demand
479 :config
480 (exec-path-from-shell-initialize))
481 )
482;;; Specialized packages
483;;;; Gemini & Gopher
367(use-package elpher 484(use-package elpher
368 :straight (elpher 485 :straight (elpher
369 :repo "git://thelambdalab.xyz/elpher.git") 486 :repo "git://thelambdalab.xyz/elpher.git")
@@ -372,7 +489,10 @@
372 ("p" . elpher-prev-link) 489 ("p" . elpher-prev-link)
373 ("o" . elpher-follow-current-link) 490 ("o" . elpher-follow-current-link)
374 ("G" . elpher-go-current)) 491 ("G" . elpher-go-current))
375 :hook (elpher-mode-hook . variable-pitch-mode)) 492 :hook (elpher-mode-hook . (lambda ()
493 (variable-pitch-mode)
494 (set-fill-column 100)
495 (visual-fill-column-mode))))
376 496
377(use-package gemini-mode 497(use-package gemini-mode
378 :straight (gemini-mode 498 :straight (gemini-mode
@@ -418,7 +538,7 @@
418 (re-search-forward "\\(gemini://.*\\.gmi\\)") 538 (re-search-forward "\\(gemini://.*\\.gmi\\)")
419 (elpher-go (match-string 1))))) 539 (elpher-go (match-string 1)))))
420 540
421;;; exwm ~ Emacs X Window Manager 541;;;; exwm ~ Emacs X Window Manager
422(when *acdw/at-larry* 542(when *acdw/at-larry*
423 (use-package exwm 543 (use-package exwm
424 :if window-system 544 :if window-system
@@ -515,7 +635,7 @@
515 635
516 ) ;; end of *acdw/at-larry* block for exwm 636 ) ;; end of *acdw/at-larry* block for exwm
517 637
518;;; other applications 638;;;; IRC
519(use-package circe 639(use-package circe
520 :if *acdw/at-larry* 640 :if *acdw/at-larry*
521 :init 641 :init
@@ -582,8 +702,7 @@
582 (circe-originator-face ((t (:weight bold)))) 702 (circe-originator-face ((t (:weight bold))))
583 (circe-prompt-face ((t (:inherit 'circe-my-message-face))))) 703 (circe-prompt-face ((t (:inherit 'circe-my-message-face)))))
584 704
585;;; eshell 705;;;; eshell
586
587(use-package eshell 706(use-package eshell
588 :init 707 :init
589 (defun eshell/emacs (&rest args) 708 (defun eshell/emacs (&rest args)
@@ -607,9 +726,9 @@
607(use-package eshell-syntax-highlighting 726(use-package eshell-syntax-highlighting
608 :after esh-mode 727 :after esh-mode
609 :config 728 :config
610 (eshell-syntax-highlighting-global-mode 1)) 729 (eshell-syntax-highlighting-global-mode))
611 730
612;;; org-mode 731;;;; org-mode
613(use-package org 732(use-package org
614 :init 733 :init
615 (setq org-startup-indented t) 734 (setq org-startup-indented t)
@@ -625,27 +744,11 @@
625 (match-end 1) 744 (match-end 1)
626 "•")))))) 745 "•"))))))
627 :hook 746 :hook
628 (org-mode-hook . (lambda () 747 (org-mode-hook . variable-pitch-mode))
629 (variable-pitch-mode 1)
630 (visual-line-mode)
631 (visual-fill-column-mode))))
632 748
633(use-package org-bullets 749(use-package org-bullets
634 :hook 750 :hook
635 (org-mode-hook . (lambda () (org-bullets-mode 1)))) 751 (org-mode-hook . (lambda () (org-bullets-mode))))
636 752
637;; ;;; gnus 753(provide 'init)
638;; (use-package gnus 754;;; init.el ends here
639;; :straight (:type built-in)
640;; :config
641;; (setq gnus-select-method '(nnnil ""))
642;; (setq gnus-secondary-select-methods
643;; '((nnmaildir "fastmail" (directory "~/.mail/fastmail"))))
644;; (setq gnus-parameters
645;; '((".*" ; fallback
646;; (posting-style
647;; (gcc "nnmaildir+fastmail:Sent")
648;; (From
649;; (format "%s <%s>" user-full-name user-mail-address))))))
650;; (setq gnus-gcc-mark-as-read t)
651;; (setq gnus-agent t))