-
Notifications
You must be signed in to change notification settings - Fork 1
/
init-minimum.el
169 lines (152 loc) · 5.82 KB
/
init-minimum.el
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
;;; init-minimum.el --- Insert description here -*- lexical-binding: t -*-
;;; Commentary:
;;; Code:
;; Produce backtraces when errors occur: can be helpful to diagnose startup issues
(setq debug-on-error t)
;; ignore native compile warning
(setq warning-minimum-level :emergency)
(defconst *spell-check-support-enabled* nil ) ;; Enable with t if you prefer
(defconst *IS-MAC* (eq system-type 'darwin))
(defconst *IS-LINUX* (memq system-type '(gnu gnu/linux gnu/kfreebsd berkeley-unix)))
(defconst *org-path* "~/Library/CloudStorage/Dropbox/org")
(defconst *fallback-fonts* '("Jigmo" "Jigmo2" "Jigmo3"))
(defconst *emoji-fonts* '("Apple Color Emoji"
"Noto Color Emoji"
"Noto Emoji"
"Segoe UI Emoji"
"Symbola"))
(defconst *default-font* "JetBrains Mono 14")
(defconst *pro-font* "iosevka")
(defconst *term-default-font* "iosevkaTerm Nerd Font Mono 14")
(defconst *zh-default-font* "LXGW WenKai")
(defconst *jp-default-font* "Noto Sans Javanese")
(defconst *symbol-default-font* "Symbols Nerd Font Mono")
(when *IS-MAC*
;; modify meta from ⌥ to ⌘
(setq mac-command-modifier 'meta)
(setq mac-option-modifier 'super)
;; Make mouse wheel / trackpad scrolling less jerky
(setq mouse-wheel-scroll-amount '(1 ((shift) . 5) ((control))))
(dolist (multiple '("" "double-" "triple-"))
(dolist (direction '("right" "left"))
(global-set-key (read-kbd-macro (concat "<" multiple "wheel-" direction ">")) 'ignore)))
(global-set-key (kbd "M-`") 'ns-next-frame)
(defconst +env-file (concat user-emacs-directory ".env"))
(defun +load-env-file (file &optional noerror)
"Read and set envvars from FILE.
If NOERROR is non-nil, don't throw an error if the file doesn't exist or is
unreadable. Returns the names of envvars that were changed."
(if (not (file-readable-p file))
(unless noerror
(signal 'file-error (list "Couldn't read envvar file" file)))
(let (envvars environment)
(with-temp-buffer
(save-excursion
(insert "\n")
(insert-file-contents file))
(while (re-search-forward "\n *\\([^#= \n]*\\)=" nil t)
(push (match-string 1) envvars)
(push (buffer-substring
(match-beginning 1)
(1- (or (save-excursion
(when (re-search-forward "^\\([^= ]+\\)=" nil t)
(line-beginning-position)))
(point-max))))
environment)))
(when environment
(setq process-environment
(append (nreverse environment) process-environment)
exec-path
(if (member "PATH" envvars)
(append (split-string (getenv "PATH") path-separator t)
(list exec-directory))
exec-path)
shell-file-name
(if (member "SHELL" envvars)
(or (getenv "SHELL") shell-file-name)
shell-file-name))
envvars))))
(when (and (or (display-graphic-p))
(file-exists-p +env-file))
(+load-env-file +env-file)))
;; branch develop
(setq straight-repository-branch "develop")
;; Install 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))
;; install packages
(defvar *use-package-list*
'(
setup
;; ==== Put the packages related to the code below this line! ====
))
(dolist (e *use-package-list*)
(straight-use-package e))
(setq vc-follow-symlinks t)
(require 'setup)
(require 'cl-lib)
(require 'map)
(setup-define :defer
(lambda (features)
`(run-with-idle-timer 1 nil
(lambda ()
,features)))
:documentation "Delay loading the feature until a certain amount of idle time has passed."
:repeatable t)
(setup-define :advice
(lambda (symbol where function)
`(advice-add ',symbol ,where ,function))
:documentation "Add a piece of advice on a function.
See `advice-add' for more details."
:after-loaded t
:debug '(sexp sexp function-form)
:ensure '(nil nil func)
:repeatable t)
(setup-define :after
(lambda (feature &rest body)
`(:with-feature ,feature
(:when-loaded ,@body)))
:documentation "Eval BODY after FEATURE."
:indent 1)
(setup-define :autoload
(lambda (func)
(let ((fn (if (memq (car-safe func) '(quote function))
(cadr func)
func)))
`(unless (fboundp (quote ,fn))
(autoload (function ,fn) ,(symbol-name (setup-get 'feature)) nil t))))
:documentation "Autoload COMMAND if not already bound."
:repeatable t
:signature '(FUNC ...))
(setup-define :hooks
(lambda (hook func)
`(add-hook ',hook #',func))
:documentation "Add pairs of hooks."
:repeatable t)
(setup-define :load-after
(lambda (&rest features)
(let ((body `(require ',(setup-get 'feature))))
(dolist (feature (nreverse features))
(setq body `(with-eval-after-load ',feature ,body)))
body))
:documentation "Load the current feature after FEATURES.")
(setup-define :face
(lambda (face spec) `(custom-set-faces (quote (,face ,spec))))
:documentation "Customize FACE to SPEC."
:signature '(face spec ...)
:debug '(setup)
:repeatable t
:after-loaded t)
;; ==== put your code below this line! ====
;; emacs -Q -l ~/.emacs.d/init-minimum.el
;;; init-minimum.el ends here