summary refs log tree commit diff stats
path: root/init.el
blob: 80a60dae59e095f7273c1e460df5788e350af55c (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
:;;; init.el -*- lexical-binding: t; coding: utf-8-unix -*-
;;
;; Author: Case Duckworth <acdw@acdw.net>
;; Created: Sometime during Covid-19, 2020
;; Keywords: configuration
;; URL: https://tildegit.org/acdw/emacs
;; Bankruptcy: 5b
;;
;; This file is NOT part of GNU Emacs.
;;
;;; License:
;;
;; Everyone is permitted to do whatever with this software, without
;; limitation.  This software comes without any warranty whatsoever,
;; but with two pieces of advice:
;; - Don't hurt yourself.
;; - Make good choices.
;;
;;; Code:

;; Add `acdw.el'
(push (expand-file-name "lisp/"
			user-emacs-directory)
      load-path)

(require 'acdw)

;;; Good defaults

;; Lines
(acdw/set '((fill-column 80)))
(global-display-fill-column-indicator-mode +1)
(add-hook 'text-mode-hook #'turn-on-auto-fill)
(add-hook 'prog-mode-hook #'turn-on-auto-fill)
(global-so-long-mode +1)
;; Whitespace
(acdw/set `((whitespace-style
	     (empty indentation space-before-tab space-after-tab))
	    (indent-tabs-mode t)
	    (tab-width 8)))
(add-hook 'before-save-hook #'whitespace-cleanup)

;; Pairs
(add-hook 'prog-mode-hook #'electric-pair-local-mode)
(acdw/set '((show-paren-delay 0)
	    (show-paren-style mixed)
	    (show-paren-when-point-inside-paren t)
	    (show-paren-when-point-in-periphery t)))
(show-paren-mode +1)

;; Killing & Yanking
(delete-selection-mode +1)
(acdw/set `((save-interprogram-paste-before-kill t)
	    (yank-pop-change-selection t)
	    (x-select-enable-clipboard t)
	    (x-select-enable-primary t)
	    (mouse-drag-copy-region t)
	    (kill-do-not-save-duplicates t)))

;; Encoding
(set-charset-priority 'unicode)
(set-language-environment "UTF-8")
(prefer-coding-system 'utf-8-unix)
(set-default-coding-systems 'utf-8-unix)
(set-terminal-coding-system 'utf-8-unix)
(set-keyboard-coding-system 'utf-8-unix)
(set-selection-coding-system 'utf-8-unix)
(acdw/set '((locale-coding-system utf-8-unix)
	    (coding-system-for-read utf-8-unix)
	    (coding-system-for-write utf-8-unix)
	    (buffer-file-coding-system utf-8-unix)
	    (org-export-coding-system utf-8-unix)
	    (org-html-coding-system utf-8-unix)
	    (default-process-coding-system (utf-8-unix . utf-8-unix))
	    (x-select-request-type (UTF8_STRING COMPOUND_TEXT TEXT STRING))))

;; Backups
(acdw/set `((backup-by-copying t)
	    (delete-old-versions -1)
	    (version-control t)
	    (vc-make-backup-files t)
	    (backup-directory-alist ((".*" . ,(acdw/in-dir "backup/" t))))))
;; Autosaves
(acdw/set `((auto-save-file-name-transforms
	     ((".*" ,(acdw/in-dir "auto-save/" t) t)))
	    (auto-save-list-file-prefix
	     ,(acdw/in-dir "auto-save-list/.saves-" t))))
(auto-save-visited-mode +1)

;; Cursor
(acdw/set '((cursor-type bar)
	    (cursor-in-non-selected-windows 'box)))

(defun hook--overwrite-mode-change-cursor ()
  (setq cursor-type (if overwrite-mode t 'bar)))
(add-hook 'overwrite-mode-hook #'hook--overwrite-mode-change-cursor)

;; Bindings
(acdw/bind "C-h" 'ehelp-command :after ("ehelp" nil nil 'keymap))