blob: 01ac0fb68e69b0360d952762bf73c9ad6c67abe7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
;;; init.el --- Emacs configuration -*- lexical-binding: t; -*-
(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
(unless package-archive-contents
(package-refresh-contents))
(require 'use-package)
(setq use-package-always-ensure t)
(scroll-bar-mode -1)
(set-face-attribute 'default nil :height 130)
(setq display-line-numbers-type 'relative)
(global-display-line-numbers-mode 1)
(setq-default indent-tabs-mode nil)
;; prevent fancy animations from garbling compilation buffers
(advice-add 'compilation-start :around
(lambda (orig &rest args)
(let ((process-connection-type nil))
(apply orig args))))
(setq custom-file (concat user-emacs-directory "custom.el"))
(setq backup-directory-alist `(("." . ,(concat user-emacs-directory
"backups"))))
(use-package ibuffer
:custom
(ibuffer-expert t)
(ibuffer-show-empty-filter-groups nil)
:hook (ibuffer-mode . ibuffer-auto-mode))
(use-package evil
:init
(setq evil-want-keybinding nil)
(setq evil-undo-system 'undo-redo)
:config
(evil-set-leader '(normal visual) (kbd "SPC"))
(evil-define-key '(normal visual) 'global
(kbd "<leader>bi") #'ibuffer)
(evil-mode 1))
(use-package evil-collection
:after evil
:config
(evil-collection-init))
;; TODO: make new custom theme based on this...
;; this theme doesn't have ANSI colors for vterm
;; (use-package vs-dark-theme
;; :config
;; (load-theme 'vs-dark t))
(load-theme 'modus-vivendi t)
;; needs pgtk/GTK build
;; TODO: this is crashing my emacs :(
;;(add-to-list 'default-frame-alist '(alpha-background . 80))
;;(set-frame-parameter nil 'alpha-background 75)
;;;; dev
(use-package vterm
;; provided by Nix (emacsPackages.vterm)
:ensure nil
:commands vterm
:init
(evil-define-key 'normal 'global (kbd "<leader>ot") #'vterm))
(use-package apheleia
:config
(add-to-list 'apheleia-mode-alist '(scheme-mode . lisp-indent))
(apheleia-global-mode +1))
;;;;; markdown
(use-package markdown-mode
:mode ("\\.md\\'" . gfm-mode)
:hook (markdown-mode . flyspell-mode))
(setq ispell-program-name "aspell"
ispell-dictionary "en_US")
(add-hook 'markdown-mode-hook #'flyspell-mode)
(use-package nix-ts-mode
:mode "\\.nix\\'")
;;;;; zig
;; grammar provided by Nix (treesit-grammars tree-sitter-zig);
;; apheleia formats via `zig fmt' (zig must be on PATH)
(use-package zig-ts-mode
:mode "\\.zig\\'")
;;;;; javascript
;; grammar provided by Nix (treesit-grammars tree-sitter-javascript);
;; apheleia formats via prettier (needs prettier on PATH)
(use-package js
:ensure nil
:mode ("\\.js\\'" . js-ts-mode)
:custom (js-indent-level 2))
;;;;; scheme
(use-package geiser-guile)
(use-package rainbow-delimiters
:hook
(scheme-mode . rainbow-delimiters-mode)
(emacs-lisp-mode . rainbow-delimiters-mode))
(add-hook 'scheme-mode-hook #'electric-pair-local-mode)
;;;;; elisp
(add-hook 'emacs-lisp-mode-hook #'outline-minor-mode)
(add-hook 'emacs-lisp-mode-hook #'electric-pair-local-mode)
;;;;; c
;; TODO: I truly do not understand the interaction
;; between this and apheleia / clang format
(setq-default c-default-style "k&r"
c-basic-offset 4)
|