1 |
;; NOTE: I no longer use Spacemacs. Please see init.el for Ghent Emacs settings. |
2 |
;; -*- mode: emacs-lisp -*- |
3 |
;; This file is loaded by Spacemacs at startup. |
4 |
;; It must be stored in your home directory. |
5 |
;;;; Local |
6 |
(setq is-linuxp (eq system-type 'gnu/linux)) |
7 |
(defun os-path (x) (if is-linuxp x (expand-file-name x "c:"))) |
8 |
|
9 |
;;;; Core |
10 |
|
11 |
(defvar dotspacemacs/layers/core |
12 |
'( |
13 |
git |
14 |
org ;; :variables |
15 |
;;org-agenda-files '( |
16 |
;;"~/University/" |
17 |
;;"~/Repositories/private/org/" |
18 |
;;"~/University/COMPN/")) |
19 |
syntax-checking |
20 |
(auto-completion :variables |
21 |
auto-completion-return-key-behavior 'complete |
22 |
auto-completion-tab-key-behavior 'cycle |
23 |
auto-completion-enable-snippets-in-popup t |
24 |
auto-completion-complete-with-key-sequence-delay nil) |
25 |
ycmd |
26 |
helm |
27 |
(version-control :variables |
28 |
version-control-global-margin t |
29 |
version-control-diff-tool 'git-gutter+) |
30 |
) |
31 |
"Layers I consider core to Spacemacs") |
32 |
|
33 |
;; Langs |
34 |
|
35 |
(defvar dotspacemacs/layers/langs |
36 |
'(emacs-lisp |
37 |
(html :variables |
38 |
web-mode-enable-auto-pairing nil |
39 |
web-mode-enable-auto-closing nil |
40 |
web-mode-enable-auto-expanding nil |
41 |
web-mode-enable-auto-opening nil |
42 |
web-mode-enable-auto-quoting nil) |
43 |
|
44 |
markdown |
45 |
csv |
46 |
yaml |
47 |
;rust |
48 |
(clojure :variables |
49 |
clojure-enable-fancify-symbols t) |
50 |
(haskell :variables |
51 |
haskell-completion-backend 'intero) |
52 |
(python :variables |
53 |
python-sort-imports-on-save t |
54 |
python-test-runner 'pytest) |
55 |
) |
56 |
"Programming and markup language layers") |
57 |
|
58 |
;;;; Extra |
59 |
|
60 |
(defvar dotspacemacs/layers/extra |
61 |
'(gnus |
62 |
graphviz |
63 |
themes-megapack |
64 |
;; TODO: Needs configuration: http://spacemacs.org/layers/+themes/theming/README.html |
65 |
theming |
66 |
mu4e) |
67 |
"Miscellaneous layers") |
68 |
|
69 |
(defun dotspacemacs/layers () |
70 |
"Configuration Layers declaration. |
71 |
You should not put any user code in this function besides modifying the variable |
72 |
values." |
73 |
(setq-default |
74 |
;; Base distribution to use. This is a layer contained in the directory |
75 |
;; `+distribution'. For now available distributions are `spacemacs-base' |
76 |
;; or `spacemacs'. (default 'spacemacs) |
77 |
dotspacemacs-distribution 'spacemacs |
78 |
;; Lazy installation of layers (i.e. layers are installed only when a file |
79 |
;; with a supported type is opened). Possible values are `all', `unused' |
80 |
;; and `nil'. `unused' wilIn addition, we will also organise a second review moment on 30 November which will deal with broader code issues, such as OO structure, comments, naming, code style, robustness, logging, etc. (for preparation and inspiration, see http://www.phpied.com/how-to-write-unmaintainable-php-code-2009/) |
81 |
|
82 |
;; not listed in variable `dotspacemacs-configuration-layers'), `all' will |
83 |
;; lazy iELPAnstall any layer that support lazy installation even the layers |
84 |
;; listed in `dotspacemacs-configuration-layers'. `nil' disable the lazy |
85 |
;; installation feature and you have to explicitly list a layer in the |
86 |
;; variable `dotspacemacs-configuration-layers' to install it. |
87 |
;; (default 'unused) |
88 |
dotspacemacs-enable-lazy-installation 'unused |
89 |
;; If non-nil then Spacemacs will ask for confirmation before installing |
90 |
;; a layer lazily. (default t) |
91 |
dotspacemacs-ask-for-lazy-installation t |
92 |
;; If non-nil layers with lazy install support are lazy installed. |
93 |
;; List of additional paths where to look for configuration layers. |
94 |
;; Paths must have a trailing slash (i.e. `~/.mycontribs/') |
95 |
dotspacemacs-configuration-layer-path `(,(os-path "~/.emacs.d/layers/")) |
96 |
;; List of configuration layers to load. |
97 |
dotspacemacs-configuration-layers (append |
98 |
dotspacemacs/layers/core |
99 |
dotspacemacs/layers/langs |
100 |
dotspacemacs/layers/extra) |
101 |
;; List of additional packages that will be installed without being |
102 |
;; wrapped in a layer. If you need some configuration for these |
103 |
;; packages, then consider creating a layer. You can also put the |
104 |
;; configuration in `dotspacemacs/user-config'. |
105 |
dotspacemacs-additional-packages '( |
106 |
markdown-mode |
107 |
;;po-mode ;;Commented until I find a way to disable the FUCKING ANNOYING READONLY MODE |
108 |
(pretty-mode :location (recipe :fetcher github :repo "akatov/pretty-mode")) |
109 |
(prettify-utils :location (recipe :fetcher github :repo "Ilazki/prettify-utils.el")) |
110 |
(company-mode :location (recipe :fetcher github :repo "company-mode/company-mode")) |
111 |
(emacs-ycmd :location (recipe :fetcher github :repo "abingham/emacs-ycmd")) |
112 |
(company-flx :location (recipe :fetcher github :repo "PythonNut/company-flx"))) |
113 |
|
114 |
;; A list of packages that cannot be updated. |
115 |
dotspacemacs-frozen-packages '() |
116 |
;; A list of packages that will not be installed and loaded. |
117 |
dotspacemacs-excluded-packages '( |
118 |
smartparens |
119 |
exec-path-from-shell) |
120 |
;; Defines the behaviour of Spacemacs when installing packages. |
121 |
;; Possible values are `used-only', `used-but-keep-unused' and `all'. |
122 |
;; `used-only' installs only explicitly used packages and uninstall any |
123 |
;; unused packages as well as their unused dependencies. |
124 |
;; `used-but-keep-unused' installs only the used packages but won't uninstall |
125 |
;; them if they become unused. `all' installs *all* packages supported by |
126 |
;; Spacemacs and never uninstall them. (default is `used-only') |
127 |
dotspacemacs-install-packages 'used-only)) |
128 |
|
129 |
(defun dotspacemacs/init () |
130 |
"Initialization function. |
131 |
This function is called at the very startup of Spacemacs initialization |
132 |
before layers configuration. |
133 |
You should not put any user code in there besides modifying the variable |
134 |
values." |
135 |
;; This setq-default sexp is an exhaustive list of all the supported |
136 |
;; spacemacs settings. |
137 |
(setq-default |
138 |
;; If non nil ELPA repositories are contacted via HTTPS whenever it's |
139 |
;; possible. Set it to nil if you have no way to use HTTPS in your |
140 |
;; environment, otherwise it is strongly recommended to let it set to t. |
141 |
;; This variable has no effect if Emacs is launched with the parameter |
142 |
;; `--insecure' which forces the value of this variable to nil. |
143 |
;; (default t) |
144 |
dotspacemacs-elpa-https t |
145 |
;; Maximum allowed time in seconds to contact an ELPA repository. |
146 |
dotspacemacs-elpa-timeout 5 |
147 |
;; If non nil then spacemacs will check for updates at startup |
148 |
;; when the current branch is not `develop'. Note that checking for |
149 |
;; new versions works via git commands, thus it calls GitHub services |
150 |
;; whenever you start Emacs. (default nil) |
151 |
dotspacemacs-check-for-update nil |
152 |
;; If non-nil, a form that evaluates to a package directory. For example, to |
153 |
;; use different package directories for different Emacs versions, set this |
154 |
;; to `emacs-version'. |
155 |
dotspacemacs-elpa-subdirectory nil |
156 |
;; One of `vim', `emacs' or `hybrid'. |
157 |
;; `hybrid' is like `vim' except that `insert state' is replaced by the |
158 |
;; `hybrid state' with `emacs' key bindings. The value can also be a list |
159 |
;; with `:variables' keyword (similar to layers). Check the editing styles |
160 |
;; section of the documentation for details on available variables. |
161 |
;; (default 'vim) |
162 |
dotspacemacs-editing-style 'vim |
163 |
;; If non nil output loading progress in `*Messages*' buffer. (default nil) |
164 |
dotspacemacs-verbose-loading nil |
165 |
;; Specify the startup banner. Default value is `official', it displays |
166 |
;; the official spacemacs logo. An integer value is the index of text |
167 |
;; banner, `random' chooses a random text banner in `core/banners' |
168 |
;; directory. A string value must be a path to an image format supported |
169 |
;; by your Emacs build. |
170 |
;; If the value is nil then no banner is displayed. (default 'official) |
171 |
dotspacemacs-startup-banner 'official |
172 |
;; List of items to show in startup buffer or an association list of |
173 |
;; the form `(list-type . list-size)`. If nil then it is disabled. |
174 |
;; Possible values for list-type are: |
175 |
;; `recents' `bookmarks' `projects' `agenda' `todos'." |
176 |
;; List sizes may be nil, in which case |
177 |
;; `spacemacs-buffer-startup-lists-length' takes effect. |
178 |
dotspacemacs-startup-lists '((recents . 5) |
179 |
(projects . 7)) |
180 |
;; True if the home buffer should respond to resize events. |
181 |
dotspacemacs-startup-buffer-responsive t |
182 |
;; Default major mode of the scratch buffer (default `text-mode') |
183 |
dotspacemacs-scratch-mode 'text-mode |
184 |
;; List of themes, the first of the list is loaded when spacemacs starts. |
185 |
;; Press T n to cycle to the next theme in the list (works great |
186 |
;; with 2 themes variants, one dark and one light) |
187 |
dotspacemacs-themes '(monokai |
188 |
solarized-dark |
189 |
solarized-light) |
190 |
;; If non nil the cursor color matches the state color in GUI Emacs. |
191 |
dotspacemacs-colorize-cursor-according-to-state t |
192 |
;; Default font, or prioritized list of fonts. `powerline-scale' allows to |
193 |
;; quickly tweak the mode-line size to make separators look not too crappy. |
194 |
dotspacemacs-default-font '("Hack" |
195 |
:size 15 |
196 |
:weight normal |
197 |
:width normal |
198 |
:powerline-scale 1.5) |
199 |
;; The leader key |
200 |
dotspacemacs-leader-key "SPC" |
201 |
;; The key used for Emacs commands (M-x) (after pressing on the leader key). |
202 |
;; (default "SPC") |
203 |
dotspacemacs-emacs-command-key "SPC" |
204 |
;; The key used for Vim Ex commands (default ":") |
205 |
dotspacemacs-ex-command-key ":" |
206 |
;; The leader key accessible in `emacs state' and `insert state' |
207 |
;; (default "M-m") |
208 |
dotspacemacs-emacs-leader-key "M-m" |
209 |
;; Major mode leader key is a shortcut key which is the equivalent of |
210 |
;; pressing ` m`. Set it to `nil` to disable it. (default ",") |
211 |
dotspacemacs-major-mode-leader-key "," |
212 |
;; Major mode leader key accessible in `emacs state' and `insert state'. |
213 |
;; (default "C-M-m") |
214 |
dotspacemacs-major-mode-emacs-leader-key "C-M-m" |
215 |
;; These variables control whether separate commands are bound in the GUI to |
216 |
;; the key pairs C-i, TAB and C-m, RET. |
217 |
;; Setting it to a non-nil value, allows for separate commands under |
218 |
;; and TAB or and RET. |
219 |
;; In the terminal, these pairs are generally indistinguishable, so this only |
220 |
;; works in the GUI. (default nil) |
221 |
dotspacemacs-distinguish-gui-tab nil |
222 |
;; If non nil `Y' is remapped to `y$' in Evil states. (default nil) |
223 |
dotspacemacs-remap-Y-to-y$ nil |
224 |
;; If non-nil, the shift mappings `<' and `>' retain visual state if used |
225 |
;; there. (default t) |
226 |
dotspacemacs-retain-visual-state-on-shift t |
227 |
;; If non-nil, J and K move lines up and down when in visual mode. |
228 |
;; (default nil) |
229 |
dotspacemacs-visual-line-move-text nil |
230 |
;; If non nil, inverse the meaning of `g' in `:substitute' Evil ex-command. |
231 |
;; (default nil) |
232 |
dotspacemacs-ex-substitute-global nil |
233 |
;; Name of the default layout (default "Default") |
234 |
dotspacemacs-default-layout-name "Default" |
235 |
;; If non nil the default layout name is displayed in the mode-line. |
236 |
;; (default nil) |
237 |
dotspacemacs-display-default-layout nil |
238 |
;; If non nil then the last auto saved layouts are resume automatically upon |
239 |
;; start. (default nil) |
240 |
dotspacemacs-auto-resume-layouts nil |
241 |
;; Size (in MB) above which spacemacs will prompt to open the large file |
242 |
;; literally to avoid performance issues. Opening a file literally means that |
243 |
;; no major mode or minor modes are active. (default is 1) |
244 |
dotspacemacs-large-file-size 1 |
245 |
;; Location where to auto-save files. Possible values are `original' to |
246 |
;; auto-save the file in-place, `cache' to auto-save the file to another |
247 |
;; file stored in the cache directory and `nil' to disable auto-saving. |
248 |
;; (default 'cache) |
249 |
dotspacemacs-auto-save-file-location 'cache |
250 |
;; Maximum number of rollback slots to keep in the cache. (default 5) |
251 |
dotspacemacs-max-rollback-slots 5 |
252 |
;; If non nil, `helm' will try to minimize the space it uses. (default nil) |
253 |
dotspacemacs-helm-resize nil |
254 |
;; if non nil, the helm header is hidden when there is only one source. |
255 |
;; (default nil) |
256 |
dotspacemacs-helm-no-header nil |
257 |
;; define the position to display `helm', options are `bottom', `top', |
258 |
;; `left', or `right'. (default 'bottom) |
259 |
dotspacemacs-helm-position 'bottom |
260 |
;; Controls fuzzy matching in helm. If set to `always', force fuzzy matching |
261 |
;; in all non-asynchronous sources. If set to `source', preserve individual |
262 |
;; source settings. Else, disable fuzzy matching in all sources. |
263 |
;; (default 'always) |
264 |
dotspacemacs-helm-use-fuzzy 'always |
265 |
;; If non nil the paste micro-state is enabled. When enabled pressing `p` |
266 |
;; several times cycle between the kill ring content. (default nil) |
267 |
dotspacemacs-enable-paste-transient-state nil |
268 |
;; Which-key delay in seconds. The which-key buffer is the popup listing |
269 |
;; the commands bound to the current keystroke sequence. (default 0.4) |
270 |
dotspacemacs-which-key-delay 0 |
271 |
;; Which-key frame position. Possible values are `right', `bottom' and |
272 |
;; `right-then-bottom'. right-then-bottom tries to display the frame to the |
273 |
;; right; if there is insufficient space it displays it at the bottom. |
274 |
;; (default 'bottom) |
275 |
dotspacemacs-which-key-position 'bottom |
276 |
;; If non nil a progress bar is displayed when spacemacs is loading. This |
277 |
;; may increase the boot time on some systems and emacs builds, set it to |
278 |
;; nil to boost the loading time. (default t) |
279 |
dotspacemacs-loading-progress-bar t |
280 |
;; If non nil the frame is fullscreen when Emacs starts up. (default nil) |
281 |
;; (Emacs 24.4+ only) |
282 |
dotspacemacs-fullscreen-at-startup nil |
283 |
;; If non nil `spacemacs/toggle-fullscreen' will not use native fullscreen. |
284 |
;; Use to disable fullscreen animations in OSX. (default nil) |
285 |
dotspacemacs-fullscreen-use-non-native nil |
286 |
;; des dired-mode |
287 |
;; doc-view-mode |
288 |
;; markdown-mode |
289 |
;; org-mode |
290 |
;; pdf-view-mode |
291 |
;; text-mode |
292 |
;; :size-limit-kb 1000) |
293 |
;; (default nil) |
294 |
dotspacemacs-line-numbers 'relative |
295 |
;; Code folding method. Possible values are `evil' and `origami'. |
296 |
;; (default 'evil) |
297 |
dotspacemacs-folding-method 'evil |
298 |
;; If non-nil smartparens-strict-mode will be enabled in programming modes. |
299 |
;; (default nil) |
300 |
dotspacemacs-smartparens-strict-mode nil |
301 |
;; If non-nil pressing the closing parenthesis `)' key in insert mode passes |
302 |
;; over any automatically added closing parenthesis, bracket, quote, etc… |
303 |
;; This can be temporary disabled by pressing `C-q' before `)'. (default nil) |
304 |
dotspacemacs-smart-closing-parenthesis nil |
305 |
;; Select a scope to highlight delimiters. Possible values are `any', |
306 |
;; `current', `all' or `nil'. Default is `all' (highlight any scope and |
307 |
;; emphasis the current one). (default 'all) |
308 |
dotspacemacs-highlight-delimiters 'all |
309 |
;; If non nil, advise quit functions to keep server open when quitting. |
310 |
;; (default nil) |
311 |
dotspacemacs-persistent-server nil |
312 |
;; List of search tool executable names. Spacemacs uses the first installed |
313 |
;; tool of the list. Supported tools are `ag', `pt', `ack' and `grep'. |
314 |
;; (default '("ag" "pt" "ack" "grep")) |
315 |
dotspacemacs-search-tools '("ag" "pt" "ack" "grep") |
316 |
;; The default package repository used if no explicit repository has been |
317 |
;; specified with an installed package. |
318 |
;; Not used for now. (default nil) |
319 |
dotspacemacs-default-package-repository nil |
320 |
;; Delete whitespace while saving buffer. Possible values are `all' |
321 |
;; to aggressively delete empty line and long sequences of whitespace, |
322 |
;; `trailing' to delete only the whitespace at end of lines, `changed'to |
323 |
;; delete only whitespace for changed lines or `nil' to disable cleanup. |
324 |
;; (default nil) |
325 |
dotspacemacs-whitespace-cleanup nil |
326 |
)) |
327 |
|
328 |
(defun dotspacemacs/user-init () |
329 |
(add-hook 'text-mode-hook #'auto-fill-mode) |
330 |
;;; Fira code |
331 |
;; This works when using emacs --daemon + emacsclient |
332 |
(add-hook 'after-make-frame-functions (lambda (frame) (set-fontset-font t '(#Xe100 . #Xe16f) "Fira Code Symbol"))) |
333 |
;; This works when using emacs without server/client |
334 |
(set-fontset-font t '(#Xe100 . #Xe16f) "Fira Code Symbol") |
335 |
;; I haven't found one statement that makes both of the above situations work, so I use both for now |
336 |
|
337 |
;; All possible Fira code symbols. I've commented some for historical purposes, |
338 |
;; and only left the ones I do want to see. They may be removed one day, but for |
339 |
;; now, they'll stay here. |
340 |
;; I generally only use the ones that actually give new symbols based on their |
341 |
;; ligature. ";;" is just the same symbol mashed together, so I don't use that. |
342 |
(defconst fira-code-font-lock-keywords-alist |
343 |
(mapcar (lambda (regex-char-pair) |
344 |
`(,(car regex-char-pair) |
345 |
(0 (prog1 () |
346 |
(compose-region (match-beginning 1) |
347 |
(match-end 1) |
348 |
;; The first argument to concat is a string containing a literal tab |
349 |
,(concat " " (list (decode-char 'ucs (cadr regex-char-pair))))))))) |
350 |
'(;("[^/]\\(\\*\\*\\)[^/]" #Xe101) |
351 |
;("[^*]\\(\\*/\\)" #Xe105) |
352 |
;("\\(\\\\\\\\\\)" #Xe106) |
353 |
("\\({-\\)" #Xe108) |
354 |
;("\\(\\[\\]\\)" #Xe109) |
355 |
;("[^=]\\(:=\\)" #Xe10c) |
356 |
("\\(!=\\)" #Xe10e) |
357 |
("\\(!==\\)" #Xe10f) |
358 |
("\\(-}\\)" #Xe110) |
359 |
("\\(-->\\)" #Xe113) |
360 |
("[^-]\\(->\\)" #Xe114) |
361 |
("\\(->>\\)" #Xe115) |
362 |
("\\(-<\\)" #Xe116) |
363 |
("\\(-<<\\)" #Xe117) |
364 |
("\\(-~\\)" #Xe118) |
365 |
("\\(\\.-\\)" #Xe122) |
366 |
("\\(\\.=\\)" #Xe123) |
367 |
("\\(/=\\)" #Xe12c) |
368 |
("\\(/==\\)" #Xe12d) |
369 |
("\\(|>\\)" #Xe135) |
370 |
("[^!/]\\(==\\)[^>]" #Xe13c) |
371 |
("\\(===\\)" #Xe13d) |
372 |
("\\(==>\\)" #Xe13e) |
373 |
("[^=]\\(=>\\)" #Xe13f) |
374 |
("\\(=>>\\)" #Xe140) |
375 |
("\\(<=\\)" #Xe141) |
376 |
("\\(=<<\\)" #Xe142) |
377 |
("\\(=/=\\)" #Xe143) |
378 |
("\\(>-\\)" #Xe144) |
379 |
("\\(>=\\)" #Xe145) |
380 |
("\\(>=>\\)" #Xe146) |
381 |
;("[^-=]\\(>>\\)" #Xe147) |
382 |
("\\(>>-\\)" #Xe148) |
383 |
("\\(>>=\\)" #Xe149) |
384 |
("\\(<|\\)" #Xe14d) |
385 |
("\\(<|>\\)" #Xe14e) |
386 |
("\\(<-\\)" #Xe152) |
387 |
("\\(<--\\)" #Xe153) |
388 |
("\\(<->\\)" #Xe154) |
389 |
("\\(<=\\)" #Xe157) |
390 |
("\\(<==\\)" #Xe158) |
391 |
("\\(<=>\\)" #Xe159) |
392 |
("\\(<=<\\)" #Xe15a) |
393 |
("\\(<>\\)" #Xe15b) |
394 |
;("[^-=]\\(<<\\)" #Xe15c) |
395 |
("\\(<<-\\)" #Xe15d) |
396 |
("\\(<<=\\)" #Xe15e) |
397 |
("\\(<<<\\)" #Xe15f) |
398 |
("\\(<~\\)" #Xe160) |
399 |
("\\(<~~\\)" #Xe161) |
400 |
("\\(~@\\)" #Xe164) |
401 |
("\\(~-\\)" #Xe165) |
402 |
("\\(~=\\)" #Xe166) |
403 |
("\\(~>\\)" #Xe167) |
404 |
("[^<]\\(~~\\)" #Xe168) |
405 |
("\\(~~>\\)" #Xe169) |
406 |
("[^:=]\\(:\\)[^:=]" #Xe16c) |
407 |
("[^\\+<>]\\(\\+\\)[^\\+<>]" #Xe16d) |
408 |
("[^\\*/<>]\\(\\*\\)[^\\*/<>]" #Xe16f)))) |
409 |
|
410 |
(defun add-fira-code-symbol-keywords () |
411 |
(font-lock-add-keywords nil fira-code-font-lock-keywords-alist)) |
412 |
|
413 |
(add-hook 'prog-mode-hook |
414 |
#'add-fira-code-symbol-keywords) |
415 |
"Initialization function for user code. |
416 |
It is called immediately after `dotspacemacs/init', before layer configuration |
417 |
executes. |
418 |
This function is mostly useful for variables that need to be set |
419 |
before packages are loaded. If you are unsure, you should try in setting them in |
420 |
`dotspacemacs/user-config' first." |
421 |
) |
422 |
|
423 |
(defun dotspacemacs/user-config () |
424 |
;; http://spacemacs.org/doc/DOCUMENTATION.html#powerline-separators |
425 |
(setq powerline-default-separator 'slant) |
426 |
;; Make j and k behave like gj and gk (move visual line up/down) |
427 |
(define-key evil-normal-state-map (kbd "j") 'evil-next-visual-line) |
428 |
(define-key evil-normal-state-map (kbd "k") 'evil-previous-visual-line) |
429 |
|
430 |
|
431 |
(require 'ycmd) |
432 |
(setq ycmd-force-semantic-completion t) |
433 |
(add-hook 'after-init-hook #'global-ycmd-mode) |
434 |
(set-variable 'ycmd-server-command '("python" "/home/simba/.emacs.d/ycmd/ycmd")) |
435 |
(set-variable 'ycmd-server-timeout 10) |
436 |
(set-variable 'ycmd-global-config "/home/simba/.ycm_extra_conf.py") |
437 |
(require 'company) |
438 |
(set-fill-column 80) |
439 |
;; Settings for prettify-symbols-mode |
440 |
(global-prettify-symbols-mode 1) |
441 |
(add-hook 'clojure-mode-hook |
442 |
(lambda () |
443 |
(mapc (lambda (pair) (push pair prettify-symbols-alist)) |
444 |
'( |
445 |
("infinity" . ?∞))))) |
446 |
(add-hook 'python-mode-hook |
447 |
(lambda () |
448 |
(mapc (lambda (pair) (push pair prettify-symbols-alist)) |
449 |
'(;; Syntax |
450 |
;("def" . #x2131) ;; Enable when you figure out how to make it in a pretty font... |
451 |
("not" . #x2757) |
452 |
("in" . #x2208) |
453 |
("not in" . #x2209) |
454 |
("return" . #x27fc) |
455 |
("yield" . #x27fb) |
456 |
("for" . #x2200) |
457 |
;; Base Types |
458 |
("int" . #x2124) |
459 |
("float" . #x211d) |
460 |
("str" . #x1d54a) |
461 |
("True" . #x1d54b) |
462 |
("False" . #x1d53d) |
463 |
;; Mypy |
464 |
;;("Dict" . #x1d507) |
465 |
("List" . #x2112) |
466 |
("Tuple" . #x2a02) |
467 |
("Set" . #x2126) |
468 |
("Iterable" . #x1d50a) |
469 |
("Any" . #x2754) |
470 |
("Union" . #x22c3))))) |
471 |
(add-hook 'haskell-mode-hook |
472 |
(lambda () |
473 |
(mapc (lambda (pair) (push pair prettify-symbols-alist)) |
474 |
'( |
475 |
;;Number sets & other types |
476 |
("Float" . ?ℝ) |
477 |
("Complex" . ?ℂ) |
478 |
("Int" . ?ℤ) |
479 |
("Fractional" . ?ℚ) |
480 |
("String" . ?𝕊) |
481 |
("Bool" . ?𝔹) |
482 |
;; Predefined ranges |
483 |
("[0..]" . ? ) |
484 |
("[1..]" . ? ) |
485 |
("[(-0),(-1)..]" . ? ) |
486 |
("[(-1),(-2)..]" . ? ) |
487 |
;; Operators |
488 |
;("*" . ?✕) |
489 |
("*" . ?·) ;; Because someone asked nicely <3 |
490 |
;;Logic |
491 |
("True" . ?𝕋) |
492 |
("False" . ?𝔽))))) |
493 |
;; A lot of Haskell's signs are provided through pretty-mode already |
494 |
|
495 |
(add-hook 'haskell-mode-hook 'turn-on-pretty-mode) |
496 |
(require 'pretty-mode) ;; Settings for pretty-mode |
497 |
(global-pretty-mode t) |
498 |
;; These groups will be deactivated, and pretty-mode will not use these. |
499 |
;; However, they're more useful than using Fira Code ligatures, and |
500 |
;; pretty-mode has support for Haskell-mode, and uses the normal font (i.e. Hack) |
501 |
;; To display the logic and symbol. So in the future, try to activate as much |
502 |
;; groups as possible, and deactivate manually where it's appropriate, so I can |
503 |
;; take full advantage of GNU Emacs' offerings. |
504 |
(pretty-deactivate-groups |
505 |
'(:equality :arrows :arrows-twoheaded)) |
506 |
;;'(:equality :ordering :ordering-double :ordering-triple |
507 |
;;:arrows :arrows-twoheaded :punctuation |
508 |
;;:logic :sets)) |
509 |
|
510 |
(pretty-activate-groups |
511 |
'(:sub-and-superscripts :greek :arithmetic-nary)) |
512 |
|
513 |
;; Prettify-utils extra code |
514 |
(require 'prettify-utils) |
515 |
(defvar pretty-options |
516 |
(-flatten |
517 |
(prettify-utils-generate |
518 |
;; Functional |
519 |
(:lambda "λ") (:def "ƒ") |
520 |
(:composition "∘") |
521 |
|
522 |
;; Types |
523 |
(:null "∅") (:true "𝕋") (:false "𝔽") |
524 |
(:int "ℤ") (:float "ℝ") |
525 |
(:str "𝕊") (:bool "𝔹") |
526 |
|
527 |
;; Flow |
528 |
(:in "∈") (:not-in "∉") |
529 |
(:return "⟼") (:yield "⟻") |
530 |
(:and "∧") (:or "∨") |
531 |
(:not "¬") |
532 |
(:for "∀") |
533 |
(:some "∃") |
534 |
|
535 |
;; Other |
536 |
(:tuple "⨂") |
537 |
(:pipe "") |
538 |
)) |
539 |
"Options plist for `pretty-code-get-pairs'.") |
540 |
|
541 |
;;; Core |
542 |
|
543 |
;;;###autoload |
544 |
(defun pretty-code-get-pairs (KWDS) |
545 |
"Build an alist for prettify-symbols-alist from components from KWDS." |
546 |
(-non-nil |
547 |
(--map (when-let (major-mode-sym (plist-get KWDS it)) |
548 |
`(,major-mode-sym |
549 |
,(plist-get pretty-options it))) |
550 |
pretty-options))) |
551 |
|
552 |
;;;###autoload |
553 |
(defun pretty-code-set-pairs (HOOK-PAIRS-ALIST) |
554 |
"Add hooks setting `prettify-symbols-alist' for many modes" |
555 |
(mapc (lambda (x) |
556 |
(lexical-let ((pretty-pairs (cadr x))) |
557 |
(add-hook (car x) |
558 |
(lambda () |
559 |
(setq prettify-symbols-alist pretty-pairs))))) |
560 |
HOOK-PAIRS-ALIST)) |
561 |
|
562 |
;; Activate superior completion mode |
563 |
(require 'company) |
564 |
(company-tng-configure-default) |
565 |
;; Because of a bug where Helm-bookmark-map is not loaded properly, this |
566 |
;; workaround is suggested (https://github.com/syl20bnr/spacemacs/issues/9549); |
567 |
;; Just (require 'helm-bookmark) |
568 |
(require 'helm-bookmark) |
569 |
;; Settings for org-mode, copied from |
570 |
;; https://github.com/jwiegley/newartisans/blob/master/posts/2007-08-20-using-org-mode-as-a-day-planner.md |
571 |
;;(require 'org) |
572 |
|
573 |
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode)) |
574 |
|
575 |
(define-key mode-specific-map [?a] 'org-agenda) |
576 |
|
577 |
(eval-after-load "org" |
578 |
'(progn |
579 |
(define-prefix-command 'org-todo-state-map) |
580 |
|
581 |
(define-key org-mode-map "\C-cx" 'org-todo-state-map) |
582 |
|
583 |
(define-key org-todo-state-map "x" |
584 |
#'(lambda nil (interactive) (org-todo "CANCELED"))) |
585 |
(define-key org-todo-state-map "d" |
586 |
#'(lambda nil (interactive) (org-todo "DONE"))) |
587 |
(define-key org-todo-state-map "f" |
588 |
#'(lambda nil (interactive) (org-todo "DEFERRED"))) |
589 |
(define-key org-todo-state-map "l" |
590 |
#'(lambda nil (interactive) (org-todo "DELEGATED"))) |
591 |
(define-key org-todo-state-map "s" |
592 |
#'(lambda nil (interactive) (org-todo "STARTED"))) |
593 |
(define-key org-todo-state-map "w" |
594 |
#'(lambda nil (interactive) (org-todo "WAITING"))) |
595 |
|
596 |
;;(define-key org-agenda-mode-map "\C-n" 'next-line) |
597 |
;;(define-key org-agenda-keymap "\C-n" 'next-line) |
598 |
;;(define-key org-agenda-mode-map "\C-p" 'previous-line) |
599 |
;;(define-key org-agenda-keymap "\C-p" 'previous-line) |
600 |
)) |
601 |
|
602 |
;;(require 'org-capture) |
603 |
;; Bugfix: See https://github.com/IvanMalison/org-projectile/issues/31 for more |
604 |
;; information. |
605 |
;(defalias 'org-projectile-per-repo 'org-projectile-per-project) |
606 |
|
607 |
(add-hook 'capture-mode-hook 'org-capture-apply-template) |
608 |
|
609 |
(define-key global-map [(control meta ?r)] 'capture) |
610 |
|
611 |
(custom-set-variables |
612 |
'(org-agenda-files (quote ("~/shared/planning/planning.org"))) |
613 |
'(org-default-notes-file "~/shared/planning/notes.org") |
614 |
'(org-agenda-span 30) |
615 |
'(org-deadline-warning-days 14) |
616 |
'(org-agenda-show-all-dates t) |
617 |
'(org-agenda-skip-deadline-if-done t) |
618 |
'(org-agenda-skip-scheduled-if-done t) |
619 |
'(org-agenda-start-on-weekday nil) |
620 |
'(org-reverse-note-order t) |
621 |
'(org-fast-tag-selection-single-key (quote expert)) |
622 |
'(org-agenda-custom-commands |
623 |
(quote (("d" todo "DELEGATED" nil) |
624 |
("c" todo "DONE|DEFERRED|CANCELED" nil) |
625 |
("w" todo "WAITING" nil) |
626 |
("W" agenda "" ((org-agenda-ndays 21))) |
627 |
("A" agenda "" |
628 |
((org-agenda-skip-function |
629 |
(lambda nil |
630 |
(org-agenda-skip-entry-if (quote notregexp) "\\=.*\\[#A\\]"))) |
631 |
(org-agenda-ndays 1) |
632 |
(org-agenda-overriding-header "Today's Priority #A tasks: "))) |
633 |
("u" alltodo "" |
634 |
((org-agenda-skip-function |
635 |
(lambda nil |
636 |
(org-agenda-skip-entry-if (quote scheduled) (quote deadline) |
637 |
(quote regexp) "\n]+>"))) |
638 |
(org-agenda-overriding-header "Unscheduled TODO entries: ")))))) |
639 |
'(org-capture-store-without-prompt t) |
640 |
'(org-capture-templates |
641 |
(quote ((116 "* TODO %?\n %u" "~/Repositories/private/org/planning.org" "Tasks") |
642 |
(110 "* %u %?" "~/Repositories/private/org/notes.org" "Notes")))) |
643 |
'(capture-annotation-functions (quote (org-capture-annotation))) |
644 |
'(capture-handler-functions (quote (org-capture-handler)))) |
645 |
|
646 |
"Configuration function for user code. |
647 |
This function is called at the very end of Spacemacs initialization after |
648 |
layers configuration. |
649 |
This is the place where most of your configurations should be done. Unless it is |
650 |
explicitly specified that a variable should be set before a package is loaded, |
651 |
you should place your code here." |
652 |
) |
653 |
|
654 |
;; Do not write anything past this comment. This is where Emacs will |
655 |
;; auto-generate custom variable definitions. |
656 |
(custom-set-variables |
657 |
;; custom-set-variables was added by Custom. |
658 |
;; If you edit it by hand, you could mess it up, so be careful. |
659 |
;; Your init file should contain only one such instance. |
660 |
;; If there is more than one, they won't work right. |
661 |
'(capture-annotation-functions (quote (org-capture-annotation))) |
662 |
'(capture-handler-functions (quote (org-capture-handler))) |
663 |
'(evil-want-Y-yank-to-eol nil) |
664 |
'(org-agenda-custom-commands |
665 |
(quote |
666 |
(("d" todo "DELEGATED" nil) |
667 |
("c" todo "DONE|DEFERRED|CANCELED" nil) |
668 |
("w" todo "WAITING" nil) |
669 |
("W" agenda "" |
670 |
((org-agenda-ndays 21))) |
671 |
("A" agenda "" |
672 |
((org-agenda-skip-function |
673 |
(lambda nil |
674 |
(org-agenda-skip-entry-if |
675 |
(quote notregexp) |
676 |
"\\=.*\\[#A\\]"))) |
677 |
(org-agenda-ndays 1) |
678 |
(org-agenda-overriding-header "Today's Priority #A tasks: "))) |
679 |
("u" alltodo "" |
680 |
((org-agenda-skip-function |
681 |
(lambda nil |
682 |
(org-agenda-skip-entry-if |
683 |
(quote scheduled) |
684 |
(quote deadline) |
685 |
(quote regexp) |
686 |
" |
687 |
]+>"))) |
688 |
(org-agenda-overriding-header "Unscheduled TODO entries: ")))))) |
689 |
'(org-agenda-files (quote ("~/Repositories/private/org/planning.org"))) |
690 |
'(org-agenda-show-all-dates t) |
691 |
'(org-agenda-skip-deadline-if-done t) |
692 |
'(org-agenda-skip-scheduled-if-done t) |
693 |
'(org-agenda-span 30) |
694 |
'(org-agenda-start-on-weekday nil) |
695 |
'(org-capture-store-without-prompt t) |
696 |
'(org-capture-templates |
697 |
(quote |
698 |
((116 "* TODO %? |
699 |
%u" "~/Repositories/private/org/planning.org" "Tasks") |
700 |
(110 "* %u %?" "~/Repositories/private/org/notes.org" "Notes")))) |
701 |
'(org-deadline-warning-days 14) |
702 |
'(org-default-notes-file "~/Repositories/private/org/notes.org") |
703 |
'(org-fast-tag-selection-single-key (quote expert)) |
704 |
'(org-reverse-note-order t) |
705 |
'(package-selected-packages |
706 |
(quote |
707 |
(mu4e-alert mu4e-maildirs-extension ht po-mode dash-functional iedit smartparens goto-chg projectile dash s company-ycmd company-flx emacs-ycmd evil helm helm-core avy org-plus-contrib async hydra company-mode flycheck-ycmd ycmd request-deferred let-alist deferred yaml-mode packed org-category-capture alert log4e gntp markdown-mode haml-mode gitignore-mode fringe-helper git-gutter+ git-gutter pos-tip flycheck magit magit-popup git-commit with-editor autothemer web-completion-data ghc haskell-mode company inflections edn multiple-cursors paredit peg cider queue clojure-mode yasnippet anaconda-mode pythonic auto-complete exec-path-from-shell zonokai-theme zenburn-theme zen-and-art-theme yapfify ws-butler winum which-key web-mode volatile-highlights vi-tilde-fringe uuidgen use-package underwater-theme ujelly-theme twilight-theme twilight-bright-theme twilight-anti-bright-theme tronesque-theme toxi-theme toc-org tao-theme tangotango-theme tango-plus-theme tango-2-theme tagedit sunny-day-theme sublime-themes subatomic256-theme subatomic-theme spaceline spacegray-theme soothe-theme solarized-theme soft-stone-theme soft-morning-theme soft-charcoal-theme smyx-theme smeargle slim-mode seti-theme scss-mode sass-mode reverse-theme restart-emacs rainbow-delimiters railscasts-theme pyvenv pytest pyenv-mode py-isort purple-haze-theme pug-mode professional-theme pretty-mode prettify-utils popwin planet-theme pip-requirements phoenix-dark-pink-theme phoenix-dark-mono-theme persp-mode pcre2el pastels-on-dark-theme paradox orgit organic-green-theme org-projectile org-present org-pomodoro org-download org-bullets open-junk-file omtose-phellack-theme oldlace-theme occidental-theme obsidian-theme noctilux-theme niflheim-theme neotree naquadah-theme mustang-theme move-text monokai-theme monochrome-theme molokai-theme moe-theme mmm-mode minimal-theme material-theme markdown-toc majapahit-theme magit-gitflow madhat2r-theme macrostep lush-theme lorem-ipsum live-py-mode linum-relative link-hint light-soap-theme less-css-mode jbeans-theme jazz-theme ir-black-theme intero inkpot-theme info+ indent-guide hy-mode hungry-delete htmlize hlint-refactor hl-todo hindent highlight-parentheses highlight-numbers highlight-indentation hide-comnt heroku-theme hemisu-theme help-fns+ helm-themes helm-swoop helm-pydoc helm-projectile helm-mode-manager helm-make helm-hoogle helm-gitignore helm-flx helm-descbinds helm-css-scss helm-company helm-c-yasnippet helm-ag hc-zenburn-theme haskell-snippets gruvbox-theme gruber-darker-theme graphviz-dot-mode grandshell-theme gotham-theme google-translate golden-ratio gnuplot gitconfig-mode gitattributes-mode git-timemachine git-messenger git-link git-gutter-fringe git-gutter-fringe+ gh-md gandalf-theme fuzzy flycheck-pos-tip flycheck-haskell flx-ido flatui-theme flatland-theme firebelly-theme fill-column-indicator farmhouse-theme fancy-battery eyebrowse expand-region evil-visualstar evil-visual-mark-mode evil-unimpaired evil-tutor evil-surround evil-search-highlight-persist evil-numbers evil-nerd-commenter evil-mc evil-matchit evil-magit evil-lisp-state evil-indent-plus evil-iedit-state evil-exchange evil-escape evil-ediff evil-args evil-anzu espresso-theme emmet-mode elisp-slime-nav dumb-jump dracula-theme django-theme diff-hl define-word darktooth-theme darkokai-theme darkmine-theme darkburn-theme dakrone-theme cython-mode cyberpunk-theme csv-mode company-web company-statistics company-ghci company-ghc company-cabal company-anaconda column-enforce-mode color-theme-sanityinc-tomorrow color-theme-sanityinc-solarized cmm-mode clues-theme clojure-snippets clj-refactor clean-aindent-mode cider-eval-sexp-fu cherry-blossom-theme busybee-theme bubbleberry-theme birds-of-paradise-plus-theme badwolf-theme auto-yasnippet auto-highlight-symbol auto-compile apropospriate-theme anti-zenburn-theme ample-zen-theme ample-theme alect-themes aggressive-indent afternoon-theme adaptive-wrap ace-window ace-link ace-jump-helm-line ac-ispell)))) |
708 |
(custom-set-faces |
709 |
;; custom-set-faces was added by Custom. |
710 |
;; If you edit it by hand, you could mess it up, so be careful. |
711 |
;; Your init file should contain only one such instance. |
712 |
;; If there is more than one, they won't work right. |
713 |
'(default ((t (:background nil))))) |