cfg/dotfiles/emacs/init.el
2025-07-16 20:28:30 +02:00

161 lines
4 KiB
EmacsLisp

;; .emacs
;; Initialize straight.el
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 6))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
;; GCMH - Do this at the beginning so we can maybe start up a bit
;; faster
(straight-use-package 'gcmh)
(gcmh-mode 1)
;; use-package
(straight-use-package 'use-package)
;; Packages
;; Major modes
(straight-use-package 'markdown-mode)
(straight-use-package 'rust-mode)
(straight-use-package 'haskell-mode)
(straight-use-package 'fish-mode)
(straight-use-package 'yaml-mode)
(straight-use-package 'cmake-mode)
(define-minor-mode remove-trailing-whitespace-mode
"Minor mode to remove trailing whitespace on every save"
(add-hook 'before-save-hook 'delete-trailing-whitespace))
(add-hook 'prog-mode-hook 'remove-trailing-whitespace-mode)
;; Other stuff
(straight-use-package 'better-defaults)
(straight-use-package 'delight)
(straight-use-package 'doom-themes)
(straight-use-package 'undo-tree)
(straight-use-package 'multiple-cursors)
(straight-use-package 'which-key)
(straight-use-package 'rainbow-delimiters)
(straight-use-package 'hl-todo)
(straight-use-package 'orderless)
(straight-use-package 'vertico)
(straight-use-package 'consult)
(straight-use-package 'marginalia)
(straight-use-package 'embark)
(straight-use-package 'embark-consult)
(straight-use-package 'company)
(straight-use-package 'lsp-mode)
(straight-use-package 'speed-type)
(straight-use-package 'magit)
(straight-use-package 'restart-emacs)
;; (straight-use-package 'mingus)
(straight-use-package 'ace-window)
;; (straight-use-package 'projectile)
;; (straight-use-package 'osm)
(straight-use-package 'editorconfig)
(straight-use-package 'exec-path-from-shell)
(straight-use-package 'pyvenv)
(straight-use-package 'ellama)
(straight-use-package 'proof-general)
;; Emacs Configuration
(setq inhibit-splash-screen t)
(setq scroll-step 1)
(recentf-mode 1)
(global-auto-revert-mode 1)
(put 'narrow-to-region 'disabled nil)
(global-unset-key (kbd "C-z"))
(setq mac-command-modifier 'meta
mac-option-modifier nil)
;; (set-face-attribute 'default nil :height 140)
(setq use-package-compute-statistics t)
(use-package display-line-numbers-mode
:hook (prog-mode text-mode conf-mode))
(use-package hl-line-mode
:hook (prog-mode text-mode conf-mode))
(use-package gcmh
:delight)
(use-package exec-path-from-shell
:config
(when (memq window-system '(mac ns))
(exec-path-from-shell-initialize)))
(use-package undo-tree
:config
(global-undo-tree-mode)
:custom
(undo-tree-auto-save-history nil)
:delight)
(use-package which-key
:config
(which-key-mode)
:delight)
(use-package doom-themes
:config
(load-theme 'doom-one t))
(use-package better-defaults)
(use-package multiple-cursors
:bind (("C-x C-l" . mc/edit-lines)
("C-x C-n" . mc/mark-next-like-this)
("C-x C-p" . mc/mark-previous-like-this)))
(use-package rainbow-delimiters-mode
:hook prog-mode)
(use-package hl-todo-mode
:hook prog-mode)
(use-package orderless
:custom (completion-styles '(orderless)))
(use-package vertico
:init
(ido-mode 0)
(vertico-mode))
(use-package consult
:bind (("C-c i" . consult-imenu)
("C-x b" . consult-buffer)))
(use-package marginalia
:init
(marginalia-mode 1))
(use-package company
:config
(global-company-mode)
:bind (("C-." . company-complete)))
(use-package ace-window
:custom
(aw-keys '(?h ?i ?e ?a ?t ?r ?n ?s))
:bind (("C-x o" . ace-window)))
(use-package editorconfig
:config
(editorconfig-mode 1)
:delight)
(use-package embark
:bind (("C-M-x" . embark-act)))
(electric-indent-mode -1)
(remove-hook 'before-save-hook 'delete-trailing-whitespace)