diff --git a/docs/manual/release-notes/rl-0.9.md b/docs/manual/release-notes/rl-0.9.md index a36a19c0..35d8def7 100644 --- a/docs/manual/release-notes/rl-0.9.md +++ b/docs/manual/release-notes/rl-0.9.md @@ -291,6 +291,10 @@ [Snoweuph](https://github.com/snoweuph) +- Allow the usage of `pks.tree-sitter-grammars` in + {option}`vim.treesitter.grammars` and language module tree-sitter package + options created via `mkGrammarOption`. + - Add `emmet-ls` to the supported LSPs for all languages it supports. - Added {option}`vim.treesitter.queries` to support adding custom queries. diff --git a/lib/types/default.nix b/lib/types/default.nix index 9b5469db..57fb43fe 100644 --- a/lib/types/default.nix +++ b/lib/types/default.nix @@ -10,7 +10,7 @@ in { inherit (typesDag) dagOf; inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline pluginType borderType; - inherit (typesLanguage) diagnostics mkGrammarOption; + inherit (typesLanguage) diagnostics mkGrammarOption mkTreesitterGrammarOption; inherit (typesLsp) mkLspPresetEnableOption; inherit (customTypes) char hexColor mergelessListOf deprecatedSingleOrListOf enumWithRename; } diff --git a/lib/types/languages.nix b/lib/types/languages.nix index 23a08890..6960ecb3 100644 --- a/lib/types/languages.nix +++ b/lib/types/languages.nix @@ -33,6 +33,17 @@ default = ["vimPlugins" "nvim-treesitter" "grammarPlugins" grammar]; nullable = true; }; + + # Prefer using `mkGrammarOption` and only use this, for grammars, + # not in `vimPlugins.nvim-treesitter.grammarPlugins`. + # Grammars from `tree-sitter-grammars.tree-sitter-` should mostly + # just work, but should be tested extra, as we currently only use them + # for a small subset of language modules. + mkTreesitterGrammarOption = pkgs: grammar: + mkPackageOption pkgs ["${grammar} treesitter"] { + default = ["tree-sitter-grammars" "tree-sitter-${grammar}"]; + nullable = true; + }; in { - inherit diagnostics diagnosticSubmodule mkGrammarOption; + inherit diagnostics diagnosticSubmodule mkGrammarOption mkTreesitterGrammarOption; } diff --git a/modules/plugins/treesitter/treesitter.nix b/modules/plugins/treesitter/treesitter.nix index a58fda45..876ee9e9 100644 --- a/modules/plugins/treesitter/treesitter.nix +++ b/modules/plugins/treesitter/treesitter.nix @@ -41,8 +41,12 @@ in { ''; description = '' List of treesitter grammars to install. For grammars to be installed properly, - you must use grammars from `pkgs.vimPlugins.nvim-treesitter.parsers` or `pkgs.vimPlugins.nvim-treesitter.grammarPlugins`. - You can use `pkgs.vimPlugins.nvim-treesitter.allGrammars` to install all grammars. + you must use grammars from one of those: + - `pkgs.vimPlugins.nvim-treesitter.parsers` + - `pkgs.vimPlugins.nvim-treesitter.grammarPlugins` + - `pkgs.tree-sitter-grammars` (mostly untested) + + You can use `pkgs.vimPlugins.nvim-treesitter.allGrammars` to install all grammars shipped with `nvim-treesitter`. For languages already supported by nvf, you may use {option}`vim.language..treesitter` options, which will automatically add