diff options
author | Alan Pearce | 2019-09-23 22:14:01 +0200 |
---|---|---|
committer | Alan Pearce | 2019-09-23 22:14:12 +0200 |
commit | cf28f2ee2baad8fec85d388362ac409b1f456506 (patch) | |
tree | 44dd689596acba092587d292996ce7d3f3ef99b3 | |
parent | ee1c22c202ea5b82dbda40028266de27b228cad4 (diff) | |
download | dotfiles-cf28f2ee2baad8fec85d388362ac409b1f456506.tar.xz dotfiles-cf28f2ee2baad8fec85d388362ac409b1f456506.zip |
Emacs: optimise startup time
-rw-r--r-- | emacs/.emacs.d/main.el | 53 |
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 | ||