diff options
Diffstat (limited to 'lisp/acdw-defaults.el')
-rw-r--r-- | lisp/acdw-defaults.el | 292 |
1 files changed, 292 insertions, 0 deletions
diff --git a/lisp/acdw-defaults.el b/lisp/acdw-defaults.el new file mode 100644 index 0000000..80b2bcc --- /dev/null +++ b/lisp/acdw-defaults.el | |||
@@ -0,0 +1,292 @@ | |||
1 | ;;; acdw-defaults.el --- measured defaults for Emacs -*- lexical-binding: t -*- | ||
2 | ;; by C. Duckworth <acdw@acdw.net> | ||
3 | |||
4 | ;;; Commentary: | ||
5 | |||
6 | ;; I find myself copy-pasting a lot of "boilerplate" type code when | ||
7 | ;; bankrupting my Emacs config and starting afresh. Instead of doing | ||
8 | ;; that, I'm putting it here, where it'll be easier to include in my | ||
9 | ;; config. | ||
10 | |||
11 | ;; Of course, some might say I could just ... stop bankrupting my | ||
12 | ;; Emacs. But like, why would I want to? | ||
13 | |||
14 | ;;; Code: | ||
15 | |||
16 | (require 'seq) | ||
17 | |||
18 | (defvar default-ring-max 256 | ||
19 | "Default maximum for ring variables.") | ||
20 | |||
21 | (unless (boundp 'use-short-answers) | ||
22 | (fset 'yes-or-no-p 'y-or-n-p)) | ||
23 | |||
24 | (setc async-shell-command-buffer 'new-buffer | ||
25 | async-shell-command-display-buffer nil | ||
26 | auto-hscroll-mode t | ||
27 | auto-window-vscroll nil | ||
28 | cursor-in-non-selected-windows 'hollow | ||
29 | cursor-type 'bar | ||
30 | echo-keystrokes 0.01 | ||
31 | fast-but-imprecise-scrolling t | ||
32 | fill-column 80 | ||
33 | global-mark-ring-max default-ring-max | ||
34 | hscroll-margin 1 | ||
35 | hscroll-step 1 | ||
36 | inhibit-startup-screen t | ||
37 | initial-buffer-choice t | ||
38 | kill-do-not-save-duplicates t | ||
39 | kill-read-only-ok t | ||
40 | kill-ring-max default-ring-max | ||
41 | kmacro-ring-max default-ring-max | ||
42 | mark-ring-max default-ring-max | ||
43 | read-answer-short t | ||
44 | read-process-output-max (* 10 1024 1024) | ||
45 | ring-bell-function #'ignore | ||
46 | save-interprogram-paste-before-kill t | ||
47 | scroll-conservatively 25 | ||
48 | scroll-margin 0 | ||
49 | scroll-preserve-screen-position 1 | ||
50 | scroll-step 1 | ||
51 | sentence-end-double-space t | ||
52 | set-mark-command-repeat-pop t | ||
53 | tab-width 8 | ||
54 | undo-limit (* 10 1024 1024) | ||
55 | use-dialog-box nil | ||
56 | use-file-dialog nil | ||
57 | use-short-answers t | ||
58 | window-resize-pixelwise t | ||
59 | yank-pop-change-selection t) | ||
60 | |||
61 | ;;; Encodings | ||
62 | |||
63 | ;; Allegedly, this is the only one you need... | ||
64 | (set-language-environment "UTF-8") | ||
65 | ;; But I still set all of these, for fun. | ||
66 | (setq-default buffer-file-coding-system 'utf-8-unix | ||
67 | coding-system-for-read 'utf-8-unix | ||
68 | coding-system-for-write 'utf-8-unix | ||
69 | default-process-coding-system '(utf-8-unix . utf-8-unix) | ||
70 | locale-coding-system 'utf-8-unix | ||
71 | x-select-request-type '(UTF8_STRING | ||
72 | COMPOUND_TEXT | ||
73 | TEXT | ||
74 | STRING)) | ||
75 | |||
76 | (set-charset-priority 'unicode) | ||
77 | (prefer-coding-system 'utf-8-unix) | ||
78 | (set-default-coding-systems 'utf-8-unix) | ||
79 | (set-terminal-coding-system 'utf-8-unix) | ||
80 | (set-keyboard-coding-system 'utf-8-unix) | ||
81 | |||
82 | (pcase system-type | ||
83 | ((or 'ms-dos 'windows-nt) | ||
84 | (set-clipboard-coding-system 'utf-16-le) | ||
85 | (set-selection-coding-system 'utf-16-le)) | ||
86 | (_ | ||
87 | (set-selection-coding-system 'utf-8) | ||
88 | (set-clipboard-coding-system 'utf-8))) | ||
89 | |||
90 | ;;; Modes | ||
91 | |||
92 | (dolist (enable-mode '(;; Enable these modes on startup | ||
93 | delete-selection-mode | ||
94 | global-so-long-mode | ||
95 | )) | ||
96 | (funcall enable-mode +1)) | ||
97 | |||
98 | (dolist (disable-mode '(;; Disable these modes on startup | ||
99 | horizontal-scroll-bar-mode | ||
100 | menu-bar-mode | ||
101 | scroll-bar-mode | ||
102 | tool-bar-mode | ||
103 | tooltip-mode | ||
104 | )) | ||
105 | (funcall disable-mode -1)) | ||
106 | |||
107 | ;;; Internal packages | ||
108 | |||
109 | (when (require 'abbrev nil t) | ||
110 | (custom-set-variables | ||
111 | '(abbrev-file-name (sync/ "abbrev.el")) | ||
112 | '(save-abbrevs 'silently))) | ||
113 | |||
114 | (when (require 'autorevert nil t) | ||
115 | (custom-set-variables | ||
116 | '(auto-revert-verbose nil) | ||
117 | '(global-auto-revert-non-file-buffers t)) | ||
118 | (global-auto-revert-mode +1)) | ||
119 | |||
120 | (when (require 'comp nil t) | ||
121 | (custom-set-variables | ||
122 | '(native-comp-async-report-warnings-errors 'silent) | ||
123 | '(native-comp-deferred-compilation t))) | ||
124 | |||
125 | (when (require 'custom nil t) | ||
126 | (custom-set-variables | ||
127 | '(custom-file (etc/ "custom.el")))) | ||
128 | |||
129 | (when (require 'ediff nil t) | ||
130 | (custom-set-variables | ||
131 | '(ediff-window-setup-function #'ediff-setup-windows-plain))) | ||
132 | |||
133 | (when (require 'eldoc nil t) | ||
134 | (custom-set-variables | ||
135 | '(eldoc-echo-area-use-multiline-p nil) | ||
136 | '(eldoc-idle-delay 0.1))) | ||
137 | |||
138 | (when (require 'executable nil t) | ||
139 | (custom-set-variables | ||
140 | '(executable-prefix-env t))) | ||
141 | |||
142 | (when (require 'files nil t) | ||
143 | (custom-set-variables | ||
144 | '(auto-save-default nil) | ||
145 | '(auto-save-interval 1) | ||
146 | '(auto-save-no-message t) | ||
147 | '(auto-save-timeout 1) | ||
148 | '(auto-save-visited-interval 1) | ||
149 | '(backup-by-copying t) | ||
150 | '(create-lockfiles nil) | ||
151 | '(delete-old-versions t) | ||
152 | '(find-file-visit-truename t) | ||
153 | '(kept-new-versions 8) | ||
154 | '(kept-old-versions 8) | ||
155 | '(mode-require-final-newline t) | ||
156 | '(version-control t) | ||
157 | '(view-read-only t)) | ||
158 | (dolist (h/f | ||
159 | '((after-save-hook . executable-make-buffer-file-executable-if-script-p) | ||
160 | (find-file-not-found-functions . create-missing-directories) | ||
161 | (find-file-hook . +vc-off@remote))) | ||
162 | (add-hook (car h/f) (cdr h/f))) | ||
163 | (auto-save-visited-mode)) | ||
164 | |||
165 | (when (require 'frame nil t) | ||
166 | (custom-set-variables | ||
167 | '(blink-cursor-blinks 1) | ||
168 | '(blink-cursor-interval 0.25) | ||
169 | '(blink-cursor-delay 0.25)) | ||
170 | (blink-cursor-mode)) | ||
171 | |||
172 | (when (require 'goto-addr nil t) | ||
173 | (if (fboundp 'global-goto-address-mode) | ||
174 | (global-goto-address-mode +1) | ||
175 | (add-hook 'after-change-major-mode-hook 'goto-address-mode))) | ||
176 | |||
177 | (when (require 'ibuffer nil t) | ||
178 | (global-set-key (kbd "C-x C-b") #'ibuffer) | ||
179 | (add-hook 'ibuffer-mode-hook #'hl-line-mode)) | ||
180 | |||
181 | (when (require 'image nil t) | ||
182 | (custom-set-variables | ||
183 | '(image-use-external-converter | ||
184 | (seq-some #'executable-find '("convert" "gm" "ffmpeg"))))) | ||
185 | |||
186 | (when (require 'imenu nil t) | ||
187 | (custom-set-variables | ||
188 | '(imenu-auto-rescan t))) | ||
189 | |||
190 | (when (require 'isearch nil t) | ||
191 | (custom-set-variables | ||
192 | '(regexp-search-ring-max default-ring-max) | ||
193 | '(search-ring-max default-ring-max))) | ||
194 | |||
195 | (when (require 'minibuffer nil t) | ||
196 | (custom-set-variables | ||
197 | '(completion-category-defaults nil) | ||
198 | '(completion-category-overrides '((file (styles partial-completion)))) | ||
199 | '(completion-ignore-case t) | ||
200 | '(completion-styles '(substring partial-completion)) | ||
201 | '(enable-recursive-minibuffers t) | ||
202 | '(file-name-shadow-properties '(invisible t intangible t)) | ||
203 | '(minibuffer-eldef-shorten-default t) | ||
204 | '(minibuffer-prompt-properties '( read-only t | ||
205 | cursor-intangible t | ||
206 | face minibuffer-prompt)) | ||
207 | '(read-buffer-completion-ignore-case t)) | ||
208 | (file-name-shadow-mode) | ||
209 | (minibuffer-electric-default-mode)) | ||
210 | |||
211 | (when (require 'mouse nil t) | ||
212 | (custom-set-variables | ||
213 | '(mouse-drag-copy-region t) | ||
214 | '(mouse-wheel-progressive-speed nil) | ||
215 | '(mouse-yank-at-point t))) | ||
216 | |||
217 | (when (require 'paren nil t) | ||
218 | (custom-set-variables | ||
219 | '(show-paren-delay 0.01) | ||
220 | '(show-paren-style 'parenthesis) | ||
221 | '(show-paren-when-point-in-periphery t) | ||
222 | '(show-paren-when-point-inside-paren t)) | ||
223 | (show-paren-mode) | ||
224 | (electric-pair-mode)) | ||
225 | |||
226 | (when (require 'recentf nil t) | ||
227 | (custom-set-variables | ||
228 | '(recentf-save-file (var/ "recentf.el")) | ||
229 | '(recentf-max-menu-items default-ring-max) | ||
230 | '(recentf-max-saved-items nil) | ||
231 | '(recentf-auto-cleanup 'mode)) | ||
232 | (add-to-list 'recentf-exclude etc/) | ||
233 | (add-to-list 'recentf-exclude var/) | ||
234 | (add-to-list 'recentf-exclude cache/) | ||
235 | (add-to-list 'recentf-exclude "-autoloads.el\\'") | ||
236 | (recentf-mode +1)) | ||
237 | |||
238 | (when (require 'savehist nil t) | ||
239 | (custom-set-variables | ||
240 | '(history-length 1024) | ||
241 | '(history-delete-duplicates t) | ||
242 | '(savehist-file (var/ "savehist.el")) | ||
243 | '(savehist-save-minibuffer-history t) | ||
244 | '(savehist-autosave-interval 30) | ||
245 | ;; Other variables --- don't truncate any of these. | ||
246 | ;; `add-to-history' uses the values of these variables unless | ||
247 | ;; they're nil, in which case it falls back to `history-length'. | ||
248 | '(kill-ring-max default-ring-max) | ||
249 | '(mark-ring-max default-ring-max) | ||
250 | '(global-mark-ring-max default-ring-max) | ||
251 | '(regexp-search-ring-max default-ring-max) | ||
252 | '(search-ring-max default-ring-max) | ||
253 | '(kmacro-ring-max default-ring-max) | ||
254 | '(eww-history-limit default-ring-max)) | ||
255 | (dolist (var '(global-mark-ring | ||
256 | mark-ring | ||
257 | kill-ring | ||
258 | kmacro-ring | ||
259 | regexp-search-ring | ||
260 | search-ring)) | ||
261 | (add-to-list 'savehist-additional-variables var)) | ||
262 | (savehist-mode +1)) | ||
263 | |||
264 | (when (require 'saveplace nil t) | ||
265 | (custom-set-variables | ||
266 | '(save-place-file (var/ "places.el")) | ||
267 | '(save-place-forget-unreadable-files (eq system-type 'gnu/linux))) | ||
268 | (save-place-mode 1)) | ||
269 | |||
270 | (when (require 'uniquify nil t) | ||
271 | (custom-set-variables | ||
272 | '(uniquify-after-kill-buffer-p t) | ||
273 | '(uniquify-buffer-name-style 'forward) | ||
274 | '(uniquify-ignore-buffers-re "^\\*") | ||
275 | '(uniquify-separator path-separator))) | ||
276 | |||
277 | (when (require 'vc nil t) | ||
278 | (custom-set-variables | ||
279 | '(vc-follow-symlinks t) | ||
280 | '(vc-make-backup-files t))) | ||
281 | |||
282 | (when (require 'window nil t) | ||
283 | (custom-set-variables | ||
284 | '(recenter-positions '(top 2 middle bottom)))) | ||
285 | |||
286 | ;;; New features | ||
287 | |||
288 | (when (fboundp 'pixel-scroll-precision-mode) | ||
289 | (pixel-scroll-precision-mode)) | ||
290 | |||
291 | (provide 'acdw-defaults) | ||
292 | ;;; acdw-defaults.el ends here | ||