Blob


1 ;; -*- lexical-binding: t; -*-
2 ;;; My emacs config
4 (let ((lisp-dir (expand-file-name "lisp" user-emacs-directory)))
5 (make-directory lisp-dir t)
6 (add-to-list 'load-path lisp-dir))
8 (setopt custom-file (expand-file-name "custom.el" user-emacs-directory))
10 ;;;; package.el setup
11 (setopt package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
12 ("nongnu" . "https://elpa.nongnu.org/nongnu/")
13 ("melpa-stable" . "https://stable.melpa.org/packages/")
14 ("melpa" . "https://melpa.org/packages/"))
15 package-archive-priorities '(("gnu" . 3)
16 ("nongnu" . 2)
17 ("melpa-stable" . 1)
18 ("melpa" . 0))
19 package-pinned-packages '((sly . "melpa"))
20 package-selected-packages '(elfeed magit nhexl-mode notmuch paredit paredit-menu sly))
21 (package-initialize)
23 ;;;; Completions
24 (setopt tab-always-indent 'complete
25 completion-ignore-case t
26 completion-styles '(basic substring initials flex)
27 completion-preview-mode t
28 completion-auto-select t
29 completion-auto-help 'visible
30 completion-show-help nil
31 completions-sort 'historical
32 completions-format 'one-column
33 completions-max-height 20)
34 (setopt fido-vertical-mode t)
36 ;; This hack allows using my default set of completion styles in fido instead of being forced to
37 ;; use flex. Flex is especially annoying since it does not prioritise prefix matches.
38 (defun lh/advice-fido-setup (func &rest args)
39 (let ((cs completion-styles))
40 (prog1
41 (apply func args)
42 (setq-local completion-styles cs))))
43 (advice-add 'icomplete--fido-mode-setup :around 'lh/advice-fido-setup)
45 ;;;; Programming
46 ;;;;; Misc
47 (editorconfig-mode 1)
48 (defun lh/enable-trailing-whitespace ()
49 (setq show-trailing-whitespace t))
50 (add-hook 'prog-mode-hook 'lh/enable-trailing-whitespace)
52 ;;;;; Lisp
53 (setopt inferior-lisp-program "sbcl")
54 (defun lh/enable-paredit-menu ()
55 (require 'paredit-menu))
56 (add-hook 'paredit-mode-hook 'lh/enable-paredit-menu)
57 (add-hook 'lisp-mode-hook 'paredit-mode)
58 (add-hook 'emacs-lisp-mode-hook 'paredit-mode)
60 ;;;; Misc
61 (setopt focus-follows-mouse t
62 frame-resize-pixelwise t
63 scroll-conservatively 100
64 pixel-scroll-precision-mode t
65 use-short-answers t
66 cursor-type 'bar
67 ring-bell-function 'ignore
68 create-lockfiles nil
69 recentf-max-saved-items 200
70 recentf-mode t
71 indent-tabs-mode nil
72 delete-selection-mode t
73 context-menu-mode t
74 repeat-mode t
75 save-place-mode t
76 savehist-mode t
77 which-key-mode t
78 column-number-mode t)
80 (let ((backup-dir (expand-file-name "backup" user-emacs-directory)))
81 (make-directory backup-dir t)
82 (setopt backup-directory-alist `(("." . ,backup-dir))))
84 (put 'narrow-to-region 'disabled nil)
86 ;;;; Private and custom overrides
87 (let ((private-file (expand-file-name "private.el" user-emacs-directory)))
88 (when (file-exists-p custom-file)
89 (load custom-file))
90 (when (file-exists-p private-file)
91 (load private-file)))