tree-sitter: Add withPlugins

Changed files
+51 -1
pkgs
development
tools
parsing
tree-sitter
misc
vim-plugins
+30 -1
pkgs/development/tools/parsing/tree-sitter/default.nix
···
in
lib.mapAttrs change grammars;
+
# Usage:
+
# pkgs.tree-sitter.withPlugins (p: [ p.tree-sitter-c p.tree-sitter-java ... ])
+
#
+
# or for all grammars:
+
# pkgs.tree-sitter.withPlugins (_: allGrammars)
+
# which is equivalent to
+
# pkgs.tree-sitter.withPlugins (p: builtins.attrValues p)
+
withPlugins = grammarFn:
+
let
+
grammars = grammarFn builtGrammars;
+
in
+
linkFarm "grammars"
+
(map
+
(drv:
+
let
+
name = lib.strings.getName drv;
+
in
+
{
+
name =
+
(lib.strings.removePrefix "tree-sitter-"
+
(lib.strings.removeSuffix "-grammar" name))
+
+ stdenv.hostPlatform.extensions.sharedLibrary;
+
path = "${drv}/parser";
+
}
+
)
+
grammars);
+
+
allGrammars = builtins.attrValues builtGrammars;
+
in
rustPlatform.buildRustPackage {
pname = "tree-sitter";
···
updater = {
inherit update-all-grammars;
};
-
inherit grammars builtGrammars;
+
inherit grammars builtGrammars withPlugins allGrammars;
tests = {
# make sure all grammars build
+21
pkgs/misc/vim-plugins/overrides.nix
···
, CoreFoundation
, CoreServices
+
# nvim-treesitter dependencies
+
, tree-sitter
+
# sved dependencies
, glib
, gobject-introspection
···
nvim-lsputils = super.nvim-lsputils.overrideAttrs (old: {
dependencies = with super; [ popfix ];
+
});
+
+
# Usage:
+
# pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [ p.tree-sitter-c p.tree-sitter-java ... ])
+
# or for all grammars:
+
# pkgs.vimPlugins.nvim-treesitter.withPlugins (_: tree-sitter.allGrammars)
+
nvim-treesitter = super.nvim-treesitter.overrideAttrs (old: {
+
passthru.withPlugins =
+
grammarFn: self.nvim-treesitter.overrideAttrs (_: {
+
postPatch =
+
let
+
grammars = tree-sitter.withPlugins grammarFn;
+
in
+
''
+
rm -r parser
+
ln -s ${grammars} parser
+
'';
+
});
});
onehalf = super.onehalf.overrideAttrs (old: {