summary refs log tree commit diff stats
path: root/lisp/+emacs.el
diff options
context:
space:
mode:
authorCase Duckworth2021-12-05 22:37:11 -0600
committerCase Duckworth2021-12-05 22:37:11 -0600
commitcd3cc4f4e764c25dac453cf2c95a844726e7d19d (patch)
tree0faa6aff4cbe534e0f8de43104d61744ab24bef5 /lisp/+emacs.el
parentuhhhhhhhh (diff)
downloademacs-cd3cc4f4e764c25dac453cf2c95a844726e7d19d.tar.gz
emacs-cd3cc4f4e764c25dac453cf2c95a844726e7d19d.zip
Rename +defaults to +emacs
Diffstat (limited to 'lisp/+emacs.el')
-rw-r--r--lisp/+emacs.el242
1 files changed, 242 insertions, 0 deletions
diff --git a/lisp/+emacs.el b/lisp/+emacs.el new file mode 100644 index 0000000..7440c92 --- /dev/null +++ b/lisp/+emacs.el
@@ -0,0 +1,242 @@
1;;; +emacs.el --- measured defaults for Emacs -*- lexical-binding: t -*-
2
3;;; Commentary:
4
5;; I find myself copy-pasting a lot of "boilerplate" type code when
6;; bankrupting my Emacs config and starting afresh. Instead of doing
7;; that, I'm putting it here, where it'll be easier to include in my
8;; config.
9
10;; Of course, some might say I could just ... stop bankrupting my
11;; Emacs. But like, why would I want to?
12
13;; Other notable packages include
14;; https://git.sr.ht/~technomancy/better-defaults/
15
16;;; Code:
17
18(require 'early-init (locate-user-emacs-file "early-init.el"))
19
20(defun +set-major-mode-from-buffer-name (&optional buf)
21 "Set the major mode for BUF from the buffer's name.
22Do this only if the buffer is not visiting a file."
23 (unless buffer-file-name
24 (let ((buffer-file-name (buffer-name buf)))
25 (set-auto-mode))))
26
27;;; General settings
28
29(setq-default
30 apropos-do-all t
31 async-shell-command-buffer 'new-buffer
32 async-shell-command-display-buffer nil
33 auto-hscroll-mode 'current-line
34 auto-revert-verbose nil
35 auto-save-file-name-transforms `((".*" ,(.etc "auto-save/" t) t))
36 auto-save-interval 60
37 auto-save-list-file-prefix (.etc "auto-save/.saves-" t)
38 auto-save-timeout 60
39 auto-save-visited-interval 60
40 auto-window-vscroll nil
41 backup-by-copying t
42 backup-directory-alist `((".*" . ,(.etc "backup/" t)))
43 blink-cursor-blinks 1
44 completion-category-defaults nil
45 completion-category-overrides '((file (styles . (partial-completion))))
46 completion-ignore-case t
47 completion-styles '(substring partial-completion)
48 cursor-in-non-selected-windows 'hollow
49 cursor-type 'bar
50 custom-file (.etc "custom.el")
51 delete-old-versions t
52 echo-keystrokes 0.1
53 ediff-window-setup-function 'ediff-setup-windows-plain
54 eldoc-echo-area-use-multiline-p nil
55 eldoc-idle-delay 0.1
56 enable-recursive-minibuffers t
57 executable-prefix-env t
58 fast-but-imprecise-scrolling t
59 file-name-shadow-properties '(invisible t intangible t)
60 frame-resize-pixelwise t
61 global-auto-revert-non-file-buffers t
62 global-mark-ring-max 100
63 hscroll-step 1
64 imenu-auto-rescan t
65 indent-tabs-mode nil
66 inhibit-startup-screen t
67 initial-buffer-choice t
68 kill-do-not-save-duplicates t
69 kill-read-only-ok t
70 kill-ring-max 500
71 kill-whole-line t
72 kmacro-ring-max 20
73 load-prefer-newer t
74 major-mode '+set-major-mode-from-buffer-name
75 mark-ring-max 50
76 minibuffer-eldef-shorten-default t
77 minibuffer-prompt-properties (list 'read-only t
78 'cursor-intangible t
79 'face 'minibuffer-prompt)
80 mode-require-final-newline 'visit-save
81 mouse-drag-copy-region t
82 mouse-yank-at-point t
83 native-comp-async-report-warnings-errors 'silent
84 read-answer-short t
85 read-buffer-completion-ignore-case t
86 read-extended-command-predicate (when (fboundp
87 'command-completion-default-include-p)
88 'command-completion-default-include-p)
89 recenter-positions '(top middle bottom)
90 regexp-search-ring-max 100
91 regexp-search-ring-max 200
92 save-interprogram-paste-before-kill t
93 scroll-conservatively 101
94 scroll-preserve-screen-position 1
95 scroll-step 1
96 search-ring-max 200
97 search-ring-max 200
98 sentence-end-double-space t
99 set-mark-command-repeat-pop t
100 show-paren-delay 0
101 show-paren-style 'mixed
102 show-paren-when-point-in-periphery t
103 show-paren-when-point-inside-paren t
104 tramp-backup-directory-alist backup-directory-alist
105 use-dialog-box nil
106 use-file-dialog nil
107 use-short-answers t
108 vc-follow-symlinks t
109 vc-make-backup-files t
110 version-control t
111 view-read-only t
112 visible-bell nil
113 window-resize-pixelwise t
114 x-select-enable-clipboard t
115 x-select-enable-primary t
116 yank-pop-change-selection t
117 )
118
119(when (version< emacs-version "28")
120 (fset 'yes-or-no-p 'y-or-n-p))
121
122;; Encoding -- UTF-8 everywhere
123(setq-default locale-coding-system 'utf-8-unix
124 coding-system-for-read 'utf-8-unix
125 coding-system-for-write 'utf-8-unix
126 buffer-file-coding-system 'utf-8-unix
127 default-process-coding-system '(utf-8-unix . utf-8-unix)
128 x-select-request-type '(UTF8_STRING
129 COMPOUND_TEXT
130 TEXT
131 STRING))
132
133(set-charset-priority 'unicode)
134(set-language-environment "UTF-8")
135(prefer-coding-system 'utf-8-unix)
136(set-default-coding-systems 'utf-8-unix)
137(set-terminal-coding-system 'utf-8-unix)
138(set-keyboard-coding-system 'utf-8-unix)
139
140(pcase system-type
141 ((or 'ms-dos 'windows-nt)
142 (set-clipboard-coding-system 'utf-16-le)
143 (set-selection-coding-system 'utf-16-le))
144 (_
145 (set-selection-coding-system 'utf-8)
146 (set-clipboard-coding-system 'utf-8)))
147
148;;; Modes
149
150(dolist (enable-mode '(global-auto-revert-mode
151 blink-cursor-mode
152 electric-pair-mode
153 show-paren-mode
154 global-so-long-mode
155 minibuffer-depth-indicate-mode
156 file-name-shadow-mode
157 minibuffer-electric-default-mode
158 delete-selection-mode
159 column-number-mode))
160 (when (fboundp enable-mode)
161 (funcall enable-mode +1)))
162
163(dolist (disable-mode '(tooltip-mode
164 tool-bar-mode
165 menu-bar-mode
166 scroll-bar-mode
167 horizontal-scroll-bar-mode))
168 (when (fboundp disable-mode)
169 (funcall disable-mode -1)))
170
171;;; Hooks
172
173(add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p)
174(add-hook 'minibuffer-setup-hook 'cursor-intangible-mode)
175
176;;; Bindings
177
178(global-set-key (kbd "M-/") 'hippie-expand)
179(global-set-key (kbd "M-=") 'count-words)
180(global-set-key (kbd "C-x C-b") 'ibuffer)
181(global-set-key (kbd "C-s") 'isearch-forward-regexp)
182(global-set-key (kbd "C-r") 'isearch-backward-regexp)
183(global-set-key (kbd "C-M-s") 'isearch-forward)
184(global-set-key (kbd "C-M-r") 'isearch-backward)
185(global-set-key (kbd "M-u") 'upcase-dwim)
186(global-set-key (kbd "M-l") 'downcase-dwim)
187(global-set-key (kbd "M-c") 'capitalize-dwim)
188
189;;; Required libraries
190
191(when (require 'uniquify nil :noerror)
192 (setq-default uniquify-buffer-name-style 'forward
193 uniquify-separator path-separator
194 uniquify-after-kill-buffer-p t
195 uniquify-ignore-buffers-re "^\\*"))
196
197(when (require 'goto-addr)
198 (if (fboundp 'global-goto-address-mode)
199 (global-goto-address-mode +1)
200 (add-hook 'after-change-major-mode-hook 'goto-address-mode)))
201
202(when (require 'recentf nil :noerror)
203 (setq-default recentf-save-file (.etc "recentf.el")
204 recentf-max-menu-items 100
205 recentf-max-saved-items nil
206 recentf-auto-cleanup 'mode)
207 (add-to-list 'recentf-exclude .etc)
208 (recentf-mode +1))
209
210(when (require 'repeat nil :noerror)
211 (setq-default repeat-exit-key "g"
212 repeat-exit-timeout 5)
213 (repeat-mode +1))
214
215(when (require 'savehist nil :noerror)
216 (setq-default history-length t
217 history-delete-duplicates t
218 history-autosave-interval 60
219 savehist-file (.etc "savehist.el"))
220 (dolist (var '(extended-command-history
221 global-mark-ring
222 kill-ring
223 regexp-search-ring
224 search-ring
225 mark-ring))
226 (add-to-list 'savehist-additional-variables var))
227 (savehist-mode +1))
228
229(when (require 'saveplace nil :noerror)
230 (setq-default save-place-file (.etc "places.el")
231 save-place-forget-unreadable-files (eq system-type 'gnu/linux))
232 (save-place-mode +1))
233
234(when (require 'tramp)
235 ;; thanks Irreal! https://irreal.org/blog/?p=895
236 (add-to-list 'tramp-default-proxies-alist
237 '(nil "\\`root\\'" "/ssh:%h:"))
238 (add-to-list 'tramp-default-proxies-alist
239 '((regexp-quote (system-name)) nil nil)))
240
241(provide '+emacs)
242;;; +emacs.el ends here