summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAlan Pearce2019-09-23 22:14:01 +0200
committerAlan Pearce2019-09-23 22:14:12 +0200
commitcf28f2ee2baad8fec85d388362ac409b1f456506 (patch)
tree44dd689596acba092587d292996ce7d3f3ef99b3
parentee1c22c202ea5b82dbda40028266de27b228cad4 (diff)
downloaddotfiles-cf28f2ee2baad8fec85d388362ac409b1f456506.tar.xz
dotfiles-cf28f2ee2baad8fec85d388362ac409b1f456506.zip
Emacs: optimise startup time
-rw-r--r--emacs/.emacs.d/main.el53
1 files changed, 39 insertions, 14 deletions
diff --git a/emacs/.emacs.d/main.el b/emacs/.emacs.d/main.el index ffafd39..2e8caa4 100644 --- a/emacs/.emacs.d/main.el +++ b/emacs/.emacs.d/main.el
@@ -22,6 +22,7 @@
22(load custom-file :noerror :nomessage) 22(load custom-file :noerror :nomessage)
23 23
24(use-package crux 24(use-package crux
25 :defer 1
25 :custom ((crux-reopen-as-root-mode nil))) 26 :custom ((crux-reopen-as-root-mode nil)))
26 27
27;;; Styles 28;;; Styles
@@ -137,7 +138,6 @@ With two prefix arguments, write out the day and month name."
137 '(mac-right-command-modifier 'left) 138 '(mac-right-command-modifier 'left)
138 '(mac-function-modifier 'hyper))) 139 '(mac-function-modifier 'hyper)))
139 140
140
141(use-package general 141(use-package general
142 :functions (general-unbind general-define-key) 142 :functions (general-unbind general-define-key)
143 :config (progn 143 :config (progn
@@ -155,6 +155,7 @@ With two prefix arguments, write out the day and month name."
155;; Popup keybindings following a prefix automatically. 155;; Popup keybindings following a prefix automatically.
156 156
157(use-package which-key 157(use-package which-key
158 :defer 5
158 :custom ((which-key-mode +1)) 159 :custom ((which-key-mode +1))
159 :config (progn 160 :config (progn
160 (which-key-setup-side-window-right-bottom))) 161 (which-key-setup-side-window-right-bottom)))
@@ -162,6 +163,7 @@ With two prefix arguments, write out the day and month name."
162;;; Modeline 163;;; Modeline
163 164
164(use-package relative-buffers 165(use-package relative-buffers
166 :defer 2
165 :custom ((global-relative-buffers-mode t))) 167 :custom ((global-relative-buffers-mode t)))
166 168
167;;; Minibuffer 169;;; Minibuffer
@@ -169,14 +171,16 @@ With two prefix arguments, write out the day and month name."
169(setq enable-recursive-minibuffers t) 171(setq enable-recursive-minibuffers t)
170(minibuffer-depth-indicate-mode t) 172(minibuffer-depth-indicate-mode t)
171 173
172(use-package hydra) 174(use-package hydra
175 :defer 2)
173(use-package ivy 176(use-package ivy
174 :config (progn 177 :config (progn
175 (ivy-mode +1))) 178 (ivy-mode +1)))
176(use-package ivy-hydra) 179(use-package ivy-hydra
180 :defer 2)
177 181
178(use-package smerge-mode 182(use-package smerge-mode
179 :after hydra 183 :after magit
180 :config 184 :config
181 (defhydra unpackaged/smerge-hydra 185 (defhydra unpackaged/smerge-hydra
182 (:color pink :hint nil :post (smerge-auto-leave)) 186 (:color pink :hint nil :post (smerge-auto-leave))
@@ -267,6 +271,7 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
267 271
268(use-package winner 272(use-package winner
269 :after evil 273 :after evil
274 :defer 8
270 :custom ((winner-mode t) 275 :custom ((winner-mode t)
271 (winner-boring-buffers '("*Completions*" "*Help*" "*Apropos*" "*Buffer List*" "*info*" "*Compile-Log*"))) 276 (winner-boring-buffers '("*Completions*" "*Help*" "*Apropos*" "*Buffer List*" "*info*" "*Compile-Log*")))
272 :general (:keymaps 'evil-window-map 277 :general (:keymaps 'evil-window-map
@@ -294,6 +299,7 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
294 299
295(use-package evil-collection 300(use-package evil-collection
296 :after (evil) 301 :after (evil)
302 :defer 3
297 :demand t 303 :demand t
298 :commands (evil-collection-init) 304 :commands (evil-collection-init)
299 :custom ((evil-collection-company-use-tng nil)) 305 :custom ((evil-collection-company-use-tng nil))
@@ -312,14 +318,16 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
312 318
313(use-package evil-surround 319(use-package evil-surround
314 :after evil 320 :after evil
321 :defer 2
315 :custom ((global-evil-surround-mode t))) 322 :custom ((global-evil-surround-mode t)))
316 323
317(use-package evil-commentary 324(use-package evil-commentary
318 :after evil 325 :after evil
326 :defer 2
319 :custom ((evil-commentary-mode t))) 327 :custom ((evil-commentary-mode t)))
320 328
321(use-package evil-magit 329(use-package evil-magit
322 :after (evil magit) 330 :after magit
323 :custom ((evil-magit-use-y-for-yank nil))) 331 :custom ((evil-magit-use-y-for-yank nil)))
324 332
325(use-package evil-quickscope 333(use-package evil-quickscope
@@ -329,18 +337,19 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
329 :custom ((global-evil-quickscope-mode t))) 337 :custom ((global-evil-quickscope-mode t)))
330 338
331(use-package evil-org 339(use-package evil-org
332 :after evil 340 :after org
333 :commands (evil-org-set-key-theme) 341 :commands (evil-org-set-key-theme)
334 :ghook ('org-mode-hook #'evil-org-mode) 342 :ghook ('org-mode-hook #'evil-org-mode)
335 :gfhook #'evil-org-set-key-theme) 343 :gfhook #'evil-org-set-key-theme)
336 344
337(use-package evil-org-agenda 345(use-package evil-org-agenda
338 :after evil 346 :after org
339 :ghook ('org-agenda-mode-hook #'evil-org-agenda-set-keys)) 347 :ghook ('org-agenda-mode-hook #'evil-org-agenda-set-keys))
340 348
341;;; Projects 349;;; Projects
342 350
343(use-package projectile 351(use-package projectile
352 :defer 1
344 :defines projectile-command-map 353 :defines projectile-command-map
345 :custom ((projectile-mode +1) 354 :custom ((projectile-mode +1)
346 (projectile-completion-system 'ivy)) 355 (projectile-completion-system 'ivy))
@@ -358,6 +367,7 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
358 (evil-ex-define-cmd "pesh[ell]" #'projectile-run-eshell)))) 367 (evil-ex-define-cmd "pesh[ell]" #'projectile-run-eshell))))
359 368
360(use-package counsel-projectile 369(use-package counsel-projectile
370 :defer 1
361 :commands (counsel-projectile-switch-project 371 :commands (counsel-projectile-switch-project
362 counsel-projectile-rg 372 counsel-projectile-rg
363 counsel-projectile-switch-to-buffer 373 counsel-projectile-switch-to-buffer
@@ -374,20 +384,24 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
374 (evil-ex-define-cmd "psw[itch]" #'counsel-projectile-switch-project)))) 384 (evil-ex-define-cmd "psw[itch]" #'counsel-projectile-switch-project))))
375 385
376(use-package magit 386(use-package magit
387 :defer 10
377 :commands (magit-status magit-dispatch) 388 :commands (magit-status magit-dispatch)
378 :custom ((global-magit-file-mode +1) 389 :custom ((magit-auto-revert-mode nil)
379 (magit-section-visibility-indicator nil) 390 (magit-section-visibility-indicator nil)
380 (magit-diff-refine-hunk 'all) 391 (magit-diff-refine-hunk 'all)
381 (magit-display-buffer-function #'display-buffer) 392 (magit-display-buffer-function #'display-buffer)
382 (magit-completing-read-function #'ivy-completing-read)) 393 (magit-completing-read-function #'ivy-completing-read))
383 :config (progn 394 :config (progn
395 (global-magit-file-mode +1)
384 (remove-hook 'magit-section-highlight-hook 'magit-section-highlight) 396 (remove-hook 'magit-section-highlight-hook 'magit-section-highlight)
385 (remove-hook 'magit-section-highlight-hook 'magit-section-highlight-selection) 397 (remove-hook 'magit-section-highlight-hook 'magit-section-highlight-selection)
386 (remove-hook 'magit-section-highlight-hook 'magit-diff-highlight))) 398 (remove-hook 'magit-section-highlight-hook 'magit-diff-highlight)))
387 399
388(eval-when-compile (require 'fringe-helper)) 400(eval-when-compile (require 'fringe-helper))
389(use-package git-gutter) 401(use-package git-gutter
402 :defer t)
390(use-package git-gutter-fringe 403(use-package git-gutter-fringe
404 :defer 5
391 :config (progn 405 :config (progn
392 (global-git-gutter-mode 1) 406 (global-git-gutter-mode 1)
393 ;; places the git gutter outside the margins. 407 ;; places the git gutter outside the margins.
@@ -403,12 +417,14 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
403 417
404(use-package git-messenger 418(use-package git-messenger
405 :commands (git-messenger:popup-message) 419 :commands (git-messenger:popup-message)
406 :defer 5 420 :defer 10
407 :custom ((git-messenger:use-magit-popup t))) 421 :custom ((git-messenger:use-magit-popup t)))
408 422
409(use-package git-timemachine) 423(use-package git-timemachine
424 :command (git-timemachine))
410 425
411(use-package editorconfig 426(use-package editorconfig
427 :defer 2
412 :init (progn 428 :init (progn
413 (unless (executable-find "editorconfig") 429 (unless (executable-find "editorconfig")
414 (warn "Missing `editorconfig' executable."))) 430 (warn "Missing `editorconfig' executable.")))
@@ -417,6 +433,7 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
417;;; Completion 433;;; Completion
418 434
419(use-package company 435(use-package company
436 :defer 2
420 :commands (company-explicit-action-p) 437 :commands (company-explicit-action-p)
421 :custom ((global-company-mode +1) 438 :custom ((global-company-mode +1)
422 (company-idle-delay 0) 439 (company-idle-delay 0)
@@ -429,7 +446,7 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
429 :general (:states 'insert 446 :general (:states 'insert
430 "TAB" #'company-indent-or-complete-common)) 447 "TAB" #'company-indent-or-complete-common))
431 448
432(use-package all-the-icons) 449;; (use-package all-the-icons)
433 450
434(eval-when-compile (require 'subr-x)) 451(eval-when-compile (require 'subr-x))
435(eval-and-compile 452(eval-and-compile
@@ -440,7 +457,7 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
440 :commands (company-tabnine) 457 :commands (company-tabnine)
441 :after (company) 458 :after (company)
442 :load-path (lambda () (list (company-tabnine-load-path))) 459 :load-path (lambda () (list (company-tabnine-load-path)))
443 :custom ((company-tabnine-binaries-folder "~/.TabNine")) 460 :custom ((company-tabnine-binaries-folder "~/.local/tabnine"))
444 :general ("<M-tab>" #'company-tabnine-call-other-backends 461 :general ("<M-tab>" #'company-tabnine-call-other-backends
445 "<C-tab>" #'company-tabnine-call-other-backends) 462 "<C-tab>" #'company-tabnine-call-other-backends)
446 :init (progn 463 :init (progn
@@ -449,6 +466,7 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
449;;; Documentation 466;;; Documentation
450 467
451(use-package eldoc 468(use-package eldoc
469 :defer 5
452 :custom ((global-eldoc-mode +1) 470 :custom ((global-eldoc-mode +1)
453 (eldoc-idle-delay 0.5))) 471 (eldoc-idle-delay 0.5)))
454 472
@@ -457,7 +475,8 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
457 :custom ((eldoc-box-hover-mode +1) 475 :custom ((eldoc-box-hover-mode +1)
458 (eldoc-box-hover-at-point-mode +1))) 476 (eldoc-box-hover-at-point-mode +1)))
459 477
460(use-package ehelp) 478(use-package ehelp
479 :defer 15)
461 480
462(use-package helpful 481(use-package helpful
463 :after ehelp 482 :after ehelp
@@ -524,9 +543,12 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
524 (eshell-cmpl-cycle-completions nil))) 543 (eshell-cmpl-cycle-completions nil)))
525 544
526(use-package eshell-toggle 545(use-package eshell-toggle
546 :after projectile
547 :commands (eshell-toggle)
527 :custom ((eshell-toggle-use-projectile-root t))) 548 :custom ((eshell-toggle-use-projectile-root t)))
528 549
529(use-package esh-autosuggest 550(use-package esh-autosuggest
551 :after eshell
530 :ghook ('eshell-mode-hook)) 552 :ghook ('eshell-mode-hook))
531 553
532(declare-function eshell-push-command "esh-buf-stack" (CMD)) 554(declare-function eshell-push-command "esh-buf-stack" (CMD))
@@ -556,16 +578,19 @@ _p_rev _u_pper _=_: upper/lower _r_esolve
556 :config (setup-esh-help-eldoc)) 578 :config (setup-esh-help-eldoc))
557 579
558(use-package eshell-fringe-status 580(use-package eshell-fringe-status
581 :after eshell
559 :ghook '(eshell-mode-hook)) 582 :ghook '(eshell-mode-hook))
560 583
561(use-package eshell-up 584(use-package eshell-up
562 :after (eshell)) 585 :after (eshell))
563 586
564(use-package shell 587(use-package shell
588 :defer t
565 :general (:keymaps 'shell-mode-map 589 :general (:keymaps 'shell-mode-map
566 "C-d" #'comint-delchar-or-maybe-eof)) 590 "C-d" #'comint-delchar-or-maybe-eof))
567 591
568(use-package comint 592(use-package comint
593 :defer t
569 :general (:keymaps 'comint-mode-map 594 :general (:keymaps 'comint-mode-map
570 "C-c C-l" #'counsel-shell-history)) 595 "C-c C-l" #'counsel-shell-history))
571 596