vimPlugins.nvim-treesitter-legacy: init (#472119)

This commit is contained in:
Heitor Augusto
2026-01-06 14:30:28 +00:00
committed by GitHub
6 changed files with 3786 additions and 21 deletions
@@ -0,0 +1,5 @@
{
lib,
vimPlugins,
}:
lib.recurseIntoAttrs vimPlugins.nvim-treesitter-legacy.grammarPlugins
@@ -0,0 +1,13 @@
{ vimUtils, fetchFromGitHub }:
vimUtils.buildVimPlugin {
pname = "nvim-treesitter-legacy";
version = "0.10.0-unstable-2025-05-24";
src = fetchFromGitHub {
owner = "nvim-treesitter";
repo = "nvim-treesitter";
rev = "42fc28ba918343ebfd5565147a42a26580579482";
hash = "sha256-CVs9FTdg3oKtRjz2YqwkMr0W5qYLGfVyxyhE3qnGYbI=";
};
meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter/";
meta.hydraPlatforms = [ ];
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,91 @@
{
lib,
callPackage,
tree-sitter,
neovim,
neovimUtils,
runCommand,
vimPlugins,
tree-sitter-grammars,
writableTmpDirAsHomeHook,
}:
self: super:
let
inherit (neovimUtils) grammarToPlugin;
overrides = prev: {
};
generatedGrammars =
let
generated = callPackage ./generated.nix {
inherit (tree-sitter) buildGrammar;
};
in
lib.overrideExisting generated (overrides generated);
generatedDerivations = lib.filterAttrs (_: lib.isDerivation) generatedGrammars;
# add aliases so grammars from `tree-sitter` are overwritten in `withPlugins`
# for example, for ocaml_interface, the following aliases will be added
# ocaml-interface
# tree-sitter-ocaml-interface
# tree-sitter-ocaml_interface
builtGrammars =
generatedGrammars
// lib.concatMapAttrs (
k: v:
let
replaced = lib.replaceStrings [ "_" ] [ "-" ] k;
in
{
"tree-sitter-${k}" = v;
}
// lib.optionalAttrs (k != replaced) {
${replaced} = v;
"tree-sitter-${replaced}" = v;
}
) generatedDerivations;
allGrammars = lib.attrValues generatedDerivations;
# Usage:
# pkgs.vimPlugins.nvim-treesitter-legacy.withPlugins (p: [ p.c p.java ... ])
# or for all grammars:
# pkgs.vimPlugins.nvim-treesitter-legacy.withAllGrammars
withPlugins =
f:
self.nvim-treesitter-legacy.overrideAttrs {
passthru.dependencies = map grammarToPlugin (f (tree-sitter.builtGrammars // builtGrammars));
};
withAllGrammars = withPlugins (_: allGrammars);
in
{
postPatch = ''
rm -r parser
'';
passthru = (super.nvim-treesitter-legacy.passthru or { }) // {
inherit
builtGrammars
allGrammars
grammarToPlugin
withPlugins
withAllGrammars
;
grammarPlugins = lib.mapAttrs (_: grammarToPlugin) generatedDerivations;
parsers = lib.recurseIntoAttrs vimPlugins.nvim-treesitter.grammarPlugins;
};
meta =
(super.nvim-treesitter-legacy.meta or { }) // {
license = lib.licenses.asl20;
maintainers = [ ];
};
}
@@ -1927,7 +1927,7 @@ assertNoAdditions {
};
markid = super.markid.overrideAttrs {
dependencies = [ self.nvim-treesitter ];
dependencies = [ self.nvim-treesitter-legacy ];
};
mason-lspconfig-nvim = super.mason-lspconfig-nvim.overrideAttrs {
@@ -2421,7 +2421,7 @@ assertNoAdditions {
nvim-cmp
nvim-lspconfig
telescope-nvim
nvim-treesitter
nvim-treesitter-legacy
nvchad-ui
];
nvimSkipModules = [
@@ -2464,7 +2464,7 @@ assertNoAdditions {
nvim-biscuits = super.nvim-biscuits.overrideAttrs {
dependencies = with self; [
nvim-treesitter
nvim-treesitter-legacy
plenary-nvim
];
};
@@ -2526,7 +2526,7 @@ assertNoAdditions {
};
nvim-FeMaco-lua = super.nvim-FeMaco-lua.overrideAttrs {
dependencies = [ self.nvim-treesitter ];
dependencies = [ self.nvim-treesitter-legacy ];
};
nvim-fzf-commands = super.nvim-fzf-commands.overrideAttrs {
@@ -2699,16 +2699,16 @@ assertNoAdditions {
# Optional toggleterm integration
checkInputs = [ self.toggleterm-nvim ];
dependencies = with self; [
nvim-treesitter
nvim-treesitter-parsers.c_sharp
nvim-treesitter-parsers.go
nvim-treesitter-parsers.haskell
nvim-treesitter-parsers.javascript
nvim-treesitter-parsers.python
nvim-treesitter-parsers.ruby
nvim-treesitter-parsers.rust
nvim-treesitter-parsers.typescript
nvim-treesitter-parsers.zig
nvim-treesitter-legacy
nvim-treesitter-legacy-parsers.c_sharp
nvim-treesitter-legacy-parsers.go
nvim-treesitter-legacy-parsers.haskell
nvim-treesitter-legacy-parsers.javascript
nvim-treesitter-legacy-parsers.python
nvim-treesitter-legacy-parsers.ruby
nvim-treesitter-legacy-parsers.rust
nvim-treesitter-legacy-parsers.typescript
nvim-treesitter-legacy-parsers.zig
];
nvimSkipModules = [
# Broken runners
@@ -2738,37 +2738,42 @@ assertNoAdditions {
callPackage ./nvim-treesitter/overrides.nix { } self super
);
# TODO: raise warning at 26.04; drop at 26.11
nvim-treesitter-legacy = super.nvim-treesitter-legacy.overrideAttrs (
callPackage ./nvim-treesitter-legacy/overrides.nix { } self super
);
nvim-treesitter-context = super.nvim-treesitter-context.overrideAttrs {
# Meant for CI installing parsers
nvimSkipModules = [ "install_parsers" ];
};
nvim-treesitter-endwise = super.nvim-treesitter-endwise.overrideAttrs {
dependencies = [ self.nvim-treesitter ];
dependencies = [ self.nvim-treesitter-legacy ];
};
nvim-treesitter-pairs = super.nvim-treesitter-pairs.overrideAttrs {
dependencies = [ self.nvim-treesitter ];
dependencies = [ self.nvim-treesitter-legacy ];
};
nvim-treesitter-pyfold = super.nvim-treesitter-pyfold.overrideAttrs {
dependencies = [ self.nvim-treesitter ];
dependencies = [ self.nvim-treesitter-legacy ];
};
nvim-treesitter-refactor = super.nvim-treesitter-refactor.overrideAttrs {
dependencies = [ self.nvim-treesitter ];
dependencies = [ self.nvim-treesitter-legacy ];
};
nvim-treesitter-sexp = super.nvim-treesitter-sexp.overrideAttrs {
dependencies = [ self.nvim-treesitter ];
dependencies = [ self.nvim-treesitter-legacy ];
};
nvim-treesitter-textobjects = super.nvim-treesitter-textobjects.overrideAttrs {
dependencies = [ self.nvim-treesitter ];
dependencies = [ self.nvim-treesitter-legacy ];
};
nvim-treesitter-textsubjects = super.nvim-treesitter-textsubjects.overrideAttrs {
dependencies = [ self.nvim-treesitter ];
dependencies = [ self.nvim-treesitter-legacy ];
};
nvim-ufo = super.nvim-ufo.overrideAttrs {
@@ -216,6 +216,14 @@ let
ln -s ${python3Env}/${python3Env.sitePackages} $out/pack/${packageName}/start/__python3_dependencies/python3
'';
in
assert
(
builtins.elem vimPlugins.nvim-treesitter (opt ++ allPlugins)
&& builtins.elem vimPlugins.nvim-treesitter-legacy (opt ++ allPlugins)
)
-> throw "You cannot include two different versions of nvim-treesitter, perhaps you included a legacy plugin together with a new one?";
[
packdirStart
packdirOpt