My personal emacs configuration

Compare changes

Choose any two refs to compare.

+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
··· 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
··· 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
··· 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
··· 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
··· 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
··· 1 + ;;; nesv-gnus -- GNUS configuration 2 + ;;; Commentary: 3 + ;;; Code: 4 + 5 + (setq gnus-select-method '(nntp "news.newshosting.com")) 6 + 7 + (provide 'nesv-gnus) 8 + ;;; nesv-gnus.el ends here
+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
··· 1 + ;;; nesv-lsp -- LSP client configuration 2 + ;;; Commentary: 3 + ;;; Code: 4 + 5 + (use-package eglot 6 + :ensure t) 7 + 8 + (provide 'nesv-lsp) 9 + ;;; nesv-lsp.el ends here
+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
··· 1 + ;;; nesv-slime -- Superior LISP Interaction Mode for Emacs 2 + ;;; Commentary: 3 + ;;; Code: 4 + (setq inferior-lisp-program "sbcl") 5 + 6 + (provide 'nesv-slime) 7 + ;;; nesv-slime.el ends here
+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
··· 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
··· 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