diff --git a/modules/lang/yaml/README.org b/modules/lang/yaml/README.org index 7d9542f6c..3a50238b2 100644 --- a/modules/lang/yaml/README.org +++ b/modules/lang/yaml/README.org @@ -11,8 +11,8 @@ This module provides support for the [[https://yaml.org/][YAML file format]] to ** Module flags - +lsp :: - Enable LSP support for ~yaml-mode~. Requires [[doom-module::tools lsp]] and a langserver - (supports [[https://github.com/redhat-developer/yaml-language-server][yaml-language-server]]). + Enable LSP support for ~yaml-mode~. Requires [[doom-module::tools lsp]] and a + langserver (supports [[https://github.com/redhat-developer/yaml-language-server][yaml-language-server]]). - +tree-sitter :: Leverages tree-sitter for better syntax highlighting and structural text editing. Requires [[doom-module::tools tree-sitter]]. diff --git a/modules/lang/yaml/config.el b/modules/lang/yaml/config.el index 684568c44..8a5cbb90f 100644 --- a/modules/lang/yaml/config.el +++ b/modules/lang/yaml/config.el @@ -2,10 +2,22 @@ (use-package! yaml-mode :mode "Procfile\\'" - :init + :config (when (modulep! +lsp) (add-hook 'yaml-mode-local-vars-hook #'lsp! 'append)) - (when (modulep! +tree-sitter) - (add-hook 'yaml-mode-local-vars-hook #'tree-sitter! 'append)) - :config (setq-hook! 'yaml-mode-hook tab-width yaml-indent-offset)) + + +(use-package! yaml-ts-mode + :when (modulep! +tree-sitter) + :when (fboundp 'yaml-ts-mode) ; 29.1+ only + :init + (set-tree-sitter! 'yaml-mode 'yaml-ts-mode + '((yaml :url "https://github.com/tree-sitter-grammars/tree-sitter-yaml" + :rev "v0.7.0"))) + :config + ;; HACK: Rely on `major-mode-remap-defaults'. + (cl-callf2 rassq-delete-all 'yaml-ts-mode auto-mode-alist) + + (when (modulep! +lsp) + (add-hook 'yaml-ts-mode-local-vars-hook #'lsp! 'append))) diff --git a/modules/lang/yaml/doctor.el b/modules/lang/yaml/doctor.el new file mode 100644 index 000000000..73d4086c9 --- /dev/null +++ b/modules/lang/yaml/doctor.el @@ -0,0 +1,9 @@ +;;; lang/yaml/doctor.el -*- lexical-binding: t; -*- + +(assert! (or (not (modulep! +lsp)) + (modulep! :tools lsp)) + "This module requires (:tools lsp)") + +(assert! (or (not (modulep! +tree-sitter)) + (modulep! :tools tree-sitter)) + "This module requires (:tools tree-sitter)")