From 3e63d2d23b4b7bec60f5337b1ca42e67b1b0abc1 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 19 Mar 2017 22:47:50 -0400 Subject: [PATCH] Reduce def-package magic; explicitly use :when property --- core/core-packages.el | 10 ++-------- modules/feature/spellcheck/config.el | 21 +++++++++------------ modules/feature/version-control/+git.el | 1 + modules/lang/cc/config.el | 12 ++++++++---- modules/lang/go/config.el | 1 + modules/lang/javascript/config.el | 1 + modules/lang/latex/config.el | 3 +++ modules/lang/lua/config.el | 6 ++++-- modules/lang/php/config.el | 4 +++- modules/lang/python/config.el | 4 +++- modules/lang/rest/config.el | 2 ++ modules/lang/ruby/config.el | 9 ++++----- modules/lang/rust/config.el | 6 ++++-- modules/lang/rust/packages.el | 1 + modules/lang/sh/config.el | 1 + modules/lang/swift/config.el | 1 + modules/lang/web/+css.el | 1 + modules/lang/web/+html.el | 7 +++++-- modules/ui/doom-modeline/config.el | 1 + 19 files changed, 55 insertions(+), 37 deletions(-) diff --git a/core/core-packages.el b/core/core-packages.el index 2c31c8862..d75bd3d8c 100644 --- a/core/core-packages.el +++ b/core/core-packages.el @@ -283,14 +283,8 @@ byte-compilation." ;; Benchmark (add-hook 'after-init-hook 'doom--display-benchmark t)))) -(defmacro def-package! (name &rest plist) - "Defines and configures a package using `use-package'. Packages are deferred -by default. If the package isn't installed or loaded, `def-package!' is -ignored." - (when (or (featurep name) - (progn (doom-initialize) - (package-installed-p name))) - `(use-package ,name ,@plist))) +(defalias 'def-package! 'use-package + "An alias for `use-package'. Note that packages are deferred by default.") (defmacro load! (filesym &optional path noerror) "Loads a file relative to the current module (or PATH). FILESYM is a file path diff --git a/modules/feature/spellcheck/config.el b/modules/feature/spellcheck/config.el index 12ce1aefe..c6c3c44ca 100644 --- a/modules/feature/spellcheck/config.el +++ b/modules/feature/spellcheck/config.el @@ -15,17 +15,14 @@ (def-package! flyspell-correct :commands (flyspell-correct-word-generic - flyspell-correct-previous-word-generic)) - - -(def-package! flyspell-correct-popup - :after flyspell-correct + flyspell-correct-previous-word-generic) :config - (setq flyspell-popup-correct-delay 0.8) - (define-key popup-menu-keymap [escape] 'keyboard-quit)) + (cond ((featurep! :completion helm) + (require 'flyspell-correct-helm)) + ((featurep! :completion ivy) + (require 'flyspell-correct-ivy)) + (t + (require 'flyspell-correct-popup) + (setq flyspell-popup-correct-delay 0.8) + (define-key popup-menu-keymap [escape] 'keyboard-quit)))) - -(def-package! flyspell-correct-helm :after flyspell-correct) - - -(def-package! flyspell-correct-ivy :after flyspell-correct) diff --git a/modules/feature/version-control/+git.el b/modules/feature/version-control/+git.el index 1e3e9d63b..c2729314a 100644 --- a/modules/feature/version-control/+git.el +++ b/modules/feature/version-control/+git.el @@ -39,6 +39,7 @@ (def-package! evil-magit + :when (featurep! :feature evil) :after magit :config ;; evil-snipe conflicts with magit diff --git a/modules/lang/cc/config.el b/modules/lang/cc/config.el index bcccb8673..aaf3e4f16 100644 --- a/modules/lang/cc/config.el +++ b/modules/lang/cc/config.el @@ -116,7 +116,10 @@ (def-package! irony-eldoc :after irony) -(def-package! flycheck-irony :after irony :config (flycheck-irony-setup)) +(def-package! flycheck-irony + :when (featurep! :feature syntax-checker) + :after irony + :config (flycheck-irony-setup)) ;; @@ -130,11 +133,12 @@ ;; Plugins ;; -(def-package! company-cmake :after cmake-mode) +(when (featurep! :completion company) + (def-package! company-cmake :after cmake-mode) -(def-package! company-irony :after irony) + (def-package! company-irony :after irony) -(def-package! company-irony-c-headers :after company-irony) + (def-package! company-irony-c-headers :after company-irony)) ;; diff --git a/modules/lang/go/config.el b/modules/lang/go/config.el index fce951400..1f5401845 100644 --- a/modules/lang/go/config.el +++ b/modules/lang/go/config.el @@ -29,6 +29,7 @@ (def-package! company-go + :when (featurep! :completion company) :after go-mode :config (set! :company-backend 'go-mode '(company-go company-yasnippet))) diff --git a/modules/lang/javascript/config.el b/modules/lang/javascript/config.el index 7abddf4bc..ee2088a4f 100644 --- a/modules/lang/javascript/config.el +++ b/modules/lang/javascript/config.el @@ -79,6 +79,7 @@ (def-package! company-tern + :when (featurep! :completion company) :after tern :config (set! :company-backend 'js2-mode '(company-tern))) diff --git a/modules/lang/latex/config.el b/modules/lang/latex/config.el index ef58a69f8..03ad8f4ed 100644 --- a/modules/lang/latex/config.el +++ b/modules/lang/latex/config.el @@ -38,6 +38,7 @@ (map! :map LaTeX-mode-map "C-j" nil) (def-package! company-auctex + :when (featurep! :completion company) :init (set! :company-backend 'LaTeX-mode '(company-auctex)))) @@ -74,8 +75,10 @@ (map! :map bibtex-mode-map "C-c \\" 'bibtex-fill-entry)) (def-package! ivy-bibtex + :when (featurep! :completion ivy) :commands ivy-bibtex) (def-package! helm-bibtex + :when (featurep! :completion helm) :commands helm-bibtex) diff --git a/modules/lang/lua/config.el b/modules/lang/lua/config.el index 181ccea59..cdd50ce6c 100644 --- a/modules/lang/lua/config.el +++ b/modules/lang/lua/config.el @@ -6,7 +6,6 @@ :init (add-hook 'lua-mode-hook 'flycheck-mode) :config - (set! :company-backend 'lua-mode '(company-lua company-yasnippet)) (set! :electric 'lua-mode :words '("else" "end")) (set! :repl 'lua-mode '+lua/repl) @@ -15,7 +14,10 @@ (def-package! company-lua - :after lua-mode) + :when (featurep! :completion company) + :after lua-mode + :config + (set! :company-backend 'lua-mode '(company-lua company-yasnippet))) (def-package! moonscript diff --git a/modules/lang/php/config.el b/modules/lang/php/config.el index 69f2ab26c..bab1d370e 100644 --- a/modules/lang/php/config.el +++ b/modules/lang/php/config.el @@ -15,7 +15,7 @@ (setq php-template-compatibility nil) (set! :repl 'php-mode 'php-boris) - (set! :company-bakend 'php-mode '(php-extras-company company-yasnippet)) + (add-hook! php-mode (setq-local sp-max-pair-length 6)) @@ -51,6 +51,8 @@ :config (setq php-extras-eldoc-functions-file (concat doom-etc-dir "php-extras-eldoc-functions")) + (set! :company-bakend 'php-mode '(php-extras-company company-yasnippet)) + ;; company will set up itself (advice-add 'php-extras-company-setup :override 'ignore) diff --git a/modules/lang/python/config.el b/modules/lang/python/config.el index 6f3fa7b65..2558385d4 100644 --- a/modules/lang/python/config.el +++ b/modules/lang/python/config.el @@ -35,15 +35,17 @@ :config (set! :popup "*anaconda-mode*" :size 10 :noselect t :autoclose t :autokill t) - (set! :company-backend 'python-mode '(company-anaconda)) (map! :map anaconda-mode-map :m "gd" 'anaconda-mode-find-definitions) (advice-add 'anaconda-mode-doc-buffer :after 'doom*anaconda-mode-doc-buffer)) + (def-package! company-anaconda + :when (featurep! :completion company) :after anaconda-mode :config + (set! :company-backend 'python-mode '(company-anaconda)) (map! :map python-mode-map :m "gd" 'anaconda-mode-find-definitions :localleader diff --git a/modules/lang/rest/config.el b/modules/lang/rest/config.el index 3466a0963..538adafd7 100644 --- a/modules/lang/rest/config.el +++ b/modules/lang/rest/config.el @@ -4,6 +4,8 @@ :commands restclient-mode :mode ("\\.http$" . restclient-mode)) + (def-package! company-restclient + :when (featurep! :completion company) :after restclient :config (set! :company-backend 'restclient-mode '(company-restclient))) diff --git a/modules/lang/ruby/config.el b/modules/lang/ruby/config.el index a1d2d18cb..8a51abf83 100644 --- a/modules/lang/ruby/config.el +++ b/modules/lang/ruby/config.el @@ -63,14 +63,13 @@ (def-package! inf-ruby :commands (inf-ruby inf-ruby-console-auto) - :init - (set! :repl 'ruby-mode 'inf-ruby) - :config - (set! :company-backend 'inf-ruby-mode '(company-inf-ruby))) + :init (set! :repl 'ruby-mode 'inf-ruby)) (def-package! company-inf-ruby - :after inf-ruby) + :when (featurep! :completion company) + :after inf-ruby + :config (set! :company-backend 'inf-ruby-mode '(company-inf-ruby))) ;; diff --git a/modules/lang/rust/config.el b/modules/lang/rust/config.el index 20d0de42b..e2f6b057b 100644 --- a/modules/lang/rust/config.el +++ b/modules/lang/rust/config.el @@ -22,14 +22,16 @@ racer-rust-src-path (expand-file-name "rust/src/" +rust-cache-dir)) ;; TODO Unit test keybinds - (set! :company-backend 'rust-mode '(company-racer)) (map! :map rust-mode-map :m "gd" 'racer-find-definition)) (def-package! company-racer - :after racer) + :when (featurep! :completion company) + :after racer + :config (set! :company-backend 'rust-mode '(company-racer))) (def-package! flycheck-rust + :when (featurep! :feature syntax-checker) :after rust-mode) diff --git a/modules/lang/rust/packages.el b/modules/lang/rust/packages.el index ed106a64c..511c4a8e5 100644 --- a/modules/lang/rust/packages.el +++ b/modules/lang/rust/packages.el @@ -6,5 +6,6 @@ (when (featurep! :feature syntax-checker) (package! flycheck-rust)) + (when (featurep! :completion company) (package! company-racer)) diff --git a/modules/lang/sh/config.el b/modules/lang/sh/config.el index af8b4cbdd..d468e9c08 100644 --- a/modules/lang/sh/config.el +++ b/modules/lang/sh/config.el @@ -21,6 +21,7 @@ (def-package! company-shell + :when (featurep! :completion company) :after sh-script :config (setq company-shell-delete-duplicates t)) diff --git a/modules/lang/swift/config.el b/modules/lang/swift/config.el index e60aa77c5..92d2ef66e 100644 --- a/modules/lang/swift/config.el +++ b/modules/lang/swift/config.el @@ -12,6 +12,7 @@ (def-package! company-sourcekit + :when (featurep! :completion company) :after swift-mode :config (set! :company-backend 'swift-mode '(company-sourcekit company-yasnippet))) diff --git a/modules/lang/web/+css.el b/modules/lang/web/+css.el index acc73255e..c6a3749f5 100644 --- a/modules/lang/web/+css.el +++ b/modules/lang/web/+css.el @@ -19,6 +19,7 @@ ;; (def-package! counsel-css + :when (featurep! :completion ivy) :commands (counsel-css counsel-css-imenu-setup) :init (add-hook 'css-mode-hook 'counsel-css-imenu-setup) diff --git a/modules/lang/web/+html.el b/modules/lang/web/+html.el index 81d35cfb4..d8cd52d0b 100644 --- a/modules/lang/web/+html.el +++ b/modules/lang/web/+html.el @@ -29,9 +29,12 @@ :nv "]t" 'web-mode-tag-next :nv "[t" 'web-mode-tag-previous :nv "]T" 'web-mode-element-child - :nv "[T" 'web-mode-element-parent) + :nv "[T" 'web-mode-element-parent)) - (def-package! company-web :after company)) + +(def-package! company-web + :when (featurep! :completion company) + :after web-mode) (def-package! haml-mode :mode "\\.haml$") diff --git a/modules/ui/doom-modeline/config.el b/modules/ui/doom-modeline/config.el index b2cc95593..3281be10f 100644 --- a/modules/ui/doom-modeline/config.el +++ b/modules/ui/doom-modeline/config.el @@ -32,6 +32,7 @@ ;; anzu and evil-anzu make it possible to display current/total in the ;; mode-line. (def-package! evil-anzu + :when (featurep! :feature evil) :init (add-transient-hook! evil-ex-start-search (require 'evil-anzu)) :config