+1
-10
README.md
+1
-10
README.md
···
8
8
Clone this repository:
9
9
10
10
```sh
11
-
git clone https://tangled.org/nesv.ca/emacs.d ~/.emacs.d
12
-
```
13
-
14
-
or if you prefer [jj]:
15
-
16
-
```sh
17
-
jj git clone https://tangled.org/nesv.ca/emacs.d ~/.emacs.d
11
+
git clone https://git.sr.ht/~nesv/emacs.d ~/.emacs.d
18
12
```
19
13
20
14
The next time you start emacs(1), everything should be installed
21
15
automatically.
22
-
23
-
[jj]: https://docs.jj-vcs.dev/latest/
24
-
+76
early-init.el
+76
early-init.el
···
1
+
;;; early-init -- Early emacs initialization
2
+
;;; Commentary:
3
+
;;; Code:
4
+
5
+
(defvar nesv/tiling-window-manager-regexp "bspwm\\|herbstluftwm\\|i3\\|hyprland"
6
+
"Regexp to match the name of tiling window managers.")
7
+
8
+
(defmacro nesv/with-desktop-session (&rest body)
9
+
"Expand BODY if desktop is *not* a tiling window manager."
10
+
(declare (indent 0))
11
+
`(when-let ((session (getenv "DESKTOP_SESSION"))
12
+
((not (string-match-p session nesv/tiling-window-manager-regexp))))
13
+
,@body))
14
+
15
+
(defun nesv/add-to-list (list element)
16
+
"Add ELEMENT to LIST. A simplified version of ADD-TO-LIST."
17
+
(set list (cons element (symbol-value list))))
18
+
19
+
;; Set the window size on non-tiling window managers.
20
+
;;
21
+
;; INITIAL-FRAME-ALIST is the first frame that is produced when starting emacs.
22
+
;; DEFAULT-FRAME-ALIST is all other frames.
23
+
(nesv/with-desktop-session
24
+
(mapc
25
+
(lambda (var)
26
+
(nesv/add-to-list var '(width . (text-pixels . 800)))
27
+
(nesv/add-to-list var '(height . (text-pixels . 900)))
28
+
(nesv/add-to-list var '(scroll-bar-width . 10)))
29
+
'(default-frame-alist initial-frame-alist)))
30
+
31
+
(setq frame-resize-pixelwise t
32
+
frame-inhibit-implied-resize t
33
+
frame-title-format '("%b")
34
+
ring-bell-function 'ignore
35
+
use-dialog-box t
36
+
use-file-dialog nil
37
+
use-short-answers t
38
+
inhibit-splash-screen t
39
+
inhibit-startup-screen t
40
+
inhibit-x-resources t
41
+
inhibit-startup-echo-area-message user-login-name
42
+
inhibit-startup-buffer-menu t)
43
+
44
+
;; Disable useless graphical elements like the menu bar, the scroll bar, and
45
+
;; the tool bar.
46
+
(menu-bar-mode -1)
47
+
(scroll-bar-mode -1)
48
+
(tool-bar-mode -1)
49
+
50
+
;; Temporarily increase the garbage collection threshold.
51
+
;; This should shave about 0.5s off startup time.
52
+
(setq gc-cons-threshold most-positive-fixnum
53
+
gc-cons-percentage 0.5)
54
+
55
+
;; More startup optimizations.
56
+
(defvar nesv/file-name-handler-alist file-name-handler-alist)
57
+
(defvar nesv/vc-handled-backends vc-handled-backends)
58
+
59
+
(setq file-name-handler-alist nil
60
+
vc-handled-backends nil)
61
+
62
+
(add-hook 'emacs-startup-hook
63
+
(lambda ()
64
+
(setq gc-cons-threshold (* 1000 1000 8)
65
+
gc-cons-percentage 0.1
66
+
file-name-handler-alist nesv/file-name-handler-alist
67
+
vc-handled-backends nesv/vc-handled-backends)))
68
+
69
+
;; Name the default frame.
70
+
(add-hook 'after-init-hook (lambda () (set-frame-name "nesv")))
71
+
72
+
;; Inititalize install packages early.
73
+
(setq package-enable-at-startup t)
74
+
75
+
(provide 'early-init)
76
+
;;; early-init.el ends here
+90
-224
init.el
+90
-224
init.el
···
2
2
;;; Commentary:
3
3
;;; Code:
4
4
5
+
;; Define a new group for customizations.
6
+
;; This will basically allow someone else to use this configuration,
7
+
;; but tweak it to their own liking by setting custom vars.
8
+
(defgroup nesv-emacs nil
9
+
"User options for nesv's Emacs.
10
+
Put the customizations in a file called ~/.emacs.d/nesv-emacs-pre-custom.el."
11
+
:group 'file)
12
+
13
+
;; Load extras for minibuffer completion.
14
+
(defcustom nesv-emacs-completion-extras t
15
+
"When non-nil, load extras for minibuffer completion (e.g. `consult', `embark')."
16
+
:group 'nesv-emacs
17
+
:type 'boolean)
18
+
19
+
;; User option to load extra stuff for tree-sitter.
20
+
(defcustom nesv-emacs-tree-sitter-extras t
21
+
"When non-nil, load extras for tree-sitter integration (e.g. `expreg')."
22
+
:group 'nesv-emacs
23
+
:type 'boolean)
24
+
25
+
(defcustom nesv-emacs-load-which-key nil
26
+
"When non-nil, display keybinding hints after a short delay."
27
+
:group 'nesv-emacs
28
+
:type 'boolean)
29
+
30
+
(defcustom nesv-emacs-load-nerd-icons nil
31
+
"When non-nil, enable nerd icons."
32
+
:group 'nesv-emacs
33
+
:type 'boolean)
34
+
35
+
(defcustom nesv-emacs-load-theme 'ef
36
+
"Load the specified colour theme."
37
+
:group 'nesv-emacs
38
+
:type '(choice :tag "Theme to load" :value ef
39
+
(const :tag "`ef-themes'" ef)
40
+
(const :tag "`modus-themes'" modus)
41
+
(const :tag "Jonathan Blow style" naysayer)
42
+
(const :tag "Do not load a theme" nil)))
43
+
44
+
(defcustom nesv-emacs-font "Source Code Pro"
45
+
"Set the specific font face when loading Emacs in GUI mode."
46
+
:group 'nesv-emacs
47
+
:type '(choice :tag "Font to use" :value "Source Code Pro"
48
+
(const :tag "MonoLisa" "MonoLisa")
49
+
(const :tag "Berkeley Mono" "Berkeley Mono")))
50
+
5
51
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
6
52
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
7
53
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
···
52
98
(global-set-key [f8] 'neotree-toggle)
53
99
(if (display-graphic-p) (setq neo-theme 'icons) (setq neo-theme 'arrows)))
54
100
55
-
56
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
57
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
58
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
59
-
;; When running in GUI mode, load in our $PATH as though we were running from
60
-
;; a terminal.
61
-
(use-package exec-path-from-shell
62
-
:ensure t
63
-
:config
64
-
(when (display-graphic-p)
65
-
(exec-path-from-shell-initialize)))
66
-
67
101
;; โโโโโโโโโโโโโโโโโโโโโโโโ
68
102
;; โโโโโโโโโโโโโโโโโโโโโโโโ
69
103
;; โโโโโโโโโโโโโโโโโโโโโโโโ
···
72
106
:config
73
107
(direnv-mode))
74
108
75
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
76
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
77
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
78
-
;; A recreation of Jonathan Blow's emacs theme.
79
-
(use-package naysayer-theme
80
-
:ensure t
81
-
:config (load-theme 'naysayer t))
82
-
;;
83
-
;; EF-THEMES (https://protesilaos.com/emacs/ef-themes)
84
-
;; (use-package ef-themes
85
-
;; :ensure t
86
-
;; :config
87
-
;; (load-theme 'ef-duo-light t))
88
-
;;
89
-
;; MODUS THEMES (https://protesilaos.com/emacs/modus-themes)
90
-
;; (use-package modus-themes
91
-
;; :ensure t
92
-
;; :config
93
-
;; (load-theme 'modus-operandi t))
94
-
95
109
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
96
110
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
97
111
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
···
107
121
(menu-bar-mode -1) ; Disable the menubar.
108
122
(tool-bar-mode -1) ; Disable the toolbar.
109
123
(setq ring-bell-function 'ignore) ; Disable the damn bell.
110
-
(setq make-backup-files nil) ; Do not create backup files.
111
124
(setq auto-save-default nil) ; Disable auto save.
112
125
(global-auto-revert-mode t) ; Auto-reload buffers when the backing file on disk changes.
113
126
(global-hl-line-mode t) ; Highlight the current line.
···
115
128
(setq column-number-mode t) ; Display column numbers.
116
129
(set-default 'truncate-lines t) ; Let long lines flow off-screen.
117
130
131
+
;; Disable backup files, and lock files.
132
+
(setq make-backup-files nil)
133
+
(setq backup-inhibited nil)
134
+
(setq create-lockfiles nil)
135
+
136
+
;; Silence native compilation (`nativecomp').
137
+
(when (native-comp-available-p)
138
+
(setq native-comp-async-report-warnings-errors 'silent)
139
+
(setq native-compile-prune-cache t))
140
+
141
+
;; By default, Emacs writes persistent customizations to the end of the user's
142
+
;; init.el.
143
+
;; Disable it.
144
+
(setq custom-file (make-temp-file "emacs-custom-"))
145
+
118
146
;; Draw a ruler at the 80-character column.
119
147
(add-hook 'prog-mode-hook #'display-fill-column-indicator-mode)
120
148
(add-hook 'text-mode-hook #'display-fill-column-indicator-mode)
···
123
151
(setq-default fill-column 80)
124
152
(add-hook 'text-mode-hook #'auto-fill-mode)
125
153
126
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
127
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
128
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
129
-
(when (display-graphic-p)
130
-
;; Disable the scroll bar.
131
-
(scroll-bar-mode -1)
132
-
133
-
;; Set the default window width, height, and font.
134
-
(add-to-list 'default-frame-alist '(width . 200))
135
-
(add-to-list 'default-frame-alist '(height . 60))
136
-
(add-to-list 'default-frame-alist '(font . "MonoLisa-11")))
137
-
138
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
139
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
140
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
141
-
(use-package flycheck
142
-
:ensure t
143
-
:init (global-flycheck-mode))
144
-
145
-
;; โโโโโโโโโโโโโโโโโโโโ
146
-
;; โโโโโโโโโโโโโโโโโโโโ
147
-
;; โโโโโโโโโโโโโโโโโโโโ
148
-
(use-package eglot
149
-
:ensure t)
150
-
151
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
152
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
153
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
154
-
(use-package nerd-icons
155
-
:ensure t)
156
-
157
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
158
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
159
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
160
-
(setq-default mono-lisa-v2-ligatures '(;; coding ligatures
161
-
"<!---" "--->" "|||>" "<!--" "<|||" "<==>" "-->" "->>" "-<<" "..=" "!=="
162
-
"#_(" "/==" "||>" "||=" "|->" "===" "==>" "=>>" "=<<" "=/=" ">->" ">=>"
163
-
">>-" ">>=" "<--" "<->" "<-<" "<||" "<|>" "<=" "<==" "<=>" "<=<" "<<-"
164
-
"<<=" "<~>" "<~~" "~~>" ">&-" "<&-" "&>>" "&>" "->" "-<" "-~" ".=" "!="
165
-
"#_" "/=" "|=" "|>" "==" "=>" ">-" ">=" "<-" "<|" "<~" "~-" "~@" "~="
166
-
"~>" "~~"
167
-
;; whitespace ligatures
168
-
"---" "'''" "\"\"\"" "..." "..<" "{|" "[|" ".?" "::" ":::" "::=" ":="
169
-
":>" ":<" "\;\;" "!!" "!!." "!!!" "?." "?:" "??" "?=" "**" "***" "*>"
170
-
"*/" "--" "#:" "#!" "#?" "##" "###" "####" "#=" "/*" "/>" "//" "/**"
171
-
"///" "$(" ">&" "<&" "&&" "|}" "|]" "$>" ".." "++" "+++" "+>" "=:="
172
-
"=!=" ">:" ">>" ">>>" "<:" "<*" "<*>" "<$" "<$>" "<+" "<+>" "<>" "<<"
173
-
"<<<" "</" "</>" "^=" "%%")
174
-
berkeley-mono-ligatures '(;; Group A
175
-
".." ".=" "..." "..<" "::" ":::" ":=" "::=" ";;" ";;;" "??" "???"
176
-
".?" "?." ":?" "?:" "?=" "**" "***" "/*" "*/" "/**"
177
-
;; Group B
178
-
"<-" "->" "-<" ">-" "<--" "-->" "<<-" "->>" "-<<" ">>-" "<-<" ">->"
179
-
"<-|" "|->" "-|" "|-" "||-" "<!--" "<#--" "<=" "=>" ">=" "<==" "==>"
180
-
"<<=" "=>>" "=<<" ">>=" "<=<" ">=>" "<=|" "|=>" "<=>" "<==>" "||="
181
-
"|=" "//=" "/="
182
-
;; Group C
183
-
"<<" ">>" "<<<" ">>>" "<>" "<$" "$>" "<$>" "<+" "+>" "<+>" "<:" ":<"
184
-
"<:<" ">:" ":>" "<~" "~>" "<~>" "<<~" "<~~" "~~>" "~~" "<|" "|>"
185
-
"<|>" "<||" "||>" "<|||" "|||>" "</" "/>" "</>" "<*" "*>" "<*>" ":?>"
186
-
;; Group D
187
-
"#(" "#{" "#[" "]#" "#!" "#?" "#=" "#_" "#_(" "##" "###" "####"
188
-
;; Group E
189
-
"[|" "|]" "[<" ">]" "{!!" "!!}" "{|" "|}" "{{" "}}" "{{--" "--}}"
190
-
"{!--" "//" "///" "!!"
191
-
;; Group F
192
-
"www" "@_" "&&" "&&&" "&=" "~@" "++" "+++" "/\\" "\\/" "_|_" "||"
193
-
;; Group G
194
-
"=:" "=:=" "=!=" "==" "===" "=/=" "=~" "~-" "^=" "__" "!=" "!==" "-~"
195
-
"--" "---"))
154
+
;; Enable these commands.
155
+
(mapc
156
+
(lambda (command) (put command 'disabled nil))
157
+
'(list-timers narrow-to-region narrow-to-page upcase-region downcase-region))
196
158
197
-
(use-package ligature
198
-
:ensure t
199
-
:config (when (display-graphic-p)
200
-
(ligature-set-ligatures 'prog-mode mono-lisa-v2-ligatures)
201
-
(global-ligature-mode t)))
159
+
;; Disable these commands.
160
+
(mapc
161
+
(lambda (command) (put command 'disabled t))
162
+
'(eshell project-eshell overwrite-mode iconify-frame diary))
202
163
203
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
204
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
205
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
206
-
(use-package magit
207
-
:ensure t
208
-
:hook (after-save-hook . magit-after-save-refresh-status))
164
+
;; Always start with the *scratch* buffer.
165
+
(setq initial-buffer-choice t)
209
166
210
-
;; โโโโโโโโ
211
-
;; โโโโโโโโ
212
-
;; โโโโโโโโ
213
-
(use-package jjdescription
214
-
:ensure t)
167
+
;; By default, Emacs inserts tabs in place of multiple spaces when formatting
168
+
;; a region.
169
+
;; Turn this off.
170
+
(setq-default indent-tabs-mode nil)
215
171
216
-
(use-package vc-jj
217
-
:ensure t)
172
+
;; Add directories containing my custom `.el' files to Emacs' load-path.
173
+
(mapc
174
+
(lambda (string) (add-to-list 'load-path (locate-user-emacs-file string)))
175
+
'("nesv"))
218
176
219
-
;; Git Gutter -- Shows git status in the sidebar
220
-
(use-package git-gutter
221
-
:ensure t
222
-
:hook (prog-mode . git-gutter-mode)
223
-
:config
224
-
(setq git-gutter:update-interval 0.2))
225
-
(use-package git-gutter-fringe
226
-
:ensure t
227
-
:config
228
-
(define-fringe-bitmap 'git-gutter-fr:added [224] nil nil '(center repeated))
229
-
(define-fringe-bitmap 'git-gutter-fr:modified [224] nil nil '(center repeated))
230
-
(define-fringe-bitmap 'git-gutter-fr:deleted [128 192 224 240] nil nil 'bottom))
231
-
232
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
233
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
234
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
235
-
;; ...because it's pretty cool.
236
-
(use-package tree-sitter
237
-
:ensure t)
238
-
(use-package tree-sitter-langs
239
-
:ensure t
240
-
:hook (tree-sitter-after-on-hook . tree-sitter-hl-mode)
241
-
:config
242
-
(global-tree-sitter-mode))
243
-
244
-
;; indent-mode helps with indenting, moving around, and acting on
245
-
;; whitespace-sensitive code, like YAML and Python.
246
-
(use-package indent-tools
247
-
:ensure t)
248
-
249
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
250
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
251
-
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
252
-
;; Bazel, Starlark, Tilt, etc.
253
-
(use-package bazel :ensure t
254
-
:mode ("Tiltfile.\\'" . bazel-mode))
255
-
256
-
;; CUE -- https://cuelang.org
257
-
(use-package cue-mode :ensure t)
258
-
259
-
(use-package dockerfile-mode :ensure t)
260
-
261
-
(use-package go-mode
262
-
:ensure t
263
-
:hook ((go-mode . lsp-deferred)
264
-
(before-save . gofmt-before-save))
265
-
:config
266
-
(setq gofmt-command "~/go/bin/gofumpt"))
267
-
268
-
;; HashiCorp Configuration Language
269
-
(use-package hcl-mode :ensure t)
270
-
(use-package terraform-mode
271
-
:ensure t
272
-
:hook (terraform-mode . outline-minor-mode))
273
-
274
-
;; Just -- https://just.systems
275
-
(use-package just-mode :ensure t)
276
-
277
-
(use-package markdown-mode
278
-
:ensure t
279
-
:mode ("README\\.md\\'" . gfm-mode)
280
-
:hook (markdown-mode . auto-fill-mode)
281
-
:init (setq markdown-command "multimarkdown"))
282
-
283
-
(use-package protobuf-mode :ensure t)
284
-
285
-
(use-package rust-mode
286
-
:ensure t
287
-
:hook (rust-mode-hook . eglot-ensure)
288
-
:init
289
-
(add-hook 'rust-mode-hook (lambda () (setq indent-tabs-mode nil)))
290
-
:config
291
-
(setq rust-format-on-save t))
292
-
293
-
(use-package yaml-mode :ensure t)
294
-
(use-package flycheck-yamllint :ensure t)
295
-
296
-
;; Zig -- https://ziglang.org
297
-
(use-package zig-mode :ensure t)
177
+
(require 'nesv-theme)
178
+
(require 'nesv-cursor)
179
+
(require 'nesv-fonts)
180
+
(require 'nesv-which-key)
181
+
(require 'nesv-tree-sitter)
182
+
(require 'nesv-lsp)
183
+
(require 'nesv-programming)
184
+
(when nesv-emacs-load-nerd-icons
185
+
(require 'nesv-icons))
186
+
(require 'nesv-slime)
187
+
(require 'nesv-gnus)
298
188
299
189
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
300
190
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
···
316
206
;;
317
207
;; (which-key-add-keymap-based-replacements nesv-prefix-map
318
208
;; "b" `("Buffer" . ,nesv-buffer-prefix-map))
319
-
320
-
;; โโโโโโโโโโโโโโโโโโโโ
321
-
;; โโโโโโโโโโโโโโโโโโโโ
322
-
;; โโโโโโโโโโโโโโโโโโโโ
323
-
(setq inferior-lisp-program "sbcl")
324
209
325
210
(provide 'init)
326
211
;;; init.el ends here
327
-
328
-
(custom-set-variables
329
-
;; custom-set-variables was added by Custom.
330
-
;; If you edit it by hand, you could mess it up, so be careful.
331
-
;; Your init file should contain only one such instance.
332
-
;; If there is more than one, they won't work right.
333
-
'(package-selected-packages
334
-
'(all-the-icons bazel cue-mode direnv dockerfile-mode exec-path-from-shell
335
-
flycheck-yamllint git-gutter-fringe go-mode indent-tools
336
-
jjdescription just-mode ligature magit markdown-mode
337
-
naysayer-theme neotree nerd-icons protobuf-mode rust-mode
338
-
solaire-mode terraform-mode tree-sitter-langs yaml-mode
339
-
zig-mode)))
340
-
(custom-set-faces
341
-
;; custom-set-faces was added by Custom.
342
-
;; If you edit it by hand, you could mess it up, so be careful.
343
-
;; Your init file should contain only one such instance.
344
-
;; If there is more than one, they won't work right.
345
-
)
+31
nesv/nesv-cursor.el
+31
nesv/nesv-cursor.el
···
1
+
;;; nesv-cursor -- Cursor configuration for GUI mode
2
+
;;; Commentary:
3
+
;;; Code:
4
+
5
+
(use-package cursory
6
+
:ensure t
7
+
:if (display-graphic-p)
8
+
:config
9
+
(setq cursory-presets
10
+
'((bar
11
+
:cursor-type (bar . 2)
12
+
:cursor-in-non-selected-windows hollow
13
+
:blink-cursor-blinks 10
14
+
:blink-cursor-interval 0.5
15
+
:blink-cursor-delay 0.2)
16
+
(box
17
+
:cursor-type box
18
+
:cursor-in-non-selected-windows hollow
19
+
:blink-cursor-blinks 10
20
+
:blink-cursor-interval 0.5
21
+
:blink-cursor-delay 0.2)
22
+
(underscore
23
+
:cursor-type (hbar . 3)
24
+
:cursor-in-non-selected-windows hollow
25
+
:blink-cursor-blinks 50
26
+
:blink-cursor-interval 0.2
27
+
:blink-cursor-delay 0.2)))
28
+
(cursory-set-preset 'bar))
29
+
30
+
(provide 'nesv-cursor)
31
+
;;; nesv-cursor.el ends here
+102
nesv/nesv-fonts.el
+102
nesv/nesv-fonts.el
···
1
+
;;; nesv-fonts -- Font configuration
2
+
;;; Commentary:
3
+
;;; Code:
4
+
5
+
(use-package fontaine
6
+
:ensure t
7
+
:if (display-graphic-p)
8
+
:config
9
+
(setq fontaine-presets
10
+
'((tiny
11
+
:default-family "Iosevka Comfy Wide Fixed"
12
+
:default-height 70)
13
+
(small
14
+
:default-family "Iosevka Comfy Fixed"
15
+
:default-height 90)
16
+
(regular
17
+
:default-height 100)
18
+
(medium
19
+
:default-height 110)
20
+
(medium-large
21
+
:default-height 120)
22
+
(large
23
+
:default-weight semilight
24
+
:default-height 140
25
+
:bold-weight extrabold)
26
+
(presentation
27
+
:default-weight semlight
28
+
:default-height 170
29
+
:bold-weight extrabold)
30
+
(t
31
+
:default-family nesv-emacs-font
32
+
:default-weight regular
33
+
:default-height 100
34
+
:fixed-pitch-family nil ; Falls back to :default-family
35
+
:fixed-pitch-weight nil ; Falls back to :default-weight
36
+
:fixed-pitch-height 1.0
37
+
;;:variable-pitch-family "Iosevka Comfy Wide Duo"
38
+
:variable-pitch-family "Atkinson Hyperlegible"
39
+
:variable-pitch-weight nil
40
+
:variable-pitch-height 1.0
41
+
:bold-family nil ; Whatever the underlying face has
42
+
:bold-weight bold
43
+
:italic-family nil
44
+
:italic-slant italic
45
+
:line-spacing nil)))
46
+
(fontaine-set-preset 'medium-large))
47
+
48
+
(setq mono-lisa-v2-ligatures
49
+
'(;; coding ligatures
50
+
"<!---" "--->" "|||>" "<!--" "<|||" "<==>" "-->" "->>" "-<<" "..=" "!=="
51
+
"#_(" "/==" "||>" "||=" "|->" "===" "==>" "=>>" "=<<" "=/=" ">->" ">=>"
52
+
">>-" ">>=" "<--" "<->" "<-<" "<||" "<|>" "<=" "<==" "<=>" "<=<" "<<-"
53
+
"<<=" "<~>" "<~~" "~~>" ">&-" "<&-" "&>>" "&>" "->" "-<" "-~" ".=" "!="
54
+
"#_" "/=" "|=" "|>" "==" "=>" ">-" ">=" "<-" "<|" "<~" "~-" "~@" "~="
55
+
"~>" "~~"
56
+
;; whitespace ligatures
57
+
"---" "'''" "\"\"\"" "..." "..<" "{|" "[|" ".?" "::" ":::" "::=" ":="
58
+
":>" ":<" "\;\;" "!!" "!!." "!!!" "?." "?:" "??" "?=" "**" "***" "*>"
59
+
"*/" "--" "#:" "#!" "#?" "##" "###" "####" "#=" "/*" "/>" "//" "/**"
60
+
"///" "$(" ">&" "<&" "&&" "|}" "|]" "$>" ".." "++" "+++" "+>" "=:="
61
+
"=!=" ">:" ">>" ">>>" "<:" "<*" "<*>" "<$" "<$>" "<+" "<+>" "<>" "<<"
62
+
"<<<" "</" "</>" "^=" "%%"))
63
+
64
+
(setq berkeley-mono-ligatures
65
+
'(;; Group A
66
+
".." ".=" "..." "..<" "::" ":::" ":=" "::=" ";;" ";;;" "??" "???"
67
+
".?" "?." ":?" "?:" "?=" "**" "***" "/*" "*/" "/**"
68
+
;; Group B
69
+
"<-" "->" "-<" ">-" "<--" "-->" "<<-" "->>" "-<<" ">>-" "<-<" ">->"
70
+
"<-|" "|->" "-|" "|-" "||-" "<!--" "<#--" "<=" "=>" ">=" "<==" "==>"
71
+
"<<=" "=>>" "=<<" ">>=" "<=<" ">=>" "<=|" "|=>" "<=>" "<==>" "||="
72
+
"|=" "//=" "/="
73
+
;; Group C
74
+
"<<" ">>" "<<<" ">>>" "<>" "<$" "$>" "<$>" "<+" "+>" "<+>" "<:" ":<"
75
+
"<:<" ">:" ":>" "<~" "~>" "<~>" "<<~" "<~~" "~~>" "~~" "<|" "|>"
76
+
"<|>" "<||" "||>" "<|||" "|||>" "</" "/>" "</>" "<*" "*>" "<*>" ":?>"
77
+
;; Group D
78
+
"#(" "#{" "#[" "]#" "#!" "#?" "#=" "#_" "#_(" "##" "###" "####"
79
+
;; Group E
80
+
"[|" "|]" "[<" ">]" "{!!" "!!}" "{|" "|}" "{{" "}}" "{{--" "--}}"
81
+
"{!--" "//" "///" "!!"
82
+
;; Group F
83
+
"www" "@_" "&&" "&&&" "&=" "~@" "++" "+++" "/\\" "\\/" "_|_" "||"
84
+
;; Group G
85
+
"=:" "=:=" "=!=" "==" "===" "=/=" "=~" "~-" "^=" "__" "!=" "!==" "-~"
86
+
"--" "---"))
87
+
88
+
(use-package ligature
89
+
:ensure t
90
+
:defer t
91
+
:if (display-graphic-p)
92
+
:config
93
+
(when (or (eq nesv-emacs-font "MonoLisa")
94
+
(eq nesv-emacs-font "Berkeley Mono"))
95
+
(ligature-set-ligatures 'prog-mode (pcase nesv-emacs-font
96
+
("MonoLisa" mono-lisa-v2-ligatures)
97
+
("Berkeley Mono" berkeley-mono-ligatures))))
98
+
(global-ligature-mode t))
99
+
100
+
101
+
(provide 'nesv-fonts)
102
+
;;; nesv-fonts.el ends here
+24
nesv/nesv-git.el
+24
nesv/nesv-git.el
···
1
+
;;; nesv-git -- Git configuration
2
+
;;; Commentary:
3
+
;;; Code:
4
+
5
+
(use-package magit
6
+
:ensure t
7
+
:hook (after-save-hook . magit-after-save-refresh-status))
8
+
9
+
;; Git Gutter -- Shows git status in the sidebar
10
+
(use-package git-gutter
11
+
:ensure t
12
+
:hook (prog-mode . git-gutter-mode)
13
+
:config
14
+
(setq git-gutter:update-interval 0.2))
15
+
16
+
(use-package git-gutter-fringe
17
+
:ensure t
18
+
:config
19
+
(define-fringe-bitmap 'git-gutter-fr:added [224] nil nil '(center repeated))
20
+
(define-fringe-bitmap 'git-gutter-fr:modified [224] nil nil '(center repeated))
21
+
(define-fringe-bitmap 'git-gutter-fr:deleted [128 192 224 240] nil nil 'bottom))
22
+
23
+
(provide 'nesv-git)
24
+
;;; nesv-git.el ends here
+8
nesv/nesv-gnus.el
+8
nesv/nesv-gnus.el
+18
nesv/nesv-icons.el
+18
nesv/nesv-icons.el
···
1
+
;;; nesv-icons.el -- Icon snazziness
2
+
;;; Commentary:
3
+
;;; Code:
4
+
5
+
(use-package nerd-icons
6
+
:ensure t)
7
+
8
+
(use-package nerd-icons-completion
9
+
:ensure t
10
+
:hook (marginalia-mode . nerd-icons-completion-marginalia-setup))
11
+
12
+
(use-package nerd-icons-dired
13
+
:ensure t
14
+
:hook
15
+
(dired-mode . nerd-icons-dired-mode))
16
+
17
+
(provide 'nesv-icons)
18
+
;;; nesv-icons.el ends here
+9
nesv/nesv-lsp.el
+9
nesv/nesv-lsp.el
+129
nesv/nesv-programming.el
+129
nesv/nesv-programming.el
···
1
+
;;; nesv-programming.el -- Configuration for programming-related things.
2
+
;;; Commentary:
3
+
;; This file installs any packages that are useful in my day-to-day programming
4
+
;; tasks.
5
+
;;; Code:
6
+
7
+
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
8
+
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
9
+
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
10
+
(use-package flycheck
11
+
:ensure t
12
+
:init (global-flycheck-mode))
13
+
14
+
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
15
+
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
16
+
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
17
+
(use-package adoc-mode
18
+
:ensure t)
19
+
20
+
;; Bazel, Starlark, Tilt, etc.
21
+
(use-package bazel
22
+
:ensure t
23
+
:mode
24
+
("Tiltfile.\\'" . bazel-mode))
25
+
26
+
;; โโโโโโโโโโโโ
27
+
;; โโโโโโโโโโโโ
28
+
;; โโโโโโโโโโโโ
29
+
;; https://cuelang.org
30
+
(use-package cue-mode
31
+
:ensure t)
32
+
33
+
(use-package dockerfile-mode
34
+
:ensure t)
35
+
36
+
;; โโโโโโโโ
37
+
;; โโโโโโโโ
38
+
;; โโโโโโโโ
39
+
(use-package go-mode
40
+
:ensure t
41
+
:hook
42
+
((before-save . gofmt-before-save)
43
+
(go-mode-hook . lsp-deferred))
44
+
:config
45
+
(setq gofmt-command "goimports"))
46
+
47
+
;; indent-mode helps with indenting, moving around, and acting on
48
+
;; whitespace-sensitive code, like YAML and Python.
49
+
(use-package indent-tools
50
+
:ensure t)
51
+
52
+
;; HashiCorp Configuration Language
53
+
(use-package hcl-mode
54
+
:ensure t)
55
+
56
+
(use-package terraform-mode
57
+
:ensure t
58
+
:hook
59
+
(terraform-mode . outline-minor-mode))
60
+
61
+
;; โโโโโโโโโโโโโโโโ
62
+
;; โโโโโโโโโโโโโโโโ
63
+
;; โโโโโโโโโโโโโโโโ
64
+
;; https://just.systems
65
+
(use-package just-mode
66
+
:ensure t)
67
+
68
+
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
69
+
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
70
+
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
71
+
(use-package markdown-mode
72
+
:ensure t
73
+
:mode
74
+
("README\\.md\\'" . gfm-mode)
75
+
:hook
76
+
(markdown-mode . auto-fill-mode)
77
+
:init
78
+
(setq markdown-command "multimarkdown")
79
+
:config
80
+
(setq markdown-fontify-code-blocks-natively t))
81
+
82
+
;; โโโโโโโโโโโโ
83
+
;; โโโโโโโโโโโโ
84
+
;; โโโโโโโโโโโโ
85
+
(use-package csv-mode
86
+
:ensure t
87
+
:commands (csv-align-mode))
88
+
89
+
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
90
+
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
91
+
;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
92
+
(use-package protobuf-mode
93
+
:ensure t)
94
+
95
+
;; โโโโโโโโโโโโโโโโ
96
+
;; โโโโโโโโโโโโโโโโ
97
+
;; โโโโโโโโโโโโโโโโ
98
+
(use-package rustic
99
+
:ensure t
100
+
:config
101
+
(setq rustic-lsp-client 'eglot)
102
+
(setq lsp-eldoc-hook nil)
103
+
(setq lsp-enable-symbol-highlighting nil)
104
+
(setq lsp-signature-auto-activate nil)
105
+
(setq rustic-format-on-save t)
106
+
(add-hook 'rustic-mode-hook 'nesv/rustic-mode-hook))
107
+
108
+
(defun nesv/rustic-mode-hook ()
109
+
(when buffer-file-name
110
+
(setq-local buffer-save-without-query t))
111
+
(add-hook 'before-save-hook 'lsp-format-buffer nil t))
112
+
113
+
;; โโโโโโโโโโโโโโโโ
114
+
;; โโโโโโโโโโโโโโโโ
115
+
;; โโโโโโโโโโโโโโโโ
116
+
(use-package yaml-mode
117
+
:ensure t)
118
+
119
+
(use-package flycheck-yamllint
120
+
:ensure t)
121
+
122
+
;; โโโโโโโโโโโโ
123
+
;; โโโโโโโโโโโโ
124
+
;; โโโโโโโโโโโโ
125
+
(use-package zig-mode
126
+
:ensure t)
127
+
128
+
(provide 'nesv-programming)
129
+
;;; nesv-programming.el ends here
+7
nesv/nesv-slime.el
+7
nesv/nesv-slime.el
+48
nesv/nesv-theme.el
+48
nesv/nesv-theme.el
···
1
+
;;; nesv-theme.el -- Colour theme configuration
2
+
;;; Commentary:
3
+
;;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
4
+
;;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
5
+
;;; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
6
+
;;; Code:
7
+
8
+
;; A recreation of Jonathan Blow's emacs theme.
9
+
(use-package naysayer-theme
10
+
:ensure t)
11
+
12
+
;; EF-THEMES -- https://protesilaos.com/emacs/ef-themes
13
+
(use-package ef-themes
14
+
:ensure t)
15
+
16
+
;; MODUS THEMES -- https://protesilaos.com/emacs/modus-themes
17
+
(use-package modus-themes
18
+
:ensure t)
19
+
20
+
(when nesv-emacs-load-theme
21
+
(load-theme
22
+
(pcase nesv-emacs-load-theme
23
+
('ef 'ef-bio)
24
+
('modus 'modus-vivendi-tinted)
25
+
('naysayer 'naysayer))
26
+
t))
27
+
28
+
(load-theme 'ef-bio t)
29
+
30
+
(use-package spacious-padding
31
+
:ensure t
32
+
:if (display-graphic-p)
33
+
:hook (after-init . spacious-padding-mode)
34
+
:bind ("<f8>" . spacious-padding-mode)
35
+
:init
36
+
(setq spacious-padding-widths
37
+
'( :internal-border-width 30
38
+
:header-line-width 4
39
+
:mode-line-width 6
40
+
:tab-width 4
41
+
:right-divider-width 30
42
+
:scroll-bar-width 8
43
+
:left-fringe-width 20
44
+
:right-fringe-width 20))
45
+
(setq spacious-padding-subtle-mode-line nil))
46
+
47
+
(provide 'nesv-theme)
48
+
;;; nesv-theme.el ends here
+15
nesv/nesv-tree-sitter.el
+15
nesv/nesv-tree-sitter.el
···
1
+
;;; nesv-tree-sitter -- tree-sitter configuration
2
+
;;; Commentary:
3
+
;;; Code:
4
+
5
+
(use-package tree-sitter
6
+
:ensure t)
7
+
8
+
(use-package tree-sitter-langs
9
+
:ensure t
10
+
:hook (tree-sitter-after-on-hook . tree-sitter-hl-mode)
11
+
:config
12
+
(global-tree-sitter-mode))
13
+
14
+
(provide 'nesv-tree-sitter)
15
+
;;; nesv-tree-sitter.el ends here
+18
nesv/nesv-which-key.el
+18
nesv/nesv-which-key.el
···
1
+
;;; nesv-which-key -- WHICH-KEY configuration
2
+
;;; Commentary:
3
+
;;; Code:
4
+
5
+
(use-package which-key
6
+
:ensure t
7
+
:hook (after-init . which-key-mode)
8
+
:config
9
+
(setq which-key-separator " ")
10
+
(setq which-key-prefix-prefix "... ")
11
+
(setq which-key-max-display-columns 3)
12
+
(setq which-key-idle-delay 1.5)
13
+
(setq which-key-idle-secondary-delay 0.25)
14
+
(setq which-key-add-column-padding 1)
15
+
(setq which-key-max-description-length 40))
16
+
17
+
(provide 'nesv-which-key)
18
+
;;; nesv-which-key.el ends here