diff --git a/modules/lang/json/README.org b/modules/lang/json/README.org index 996335237..5bcecde7b 100644 --- a/modules/lang/json/README.org +++ b/modules/lang/json/README.org @@ -15,7 +15,7 @@ This module adds [[https://www.json.org/json-en.html][JSON]] support to Doom Ema (supports [[https://github.com/vscode-langservers/vscode-json-languageserver][vscode-json-languageserver]]). - +tree-sitter :: Leverages tree-sitter for better syntax highlighting and structural text - editing. Requires [[doom-module::tools tree-sitter]]. + editing. Requires Emacs 29.1+ and [[doom-module::tools tree-sitter]]. ** Packages - [[doom-package:counsel-jq]] if [[doom-module::completion ivy]] diff --git a/modules/lang/json/config.el b/modules/lang/json/config.el index cd789b2a0..3f9fe6529 100644 --- a/modules/lang/json/config.el +++ b/modules/lang/json/config.el @@ -2,16 +2,12 @@ (use-package! json-mode :mode "\\.js\\(?:on\\|[hl]int\\(?:rc\\)?\\)\\'" - :init - (when (modulep! +lsp) - (add-hook 'json-mode-local-vars-hook #'lsp! 'append)) - (when (modulep! +tree-sitter) - (add-hook! '(json-mode-local-vars-hook - jsonc-mode-local-vars-hook) - :append #'tree-sitter!)) :config (set-electric! 'json-mode :chars '(?\n ?: ?{ ?})) + (when (modulep! +lsp) + (add-hook 'json-mode-local-vars-hook #'lsp! 'append)) + (map! :after json-mode :map json-mode-map :localleader @@ -24,6 +20,21 @@ "f" #'json-mode-beautify)) +(use-package! json-ts-mode + :when (modulep! +tree-sitter) + :when (fboundp 'json-ts-mode) ; 29.1+ only + :defer t + :init + (set-tree-sitter! 'json-mode 'json-ts-mode + '((json :url "https://github.com/tree-sitter/tree-sitter-json" + :rev "v0.24.8"))) + :config + ;; HACK: Rely on `major-mode-remap-defaults'. + (cl-callf2 assq-delete-all 'json-ts-mode auto-mode-alist) + + (when (modulep! +lsp) + (add-hook 'json-ts-mode-local-vars-hook #'lsp! 'append))) + (use-package! counsel-jq :when (modulep! :completion ivy) diff --git a/modules/tools/tree-sitter/config.el b/modules/tools/tree-sitter/config.el index 640005c81..3fffcfeb7 100644 --- a/modules/tools/tree-sitter/config.el +++ b/modules/tools/tree-sitter/config.el @@ -31,7 +31,6 @@ (html "https://github.com/tree-sitter/tree-sitter-html" nil nil nil nil) (java "https://github.com/tree-sitter/tree-sitter-java" nil nil nil nil) (javascript "https://github.com/tree-sitter/tree-sitter-javascript" "master" "src" nil nil) - (json "https://github.com/tree-sitter/tree-sitter-json" nil nil nil nil) (latex "https://github.com/latex-lsp/tree-sitter-latex" nil nil nil nil) (make "https://github.com/tree-sitter-grammars/tree-sitter-make" nil nil nil nil) (nix "https://github.com/nix-community/tree-sitter-nix" nil nil nil nil)