From a70e634ebdf97fed09f2e4678a6ce14335c4e752 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 25 Jul 2022 17:34:44 +0200 Subject: [PATCH] refactor(:lang): move tree-sitter init Moved add-hook calls (for tree-sitter initialization) into their respective modes' config blocks, or nearby, to be consistent with how other, similar tools (like lsp!) are initialized, and does so at runtime, rather than at expansion/compile time, which eval-when! caused. --- modules/lang/agda/config.el | 12 ++++++------ modules/lang/cc/config.el | 11 +++++------ modules/lang/csharp/config.el | 7 +++---- modules/lang/elixir/config.el | 6 +++--- modules/lang/elm/config.el | 7 +++---- modules/lang/go/config.el | 7 +++---- modules/lang/java/config.el | 7 +++---- modules/lang/javascript/config.el | 16 +++++++--------- modules/lang/json/config.el | 9 ++++----- modules/lang/julia/config.el | 14 ++++++-------- modules/lang/nix/config.el | 9 +++++---- modules/lang/php/config.el | 7 +++---- modules/lang/python/config.el | 7 +++---- modules/lang/ruby/config.el | 7 +++---- modules/lang/rust/config.el | 7 +++---- modules/lang/scala/config.el | 7 +++---- modules/lang/sh/config.el | 7 +++---- modules/lang/swift/config.el | 9 ++++----- modules/lang/web/+css.el | 3 +++ modules/lang/web/+html.el | 5 +++++ modules/lang/web/config.el | 7 ------- modules/lang/zig/config.el | 6 +++--- 22 files changed, 81 insertions(+), 96 deletions(-) diff --git a/modules/lang/agda/config.el b/modules/lang/agda/config.el index 2920abd54..074c650e9 100644 --- a/modules/lang/agda/config.el +++ b/modules/lang/agda/config.el @@ -10,6 +10,12 @@ (after! agda2-mode (set-lookup-handlers! 'agda2-mode :definition #'agda2-goto-definition-keyboard) + + (when (featurep! +tree-sitter) + (add-hook! '(agda-mode-local-vars-hook + agda2-mode-local-vars-hook) + :append #'tree-sitter!)) + (map! :map agda2-mode-map :localleader "?" #'agda2-show-goals @@ -38,9 +44,3 @@ "h" #'agda2-display-implicit-arguments "q" #'agda2-quit "r" #'agda2-restart))) - -;; Tree Sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! '(agda-mode-local-vars-hook - agda2-mode-local-vars-hook) - #'tree-sitter!)) diff --git a/modules/lang/cc/config.el b/modules/lang/cc/config.el index 40fb8069e..dc5361bc2 100644 --- a/modules/lang/cc/config.el +++ b/modules/lang/cc/config.el @@ -67,6 +67,11 @@ This is ignored by ccls.") :return "return" :yield "#require") + (when (featurep! +tree-sitter) + (add-hook! '(c-mode-local-vars-hook + c++-mode-local-vars-hook) + :append #'tree-sitter!)) + ;; HACK Suppress 'Args out of range' error in when multiple modifications are ;; performed at once in a `c++-mode' buffer, e.g. with `iedit' or ;; multiple cursors. @@ -304,9 +309,3 @@ If rtags or rdm aren't available, fail silently instead of throwing a breaking e "-isystem/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include" "-isystem/usr/local/include"] :resourceDir (cdr (doom-call-process "clang" "-print-resource-dir")))))))) - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! '(c-mode-local-vars-hook - c++-mode-local-vars-hook) - #'tree-sitter!)) diff --git a/modules/lang/csharp/config.el b/modules/lang/csharp/config.el index cdd4bb6fd..e018a6984 100644 --- a/modules/lang/csharp/config.el +++ b/modules/lang/csharp/config.el @@ -35,6 +35,9 @@ (when (featurep! +lsp) (add-hook 'csharp-mode-local-vars-hook #'lsp! 'append)) + (when (featurep! +tree-sitter) + (add-hook 'csharp-mode-local-vars-hook #'tree-sitter! 'append)) + (defadvice! +csharp-disable-clear-string-fences-a (fn &rest args) "This turns off `c-clear-string-fences' for `csharp-mode'. When on for `csharp-mode' font lock breaks after an interpolated string @@ -72,7 +75,3 @@ or terminating simple string." (use-package! sln-mode :mode "\\.sln\\'") - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! 'csharp-mode-local-vars-hook #'tree-sitter!)) diff --git a/modules/lang/elixir/config.el b/modules/lang/elixir/config.el index de356246b..f6cffb5df 100644 --- a/modules/lang/elixir/config.el +++ b/modules/lang/elixir/config.el @@ -41,6 +41,9 @@ (after! lsp-mode (add-to-list 'lsp-file-watch-ignored-directories "[/\\\\]_build\\'"))) + (when (featurep! +tree-sitter) + (add-hook 'elixir-mode-local-vars-hook #'tree-sitter! 'append)) + (after! highlight-numbers (puthash 'elixir-mode "\\_<-?[[:digit:]]+\\(?:_[[:digit:]]\\{3\\}\\)*\\_>" @@ -99,6 +102,3 @@ "T" #'exunit-toggle-file-and-test "t" #'exunit-toggle-file-and-test-other-window "s" #'exunit-verify-single)) - -(eval-when! (featurep! +tree-sitter) - (add-hook! 'elixir-mode-local-vars-hook #'tree-sitter!)) diff --git a/modules/lang/elm/config.el b/modules/lang/elm/config.el index df263a0d7..8e216d0f2 100644 --- a/modules/lang/elm/config.el +++ b/modules/lang/elm/config.el @@ -4,6 +4,9 @@ (if (featurep! +lsp) (add-hook 'elm-mode-local-vars-hook #'lsp! 'append) (set-company-backend! 'elm-mode 'company-elm)) + + (when (featurep! +tree-sitter) + (add-hook 'elm-mode-local-vars-hook #'tree-sitter! 'append)) (set-repl-handler! 'elm-mode #'run-elm-interactive) (set-ligatures! 'elm-mode @@ -21,7 +24,3 @@ :when (featurep! :checkers syntax) :after elm-mode :config (add-to-list 'flycheck-checkers 'elm)) - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! 'elm-mode-local-vars-hook #'tree-sitter!)) diff --git a/modules/lang/go/config.el b/modules/lang/go/config.el index 7231839b0..619dceb90 100644 --- a/modules/lang/go/config.el +++ b/modules/lang/go/config.el @@ -23,6 +23,9 @@ (add-hook 'go-mode-local-vars-hook #'lsp! 'append) (add-hook 'go-mode-hook #'go-eldoc-setup)) + (when (featurep! +tree-sitter) + (add-hook 'go-mode-local-vars-hook #'tree-sitter! 'append)) + (map! :map go-mode-map :localleader "a" #'go-tag-add @@ -76,7 +79,3 @@ (use-package! flycheck-golangci-lint :when (featurep! :checkers syntax) :hook (go-mode . flycheck-golangci-lint-setup)) - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! 'go-mode-local-vars-hook #'tree-sitter!)) diff --git a/modules/lang/java/config.el b/modules/lang/java/config.el index 0b06a1e61..2d1c34735 100644 --- a/modules/lang/java/config.el +++ b/modules/lang/java/config.el @@ -30,6 +30,9 @@ If the depth is 2, the first two directories are removed: net.lissner.game.") ((featurep! :tools lsp +eglot)) ((featurep! +lsp) (load! "+lsp"))) +(when (featurep! +tree-sitter) + (add-hook 'java-mode-local-vars-hook #'tree-sitter! 'append)) + ;; ;;; Common packages @@ -49,7 +52,3 @@ If the depth is 2, the first two directories are removed: net.lissner.game.") (set-docsets! 'groovy-mode "Groovy" "Groovy_JDK") (set-eval-handler! 'groovy-mode "groovy") (set-repl-handler! 'groovy-mode #'+java/open-groovy-repl)) - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! 'java-mode-local-vars-hook #'tree-sitter!)) diff --git a/modules/lang/javascript/config.el b/modules/lang/javascript/config.el index bbfa47ef5..971d16220 100644 --- a/modules/lang/javascript/config.el +++ b/modules/lang/javascript/config.el @@ -166,6 +166,13 @@ ;; ;;; Tools +(when (featurep! +tree-sitter) + (add-hook! '(js2-mode-local-vars-hook + typescript-mode-local-vars-hook + typescript-tsx-mode-local-vars-hook + rjsx-mode-local-vars-hook) + :append #'tree-sitter!)) + (add-hook! '(typescript-mode-local-vars-hook typescript-tsx-mode-local-vars-hook web-mode-local-vars-hook @@ -320,12 +327,3 @@ to tide." (def-project-mode! +javascript-gulp-mode :when (locate-dominating-file default-directory "gulpfile.js")) - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! '(js-mode-local-vars-hook - js2-mode-local-vars-hook - typescript-mode-local-vars-hook - typescript-tsx-mode-local-vars-hook - rjsx-mode-local-vars-hook) - #'tree-sitter!)) diff --git a/modules/lang/json/config.el b/modules/lang/json/config.el index a088c54d2..1428c55cf 100644 --- a/modules/lang/json/config.el +++ b/modules/lang/json/config.el @@ -5,6 +5,10 @@ :init (when (featurep! +lsp) (add-hook 'json-mode-local-vars-hook #'lsp! 'append)) + (when (featurep! +tree-sitter) + (add-hook! '(json-mode-local-vars-hook + jsonc-mode-local-vars-hook) + :append #'tree-sitter!)) :config (set-electric! 'json-mode :chars '(?\n ?: ?{ ?})) @@ -29,8 +33,3 @@ :map json-mode-map :localleader "s" #'counsel-jq)) - -(eval-when! (featurep! +tree-sitter) - (add-hook! '(json-mode-local-vars-hook - jsonc-mode-local-vars-hook) - #'tree-sitter!)) diff --git a/modules/lang/julia/config.el b/modules/lang/julia/config.el index 1969d6179..4602c378e 100644 --- a/modules/lang/julia/config.el +++ b/modules/lang/julia/config.el @@ -5,6 +5,12 @@ :config (set-repl-handler! 'julia-mode #'+julia/open-repl) + (when (featurep! +lsp) + (add-hook 'julia-mode-local-vars-hook #'lsp! 'append)) + + (when (featurep! +tree-sitter) + (add-hook 'julia-mode-local-vars-hook #'tree-sitter! 'append)) + ;; Borrow matlab.el's fontification of math operators. From ;; (dolist (mode '(julia-mode ess-julia-mode)) @@ -65,10 +71,6 @@ (term-set-escape-char ?\C-c))) -(when (featurep! +lsp) - (add-hook 'julia-mode-local-vars-hook #'lsp! 'append)) - - (use-package! lsp-julia :when (featurep! +lsp) :unless (featurep! :tools lsp +eglot) @@ -94,7 +96,3 @@ ;; Prevent timeout while installing LanguageServer.jl (setq-hook! 'julia-mode-hook eglot-connect-timeout (max eglot-connect-timeout 60)) :config (eglot-jl-init)) - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! 'julia-mode-local-vars-hook #'tree-sitter!)) diff --git a/modules/lang/nix/config.el b/modules/lang/nix/config.el index 41ee296b6..0222b3e5e 100644 --- a/modules/lang/nix/config.el +++ b/modules/lang/nix/config.el @@ -31,6 +31,8 @@ (when (featurep! +lsp) (add-hook 'nix-mode-local-vars-hook #'lsp! 'append)) + (when (featurep! +tree-sitter) + (add-hook 'nix-mode-local-vars-hook #'tree-sitter! 'append)) (map! :localleader :map nix-mode-map @@ -42,15 +44,14 @@ "u" #'nix-unpack "o" #'+nix/lookup-option)) + (use-package! nix-drv-mode :mode "\\.drv\\'") + (use-package! nix-update :commands nix-update-fetch) + (use-package! nix-repl :commands nix-repl-show) - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! 'nix-mode-local-vars-hook #'tree-sitter!)) diff --git a/modules/lang/php/config.el b/modules/lang/php/config.el index c6f435b24..8f91c182b 100644 --- a/modules/lang/php/config.el +++ b/modules/lang/php/config.el @@ -60,6 +60,9 @@ (setq lsp-clients-php-server-command "php-language-server.php")) (add-hook 'php-mode-local-vars-hook #'lsp! 'append)) + (when (featurep! +tree-sitter) + (add-hook 'php-mode-local-vars-hook #'tree-sitter! 'append)) + ;; Use the smallest `sp-max-pair-length' for optimum `smartparens' performance (setq-hook! 'php-mode-hook sp-max-pair-length 5) @@ -176,7 +179,3 @@ :on-exit (setq phpunit-args nil phpunit-executable nil)) - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! 'php-mode-local-vars-hook #'tree-sitter!)) diff --git a/modules/lang/python/config.el b/modules/lang/python/config.el index cde0ad3cd..00218a10b 100644 --- a/modules/lang/python/config.el +++ b/modules/lang/python/config.el @@ -25,6 +25,9 @@ ;; Use "mspyls" in eglot if in PATH (when (executable-find "Microsoft.Python.LanguageServer") (set-eglot-client! 'python-mode '("Microsoft.Python.LanguageServer")))) + + (when (featurep! +tree-sitter) + (add-hook 'python-mode-local-vars-hook #'tree-sitter! 'append)) :config (set-repl-handler! 'python-mode #'+python/open-repl :persist t @@ -428,7 +431,3 @@ (use-package! lsp-pyright :when (featurep! +pyright) :after lsp-mode)) - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! 'python-mode-local-vars-hook #'tree-sitter!)) diff --git a/modules/lang/ruby/config.el b/modules/lang/ruby/config.el index 3ffec7bc0..9a8841fac 100644 --- a/modules/lang/ruby/config.el +++ b/modules/lang/ruby/config.el @@ -21,6 +21,9 @@ (when (featurep! +lsp) (add-hook 'ruby-mode-local-vars-hook #'lsp! 'append)) + (when (featurep! +tree-sitter) + (add-hook 'ruby-mode-local-vars-hook #'tree-sitter! 'append)) + (after! inf-ruby (add-hook 'inf-ruby-mode-hook #'doom-mark-buffer-as-real-h) ;; switch to inf-ruby from compile if we detect a breakpoint has been hit @@ -195,7 +198,3 @@ (map! :localleader :map projectile-rails-mode-map "r" #'projectile-rails-command-map)) - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! 'ruby-mode-local-vars-hook #'tree-sitter!)) diff --git a/modules/lang/rust/config.el b/modules/lang/rust/config.el index 3fcab041a..16be1f97b 100644 --- a/modules/lang/rust/config.el +++ b/modules/lang/rust/config.el @@ -48,6 +48,9 @@ 'lsp-mode)) (add-hook 'rustic-mode-local-vars-hook #'rustic-setup-lsp 'append)) + (when (featurep! +tree-sitter) + (add-hook 'rustic-mode-local-vars-hook #'tree-sitter! 'append)) + ;; HACK If lsp/eglot isn't available, it attempts to install lsp-mode via ;; package.el. Doom manages its own dependencies through straight so disable ;; this behavior to avoid package-not-initialized errors. @@ -81,7 +84,3 @@ (set-lookup-handlers! 'rustic-mode :definition '(racer-find-definition :async t) :documentation '+rust-racer-lookup-documentation)) - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! 'rustic-mode-local-vars-hook #'tree-sitter!)) diff --git a/modules/lang/scala/config.el b/modules/lang/scala/config.el index 0e427e909..6bc663a42 100644 --- a/modules/lang/scala/config.el +++ b/modules/lang/scala/config.el @@ -19,6 +19,9 @@ (setq-hook! 'scala-mode-hook lsp-enable-indentation nil) (add-hook 'scala-mode-local-vars-hook #'lsp! 'append)) + (when (featurep! +tree-sitter) + (add-hook 'scala-mode-local-vars-hook #'tree-sitter! 'append)) + (set-ligatures! 'scala-mode ;; Functional :def "def" @@ -50,7 +53,3 @@ (use-package! sbt-mode :after scala-mode :config (set-repl-handler! 'scala-mode #'+scala/open-repl :persist t)) - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! 'scala-mode-local-vars-hook #'tree-sitter!)) diff --git a/modules/lang/sh/config.el b/modules/lang/sh/config.el index 684781bea..c9425ee72 100755 --- a/modules/lang/sh/config.el +++ b/modules/lang/sh/config.el @@ -40,6 +40,9 @@ (when (featurep! +lsp) (add-hook 'sh-mode-local-vars-hook #'lsp! 'append)) + (when (featurep! +tree-sitter) + (add-hook 'sh-mode-local-vars-hook #'tree-sitter! 'append)) + (setq sh-indent-after-continuation 'always) ;; [pedantry intensifies] @@ -93,7 +96,3 @@ :config (when (featurep! +lsp) (add-hook 'powershell-mode-local-vars-hook #'lsp! 'append))) - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! 'sh-mode-local-vars-hook #'tree-sitter!)) diff --git a/modules/lang/swift/config.el b/modules/lang/swift/config.el index 0de022376..7f38cab96 100644 --- a/modules/lang/swift/config.el +++ b/modules/lang/swift/config.el @@ -1,7 +1,10 @@ ;;; lang/swift/config.el -*- lexical-binding: t; -*- (after! swift-mode - (set-repl-handler! 'swift-mode #'run-swift)) + (set-repl-handler! 'swift-mode #'run-swift) + + (when (featurep! +tree-sitter) + (add-hook 'swift-mode-local-vars-hook #'tree-sitter! 'append))) (use-package! flycheck-swift @@ -31,7 +34,3 @@ "sourcekit" "/Library/Developer/Toolchains/swift-latest.xctoolchain/usr/bin/sourcekit-lsp" "/Library/Developer/Toolchains/swift-latest.xctoolchain/usr/bin/sourcekit")))) - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! 'swift-mode-local-vars-hook #'tree-sitter!)) diff --git a/modules/lang/web/+css.el b/modules/lang/web/+css.el index 3d64cd092..12ecd8486 100644 --- a/modules/lang/web/+css.el +++ b/modules/lang/web/+css.el @@ -77,3 +77,6 @@ If set to `nil', disable all the above behaviors.") sass-mode-local-vars-hook less-css-mode-local-vars-hook) #'lsp!)) + +(when (featurep! +tree-sitter) + (add-hook 'css-mode-local-vars-hook #'tree-sitter! 'append)) diff --git a/modules/lang/web/+html.el b/modules/lang/web/+html.el index 37ed70cfe..526ddeda1 100644 --- a/modules/lang/web/+html.el +++ b/modules/lang/web/+html.el @@ -168,3 +168,8 @@ web-mode-local-vars-hook nxml-mode-local-vars-hook) #'lsp!)) + +(when (featurep! +tree-sitter) + (add-hook! '(html-mode-local-vars-hook + mhtml-mode-local-vars-hook) + :append #'tree-sitter!)) diff --git a/modules/lang/web/config.el b/modules/lang/web/config.el index 34ad2d069..2185048c0 100644 --- a/modules/lang/web/config.el +++ b/modules/lang/web/config.el @@ -55,10 +55,3 @@ (def-project-mode! +web-phaser-mode :modes '(+javascript-npm-mode) :when (+javascript-npm-dep-p '(or phaser phaser-ce)))) - -;; Tree sitter -(eval-when! (featurep! +tree-sitter) - (add-hook! '(html-mode-local-vars-hook - mhtml-mode-local-vars-hook - css-mode-local-vars-hook) - #'tree-sitter!)) diff --git a/modules/lang/zig/config.el b/modules/lang/zig/config.el index 94b3b7355..5a5c1d385 100644 --- a/modules/lang/zig/config.el +++ b/modules/lang/zig/config.el @@ -15,6 +15,9 @@ (when (featurep! +lsp) (add-hook 'zig-mode-local-vars-hook #'lsp! 'append)) + (when (featurep! +tree-sitter) + (add-hook 'zig-mode-local-vars-hook #'tree-sitter! 'append)) + (when (featurep! :checkers syntax) (flycheck-define-checker zig "A zig syntax checker using zig's `ast-check` command." @@ -30,6 +33,3 @@ "f" #'zig-format-buffer "r" #'zig-run "t" #'zig-test-buffer)) - -(eval-when! (featurep! +tree-sitter) - (add-hook! 'zig-mode-local-vars-hook #'tree-sitter!))