summary refs log tree commit diff stats
path: root/init.el
diff options
context:
space:
mode:
Diffstat (limited to 'init.el')
-rw-r--r--init.el262
1 files changed, 11 insertions, 251 deletions
diff --git a/init.el b/init.el index ab596b6..52fc593 100644 --- a/init.el +++ b/init.el
@@ -1,251 +1,11 @@
1;;; init.el -*- lexical-binding: t; coding: utf-8; -*- 1 ;; This file replaces itself with the actual configuration when first run. To keep only this version in git, run this command:
2 2 ;; git update-index --assume-unchanged init.el
3;;; Commentary: 3 ;;
4;; BANKRUPT_SCORE: 1 4 ;; If it needs to be changed, start tracking it again thusly:
5;; ^ the number of times I've declared Emacs bankruptcy. 5 ;; git update-index --no-assume-unchanged init.el
6;; Does this mean I'm part of the cool kids now? 6
7 7 (require 'org)
8;;; Macros 8 (find-file (concat user-emacs-directory "init.org"))
9(defmacro cuss (var val) 9 (org-babel-tangle)
10 "Basically `use-package' `:custom' but without either." 10 (load-file (concat user-emacs-directory "init.el"))
11 `(progn 11 (byte-compile-file (concat user-emacs-directory "init.el"))
12 (funcall (or (get ',var 'custom-set) #'set-default)
13 ',var ,val)))
14
15;;; Files
16;; keep `emacs-user-directory' tidy
17(use-package no-littering)
18
19;; don't clutter `init.el' with customize crap
20(cuss custom-file (no-littering-expand-etc-file-name "custom.el"))
21
22;; backups
23(cuss backup-directory-alist
24 `((".*" . ,(no-littering-expand-var-file-name "backup/"))))
25
26;; recent files
27(use-package recentf
28 :config
29 (add-to-list 'recentf-exclude no-littering-var-directory)
30 (add-to-list 'recentf-exclude no-littering-etc-directory)
31 :custom
32 (recentf-max-menu-items 100)
33 (recentf-max-saved-items 100)
34 :config
35 (recentf-mode +1))
36
37;; encoding
38(set-charset-priority 'unicode)
39(set-language-environment "UTF-8")
40(set-default-coding-systems 'utf-8)
41(set-terminal-coding-system 'utf-8)
42(set-keyboard-coding-system 'utf-8)
43(set-selection-coding-system 'utf-8)
44(prefer-coding-system 'utf-8)
45
46;;; Save/Restore
47;; autosave, but like, better
48(use-package super-save
49 :custom
50 (auto-save-default nil)
51 (super-save-auto-save-when-idle t)
52 (super-save-exclude '(".gpg"))
53 :config
54 (super-save-mode +1))
55
56;; save places in files
57(use-package saveplace
58 :custom
59 (save-place-file (no-littering-expand-var-file-name "places"))
60 :config
61 (save-place-mode +1))
62
63;; save history of variables
64(use-package savehist
65 :custom
66 (savehist-additional-variables
67 '(kill-ring
68 search-ring
69 regexp-search-ring))
70 :config
71 (savehist-mode +1))
72
73;;; Buffers
74;; uniquely name buffers
75(cuss uniquify-buffer-name-style 'forward)
76
77;;; UI
78;; frame defaults
79(cuss default-frame-alist '((tool-bar-lines . 0)
80 (menu-bar-lines . 0)
81 (vertical-scroll-bars . nil)
82 (horizontal-scroll-bars . nil)
83 (right-divider-width . 2)
84 (bottom-divider-width . 2)
85 (left-fringe-width . 2)
86 (right-fringe-width . 2)))
87
88;; also disable these with modes, so I can re-enable them more easily
89(menu-bar-mode -1)
90(tool-bar-mode -1)
91(scroll-bar-mode -1)
92
93;; cursor
94(cuss cursor-type 'bar)
95(cuss cursor-in-non-selected-windows 'hollow)
96(blink-cursor-mode 0)
97
98;; mouse
99(cuss mouse-yank-at-point t) ; yank at the point instead of where clicked
100
101;; startup screen
102(cuss inhibit-startup-buffer-menu t)
103(cuss inhibit-startup-screen t)
104(cuss initial-buffer-choice t) ; start in *scratch*
105(cuss initial-scratch-message nil)
106
107;; interactivity
108(fset 'yes-or-no-p #'y-or-n-p)
109
110(cuss use-dialog-box nil)
111(cuss disabled-command-function nil)
112
113;; themes
114(use-package modus-operandi-theme
115 :config
116 (load-theme 'modus-operandi t))
117
118(use-package modus-vivendi-theme)
119
120;; fonts
121(set-face-attribute 'default nil
122 :family "DejaVu Sans Mono"
123 :height 110)
124
125(set-face-attribute 'fixed-pitch nil
126 :family "DejaVu Sans Mono"
127 :height 110)
128
129(set-face-attribute 'variable-pitch nil
130 :family "DejaVu Serif"
131 :height 120)
132
133;; unicode
134(use-package unicode-fonts
135 :config
136 (unicode-fonts-setup))
137
138;;; Selecting / Minibuffer
139;; ignore case
140(cuss completion-ignore-case t)
141(cuss read-buffer-completion-ignore-case t)
142(cuss read-file-name-completion-ignore-case t)
143
144(use-package selectrum
145 :config
146 (selectrum-mode +1))
147
148(use-package prescient
149 :config
150 (prescient-persist-mode +1))
151
152(use-package selectrum-prescient
153 :after (selectrum prescient)
154 :config
155 (selectrum-prescient-mode +1))
156
157;; searching
158(use-package ctrlf
159 :custom
160 (ctrlf-show-match-count-at-eol nil)
161 :config
162 (ctrlf-mode +1))
163
164;;; Undo
165(use-package undo-fu
166 :bind
167 ("C-/" . undo-fu-only-undo)
168 ("C-?" . undo-fu-only-redo))
169
170(use-package undo-fu-session
171 :after no-littering
172 :custom
173 (undo-fu-session-incompatible-files
174 '("/COMMIT_EDITMSG\\'"
175 "/git-rebase-todo\\'"))
176 (undo-fu-session-directory
177 (no-littering-expand-var-file-name "undos/"))
178 :config
179 (global-undo-fu-session-mode +1))
180
181;;; Text editing
182;; visual line mode
183(global-visual-line-mode +1)
184
185(use-package whole-line-or-region
186 :config
187 (whole-line-or-region-global-mode +1))
188
189(use-package expand-region
190 :bind
191 ("C-=" . er/expand-region))
192
193;; delete the selection when typing
194(delete-selection-mode +1)
195
196;; clipboard
197(cuss save-interprogram-paste-before-kill t) ; save existing clipboard text to kill ring before replacing it
198
199;; don't insert tabs.
200(cuss indent-tabs-mode nil)
201
202;;; Programming
203;; Git
204(use-package magit
205 :bind
206 ("C-x g" . magit-status)
207 :config
208 (add-to-list 'magit-no-confirm 'stage-all-changes))
209
210(when (executable-find "cmake")
211 (use-package libgit)
212 (use-package magit-libgit))
213
214(use-package forge
215 :after magit
216 :custom
217 (forge-owned-accounts '(("duckwork"))))
218
219;; Code formatting
220(use-package format-all
221 :hook
222 (prog-mode . format-all-mode))
223
224;; display
225(add-hook 'prog-mode-hook #'prettify-symbols-mode)
226
227;; parentheses
228(cuss show-paren-style 'mixed)
229(show-paren-mode +1)
230
231(use-package smartparens
232 :init
233 (defun acdw/setup-smartparens ()
234 (require 'smartparens-config)
235 (smartparens-mode +1))
236 :hook
237 (prog-mode . acdw/setup-smartparens))
238
239(use-package rainbow-delimiters
240 :hook
241 (prog-mode . rainbow-delimiters-mode))
242
243;; line numbers
244(add-hook 'prog-mode-hook
245 (if (and (fboundp 'display-line-numbers-mode)
246 (display-graphic-p))
247 #'display-line-numbers-mode
248 #'linum-mode))
249
250;;; Writing
251(cuss sentence-end-double-space t)