Newer
Older
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
;;; editor.el --- configs for Emacs settings
;;
;;; Commentary:
;;
;;; Code:
;; Resolve symlinks when opening files
(setq find-file-visit-truename t
vc-follow-symlinks t)
(setq find-file-suppress-same-file-warnings t)
;; Create missing directory when we open a file that doesn't exist under
;; a directory tree tha may not exist.
(add-hook 'find-file-not-found-hooks
(lambda ()
(unless (file-remote-p buffer-file-name)
(let ((parent-directory (file-name-directory buffer-file-name)))
(and (not (file-directory-p parent-directory))
(y-or-n-p (format "Directory `%s' does not exist! Create it? "
parent-directory))
(progn (make-directory parent-directory)
t))))))
;; Don't generate backups or lockfiles.
(setq create-lockfiles nil
make-backup-files nil
ring-bell-function 'ignore
;; build-in packages
version-control t
backup-by-copying t
delete-old-versions t
kept-old-versions 5
kept-new-versions 5
backup-directory-alist user/backup-directory-alist
tramp-backup-directory-alist backup-directory-alist)
(setq-default scroll-step 1) ;; smooth scroll
(setq-default auto-image-file-mode t)
(setq auto-save-list-file-prefix user/auto-save-list-prefix)
(setq-default initial-scratch-message nil
inhibit-splash-screen t
initial-major-mode 'text-mode
frame-title-format "%b")
;;; Formatting
(setq-default indent-tabs-mode nil
tab-width 4
tab-always-indent nil)
(setq-default fill-column 80)
(setq-default word-wrap t)
(setq-default truncate-lines t)
;; Default to soft line-wrapping in text modes.
(add-hook 'text-mode-hook #'visual-line-mode)
(unless (assq 'menu-bar-lines default-frame-alist)
(add-to-list 'default-frame-alist '(menu-bar-lines . 0))
(add-to-list 'default-frame-alist '(tool-bar-lines . 0))
(add-to-list 'default-frame-alist '(vertical-scroll-bars)))
(delete-selection-mode 1)
(electric-pair-mode 1)
(size-indication-mode t)
(add-hook 'emacs-startup-hook #'window-divider-mode)
;; Don't display floating tooltips;
(when (bound-and-true-p tooltip-mode)
(tooltip-mode -1))
;;; Build-in packages
(use-package paren
:hook (after-init . show-paren-mode)
:config
(setq show-paren-delay 0.1
show-paren-highlight-openparen t
show-paren-when-point-inside-paren t
show-paren-when-point-in-periphery t))
(use-package recentf
:defer 1
:commands (recentf-save-list)
:init
(progn
(add-hook 'find-file-hook (lambda () (unless recentf-mode
(recentf-mode)
(recentf-track-opened-file))))
(setq recentf-save-file user/recentf-save-file
recentf-max-saved-items 1000
recentf-auto-cleanup 'never
recentf-auto-save-timer (run-with-idle-timer 600 t
'recentf-save-list)))
)
(use-package display-line-numbers
:hook
(prog-mode . display-line-numbers-mode)
)
;;
(use-package saveplace
:hook (after-init . save-place-mode)
:init
(setq save-place-file user/save-place-file)
)
(use-package subword
:hook (after-init . global-subword-mode)
:diminish subword-mode)
(use-package winner-mode
:ensure nil
:hook (after-init . winner-mode))
(use-package autorevert
:ensure nil
:hook (after-init . global-auto-revert-mode))
(use-package imenu
:defer t
:bind (("C-c j i" . 'imenu))
)
;;; Minibuffers
;; Allow for minibuffer-ception.
(setq enable-recursive-minibuffers t)
(setq echo-keystrokes 0.02)
(setq resize-mini-windows 'grow-only
max-mini-window-height 0.15)
(fset #'yes-or-no-p #'y-or-n-p)
;; Try really hard to keep the cursor from getting stuce in the read-only prompt
;; portion of the minibuffer.
(setq minibuffer-prompt-properties
'(read-only t intangible t cursor-intangible t face minibuffer-prompt))
(add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)
;;; Popwin
(use-package popwin
:ensure t
:config
(progn
(popwin-mode 1)
(setq popwin:special-display-config nil)
;; buffer that we manage
(push '("*Help*" :dedicated t :position bottom :stick t :noselect nil :height 0.4) popwin:special-display-config)
(push '("*Process List*" :dedicated t :position bottom :stick t :noselect nil :height 0.4) popwin:special-display-config)
(push '(compilation-mode :dedicated nil :position bottom :stick t :noselect t :height 0.4) popwin:special-display-config)
(push '(dap-server-log-mode :dedicated nil :position bottom :stick t :noselect t :height 0.4) popwin:special-display-config)
(push '("*Shell Command Output*" :dedicated t :position bottom :stick t :noselect nil ) popwin:special-display-config)
(push '("*Async Shell Command*" :dedicated t :position bottom :stick t :noselect nil ) popwin:special-display-config)
(push '("*undo-tree*" :dedicated t :position right :stick t :noselect nil :width 60) popwin:special-display-config)
(push '("*undo-tree Diff*" :dedicated t :position bottom :stick t :noselect nil :height 0.3) popwin:special-display-config)
(push '("*ert*" :dedicated t :position bottom :stick t :noselect nil ) popwin:special-display-config)
(push '("*grep*" :dedicated t :position bottom :stick t :noselect nil ) popwin:special-display-config)
(push '("*nosetests*" :dedicated t :position bottom :stick t :noselect nil ) popwin:special-display-config)
(push '("^\*WoMan.+\*$" :regexp t :position bottom ) popwin:special-display-config)
(push '("*Google Translate*" :dedicated t :position bottom :stick t :noselect t :height 0.4) popwin:special-display-config)
))
;;; Modeline
(use-package doom-modeline
:ensure t
:hook (after-init . doom-modeline-mode)
:init
(unless after-init-time
(setq-default mode-line-format nil))
(setq projectile-dynamic-mode-line nil)
(setq doom-modeline-bar-width 3
doom-modeline-github nil
doom-modeline-mu4e nil
doom-modeline-persp-name nil
doom-modeline-minor-modes nil
doom-modeline-major-mode-icon t
doom-modeline-buffer-file-name-style 'relative-from-project)
(use-package anzu
;;; doom themes
(use-package doom-themes
:ensure t
:config
(load-theme 'doom-one))
;;; Whichkey
(use-package which-key
:ensure t
:init
(which-key-mode)
:config
:diminish which-key-mode
)
;;; General - for keybindings
(use-package general
:ensure t
:init
(defalias 'define-key! #'general-def)
(defalias 'undefine-key! #'general-unbind)
)