diff options
-rw-r--r-- | init.el | 92 | ||||
-rw-r--r-- | lisp/acdw-fonts.el | 45 |
2 files changed, 106 insertions, 31 deletions
diff --git a/init.el b/init.el index 3bec384..867f5a0 100644 --- a/init.el +++ b/init.el | |||
@@ -96,15 +96,17 @@ | |||
96 | (global-auto-revert-mode +1)) | 96 | (global-auto-revert-mode +1)) |
97 | 97 | ||
98 | (setup browse-url | 98 | (setup browse-url |
99 | (setq-default browse-url-browser-function 'eww-browse-url | 99 | (when (acdw/system :work) |
100 | (add-to-list 'exec-path "C:/Program Files/Mozilla Firefox")) | ||
101 | |||
102 | (setq-default browse-url-browser-function ; can be alist (regex . function) | ||
103 | '(("." . eww-browse-url)) | ||
100 | browse-url-secondary-browser-function | 104 | browse-url-secondary-browser-function |
101 | (if (executable-find "firefox") | 105 | (if (executable-find "firefox") ; prefer Firefox |
102 | 'browse-url-firefox | 106 | 'browse-url-firefox |
103 | 'browse-url-default-browser) | 107 | 'browse-url-default-browser) |
104 | browse-url-new-window-flag t | 108 | browse-url-new-window-flag t |
105 | browse-url-firefox-new-window-is-tab t) | 109 | browse-url-firefox-new-window-is-tab t)) |
106 | (when (acdw/system :work) | ||
107 | (add-to-list 'exec-path "C:/Program Files/Mozilla Firefox"))) | ||
108 | 110 | ||
109 | (setup buffers | 111 | (setup buffers |
110 | (:global "C-x k" acdw/kill-a-buffer)) | 112 | (:global "C-x k" acdw/kill-a-buffer)) |
@@ -112,12 +114,6 @@ | |||
112 | (setup completion | 114 | (setup completion |
113 | (:option completion-ignore-case t | 115 | (:option completion-ignore-case t |
114 | read-buffer-completion-ignore-case t | 116 | read-buffer-completion-ignore-case t |
115 | icomplete-delay-completions-threshold 0 | ||
116 | icomplete-max-delay-chars 0 | ||
117 | icomplete-compute-delay 0 | ||
118 | icomplete-show-matches-on-no-input t | ||
119 | icomplete-with-buffer-completion-tables t | ||
120 | icomplete-in-buffer t | ||
121 | completion-styles '(partial-completion substring flex) | 117 | completion-styles '(partial-completion substring flex) |
122 | completion-category-defaults nil | 118 | completion-category-defaults nil |
123 | completion-category-overrides | 119 | completion-category-overrides |
@@ -259,7 +255,8 @@ | |||
259 | 255 | ||
260 | (setup eshell | 256 | (setup eshell |
261 | (:option eshell-directory-name (acdw/dir "eshell/" t) | 257 | (:option eshell-directory-name (acdw/dir "eshell/" t) |
262 | eshell-aliases-file (acdw/dir "eshell/aliases" t)) | 258 | eshell-aliases-file (acdw/dir "eshell/aliases" t) |
259 | eshell-kill-on-exit nil) | ||
263 | 260 | ||
264 | (defun eshell-quit-or-delete-char (arg) | 261 | (defun eshell-quit-or-delete-char (arg) |
265 | "Delete the character to the right, or quit eshell on an empty line." | 262 | "Delete the character to the right, or quit eshell on an empty line." |
@@ -268,10 +265,16 @@ | |||
268 | (eshell-life-is-too-much) | 265 | (eshell-life-is-too-much) |
269 | (delete-forward-char arg))) | 266 | (delete-forward-char arg))) |
270 | 267 | ||
271 | (global-set-key (kbd "<f12>") #'eshell) | 268 | (defun eshell-pop-or-quit (&optional buffer-name) |
269 | "Pop open an eshell buffer, or if in an eshell buffer, bury it." | ||
270 | (interactive) | ||
271 | (if (eq (current-buffer) (get-buffer (or buffer-name "*eshell*"))) | ||
272 | (eshell-life-is-too-much) | ||
273 | (eshell))) | ||
274 | |||
275 | (:leader "s" eshell-pop-or-quit) | ||
272 | 276 | ||
273 | (hook-defun eshell-setup 'eshell-mode-hook | 277 | (hook-defun eshell-setup 'eshell-mode-hook |
274 | (define-key eshell-mode-map (kbd "<f12>") #'bury-buffer) | ||
275 | (define-key eshell-mode-map (kbd "C-d") #'eshell-quit-or-delete-char) | 278 | (define-key eshell-mode-map (kbd "C-d") #'eshell-quit-or-delete-char) |
276 | (when (boundp 'simple-modeline--mode-line) | 279 | (when (boundp 'simple-modeline--mode-line) |
277 | (setq mode-line-format '(:eval simple-modeline--mode-line))))) | 280 | (setq mode-line-format '(:eval simple-modeline--mode-line))))) |
@@ -306,15 +309,18 @@ | |||
306 | (unless (file-exists-p ispell-personal-dictionary) | 309 | (unless (file-exists-p ispell-personal-dictionary) |
307 | (write-region "" nil ispell-personal-dictionary nil 0)) | 310 | (write-region "" nil ispell-personal-dictionary nil 0)) |
308 | 311 | ||
309 | (defun flyspell-start () | 312 | (defun flyspell-start (&optional dont-warn-when-unknown-mode) |
310 | "Start `flyspell-mode' or `flyspell-prog-mode', depending on current mode." | 313 | "Start `flyspell-mode' or `flyspell-prog-mode', depending on current mode." |
311 | (interactive) | 314 | (interactive) |
312 | (cond ((derived-mode-p 'text-mode) | 315 | (cond ((derived-mode-p 'text-mode) |
313 | (flyspell-mode)) | 316 | (flyspell-mode)) |
314 | ((derived-mode-p 'prog-mode) | 317 | ((derived-mode-p 'prog-mode) |
315 | (flyspell-prog-mode)) | 318 | (flyspell-prog-mode)) |
316 | (t (message "Non-text or -prog mode. Run `flyspell-mode'.")))) | 319 | ((not dont-warn-when-unknown-mode) ; god this is ugly |
317 | (:leader "s" flyspell-start) | 320 | (message "Non-text or -prog mode. Run `flyspell-mode'.")))) |
321 | |||
322 | (when (acdw/system :home) | ||
323 | (flyspell-start t)) | ||
318 | 324 | ||
319 | (:when-loaded | 325 | (:when-loaded |
320 | (setup (:straight flyspell-correct) | 326 | (setup (:straight flyspell-correct) |
@@ -364,6 +370,9 @@ | |||
364 | (setup imenu | 370 | (setup imenu |
365 | (:option imenu-auto-rescan t)) | 371 | (:option imenu-auto-rescan t)) |
366 | 372 | ||
373 | (setup Info | ||
374 | (:hook variable-pitch-mode)) | ||
375 | |||
367 | (setup isearch | 376 | (setup isearch |
368 | (:option search-default-mode t)) | 377 | (:option search-default-mode t)) |
369 | 378 | ||
@@ -560,6 +569,14 @@ | |||
560 | (:hook flymake-mode | 569 | (:hook flymake-mode |
561 | flymake-shellcheck-load))) | 570 | flymake-shellcheck-load))) |
562 | 571 | ||
572 | (setup shell-command | ||
573 | (:option shell-command-switch (acdw/system | ||
574 | ;; I should be testing on some variable | ||
575 | (:home "-csi") | ||
576 | (:work "-c")) | ||
577 | shell-command-prompt-show-cwd t | ||
578 | shell-command-default-error-buffer "*shell-command-errors*")) | ||
579 | |||
563 | (setup shr | 580 | (setup shr |
564 | (:option shr-width fill-column | 581 | (:option shr-width fill-column |
565 | shr-max-width fill-column | 582 | shr-max-width fill-column |
@@ -577,6 +594,9 @@ | |||
577 | uniquify-after-kill-buffer-p t | 594 | uniquify-after-kill-buffer-p t |
578 | uniquify-ignore-buffers-re "^\\*")) | 595 | uniquify-ignore-buffers-re "^\\*")) |
579 | 596 | ||
597 | (setup variable-pitch-mode | ||
598 | (:hook acdw-fonts/adapt-variable-pitch)) | ||
599 | |||
580 | (setup view | 600 | (setup view |
581 | (:option view-read-only t) | 601 | (:option view-read-only t) |
582 | 602 | ||
@@ -935,7 +955,11 @@ if ripgrep is installed, otherwise `consult-grep'." | |||
935 | (:bind "RET" acdw-org/return-dwim | 955 | (:bind "RET" acdw-org/return-dwim |
936 | "<S-return>" acdw-org/org-table-copy-down) | 956 | "<S-return>" acdw-org/org-table-copy-down) |
937 | 957 | ||
938 | (add-hook 'before-save-hook #'acdw-org/fix-blank-lines-in-buffer) | 958 | (defun acdw/org-fix-lines-before-save () |
959 | (add-hook 'before-save-hook #'acdw-org/fix-blank-lines-in-buffer 0 :local)) | ||
960 | |||
961 | (:hook variable-pitch-mode | ||
962 | acdw/org-fix-lines-before-save) | ||
939 | 963 | ||
940 | (advice-add 'org-delete-backward-char | 964 | (advice-add 'org-delete-backward-char |
941 | :override #'acdw-org/delete-backward-char)) | 965 | :override #'acdw-org/delete-backward-char)) |
@@ -1063,21 +1087,27 @@ if ripgrep is installed, otherwise `consult-grep'." | |||
1063 | (global-whitespace-cleanup-mode +1)) | 1087 | (global-whitespace-cleanup-mode +1)) |
1064 | 1088 | ||
1065 | (setup (:straight winum) | 1089 | (setup (:straight winum) |
1066 | (:option winum-auto-setup-mode-line nil | 1090 | (:option winum-scope 'frame-local |
1091 | winum-auto-setup-mode-line nil | ||
1067 | winum-ignored-buffers '(" *which-key*")) | 1092 | winum-ignored-buffers '(" *which-key*")) |
1068 | 1093 | ||
1069 | (when (display-graphic-p) | 1094 | (when-unfocused winum-map-keys |
1070 | (:with-map winum-keymap | 1095 | (defvar winum--keys-mapped nil |
1071 | (:bind "M-0" winum-select-window-0-or-10 | 1096 | "Whether `winum' keys have been mapped already.") |
1072 | "M-1" winum-select-window-1 | 1097 | (when (and (not winum--keys-mapped) |
1073 | "M-2" winum-select-window-2 | 1098 | (display-graphic-p)) |
1074 | "M-3" winum-select-window-3 | 1099 | (:with-map winum-keymap |
1075 | "M-4" winum-select-window-4 | 1100 | (:bind "M-0" winum-select-window-0-or-10 |
1076 | "M-5" winum-select-window-5 | 1101 | "M-1" winum-select-window-1 |
1077 | "M-6" winum-select-window-6 | 1102 | "M-2" winum-select-window-2 |
1078 | "M-7" winum-select-window-7 | 1103 | "M-3" winum-select-window-3 |
1079 | "M-8" winum-select-window-8 | 1104 | "M-4" winum-select-window-4 |
1080 | "M-9" winum-select-window-9))) | 1105 | "M-5" winum-select-window-5 |
1106 | "M-6" winum-select-window-6 | ||
1107 | "M-7" winum-select-window-7 | ||
1108 | "M-8" winum-select-window-8 | ||
1109 | "M-9" winum-select-window-9)) | ||
1110 | (setq winum--keys-mapped t))) | ||
1081 | 1111 | ||
1082 | (winum-mode +1)) | 1112 | (winum-mode +1)) |
1083 | 1113 | ||
diff --git a/lisp/acdw-fonts.el b/lisp/acdw-fonts.el index 6c0cb8d..1b73af7 100644 --- a/lisp/acdw-fonts.el +++ b/lisp/acdw-fonts.el | |||
@@ -127,5 +127,50 @@ This is for emoji fonts." | |||
127 | (set-fontset-font t 'symbol | 127 | (set-fontset-font t 'symbol |
128 | (font-spec :family font) nil 'append))))) | 128 | (font-spec :family font) nil 'append))))) |
129 | 129 | ||
130 | |||
131 | ;;; Variable-pitch | ||
132 | ;; from https://github.com/turbana/emacs-config#variable-pitch | ||
133 | |||
134 | (defcustom acdw-fonts/fixed-pitch-faces '(linum | ||
135 | org-block | ||
136 | org-block-begin-line | ||
137 | org-block-end-line | ||
138 | org-checkbox | ||
139 | org-code | ||
140 | org-date | ||
141 | org-document-info-keyword | ||
142 | org-hide | ||
143 | org-indent | ||
144 | org-link | ||
145 | org-meta-line | ||
146 | org-special-keyword | ||
147 | org-table | ||
148 | whitespace-space) | ||
149 | "Faces to keep fixed-pitch in `acdw/variable-pitch-mode'." | ||
150 | :type 'sexp | ||
151 | :group 'faces) | ||
152 | |||
153 | (defun acdw-fonts//variable-pitch-add-inherit (attrs parent) | ||
154 | "Add `:inherit PARENT' to ATTRS unless already present. | ||
155 | Handles cases where `:inherit' is already specified." | ||
156 | (let ((current-parent (plist-get attrs :inherit))) | ||
157 | (unless (or (eq parent current-parent) | ||
158 | (and (listp current-parent) | ||
159 | (member parent current-parent))) | ||
160 | (plist-put attrs :inherit (if current-parent | ||
161 | (list current-parent parent) | ||
162 | parent))))) | ||
163 | |||
164 | (defun acdw-fonts/adapt-variable-pitch () | ||
165 | "Adapt `variable-pitch-mode' to keep some fonts fixed-pitch." | ||
166 | (when variable-pitch-mode | ||
167 | (mapc (lambda (face) | ||
168 | (when (facep face) | ||
169 | (apply #'set-face-attribute | ||
170 | face nil (acdw-fonts//variable-pitch-add-inherit | ||
171 | (face-attr-construct face) | ||
172 | 'fixed-pitch)))) | ||
173 | acdw-fonts/fixed-pitch-faces))) | ||
174 | |||
130 | (provide 'acdw-fonts) | 175 | (provide 'acdw-fonts) |
131 | ;;; acdw-fonts.el ends here | 176 | ;;; acdw-fonts.el ends here |