Skip to content

[audit] nvim-treesitter plugin archived April 2026 — migration path needed #84

Description

@stanfish06

What

The nvim-treesitter/nvim-treesitter repository was archived on April 3, 2026 and is now read-only. No further bug fixes, compatibility patches, or query updates will come from it.

This is separate from the narrower issue #63 (TSSync query divergence): the entire plugin is now frozen.

Where

lua/config/plugins.lua:10 — the package spec pointing to https://github.com/nvim-treesitter/nvim-treesitter.git.

The plugin is used in two places:

  • lua/config/treesitter.lua:79ts.install() for parser management
  • lua/config/treesitter.lua:166–167require("nvim-treesitter.config").get_install_dir(...) for locating parser/queries dirs

Why it matters

With 0.12 now stable and moving toward 1.0, the core Neovim treesitter API (vim.treesitter.*) is stable. The frozen plugin's require("nvim-treesitter.config") internals could break against a future Neovim release without any upstream fix available.

Migration options

  1. Switch to the community fork neovim-treesitter/nvim-treesitter — a full incompatible rewrite with a distributed per-language query model. Requires fresh setup (not a drop-in swap).

  2. Switch to tree-sitter-manager.nvim — a lightweight replacement for the parser-management functionality only (install/update parsers), keeping vim.treesitter.* calls as-is.

  3. Remove the plugin entirely — the config already calls vim.treesitter.start() directly for highlighting and the build_latest_parsers / TSSync workflow in treesitter.lua uses tree-sitter CLI directly. The only dependency on nvim-treesitter is ts.install() and get_install_dir(). These could be replaced with a small helper that shells out to tree-sitter build and uses a fixed well-known parser dir.

Recommended action

Evaluate option 3 first — it has the smallest surface area given that the config already manages parsers with the CLI. If query files from nvim-treesitter-textobjects require nvim-treesitter's query infrastructure, option 2 is the safer fallback.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions