Skip to content
@neovim-treesitter

neovim-treesitter

neovim-treesitter

Distributed tree-sitter query maintenance for Neovim.


Key Repositories

Repository Description
treesitter-parser-registry Editor-agnostic parser catalogue — registry.json, schema, documentation
nvim-treesitter Neovim plugin — parser installer, query runtime, :TSInstall UX
.github Org-wide reusable CI workflows and community health files

Goals

The neovim-treesitter org exists to make tree-sitter queries a community-maintained, per-language concern rather than a monolithic bottleneck. We aim to:

  • Distribute ownership — each language's Neovim queries are maintained by people who actually use that language, not by a small core team reviewing 300+ languages.

  • Decouple queries from parsers — query updates and parser bumps ship independently, so a highlight fix for Python doesn't block a grammar update for Rust.

  • Provide shared infrastructure — reusable CI workflows, a schema-validated parser registry, and automated version-bump tooling so maintainers can focus on query quality rather than plumbing.

  • Encourage upstream ownership — parser authors are the best people to maintain Neovim queries for their grammar. We provide the CI and registry support to make shipping queries directly from the parser repo (the self-contained model) straightforward.


How it works

The parser registry

The treesitter-parser-registry is an editor-agnostic catalogue of every known tree-sitter parser and where its Neovim queries live. The registry is designed to be consumed by any installer — nvim-treesitter is the first consumer, and the schema is open for others to adopt.

Each language has one of these source types:

Type Meaning
self_contained Queries ship inside the upstream parser repo
external_queries Queries live in a separate nvim-treesitter-queries-<lang> repo
queries_only No parser — shared queries inherited by other languages

Query repos

For languages that don't ship their own queries, we maintain individual nvim-treesitter-queries-<lang> repositories. Each has:

  • Neovim query .scm files (highlights, injections, folds, indents, locals)
  • A parser.json manifest pinning the parser version queries are tested against
  • CI that validates queries on every push and PR
  • Automated weekly checks for upstream parser releases

Reusable CI

All CI is centralised as reusable workflows in the .github repo:


Own your queries

If you maintain a tree-sitter parser, we want to help you ship Neovim queries directly from your repo.

Shipping queries alongside your grammar means:

  • Query changes can land in the same PR as grammar changes
  • You control the quality and release cadence
  • Users get queries that are always tested against the correct parser version
  • No dependency on a separate repo or external maintainer

Getting started

  1. Add nvim-queries/<lang>/ to your parser repo with .scm files
  2. Add a CI job calling our reusable workflow (4 lines of YAML)
  3. Open a PR against the registry to mark your language as self_contained

Full walkthrough: Self-Contained Migration Guide

Reference implementation: tree-sitter-zsh

Already have a query repo?

If your language already has an nvim-treesitter-queries-<lang> repo and you'd like to take ownership:

  • Claim maintainership — open a PR adding yourself to CODEOWNERS in the query repo
  • Or migrate to self-contained — move queries into your parser repo and we'll archive the standalone query repo

Either way, the community benefits from active maintenance.


Supported Languages

329 languages — 1 self-contained, 325 external queries, 3 queries-only

This table is auto-generated from registry.json. Do not edit manually.

Supported languages
Language Parser Queries
ada parser queries
agda parser queries
angular parser queries
apex parser queries
arduino parser queries
asm parser queries
astro parser queries
authzed parser queries
awk parser queries
bash parser queries
bass parser queries
beancount parser queries
bibtex parser queries
bicep parser queries
bitbake parser queries
blade parser queries
bp parser queries
bpftrace parser queries
brightscript parser queries
c parser queries
c3 parser queries
c_sharp parser queries
caddy parser queries
cairo parser queries
capnp parser queries
chatito parser queries
circom parser queries
clojure parser queries
cmake parser queries
comment parser queries
commonlisp parser queries
cooklang parser queries
corn parser queries
cpon parser queries
cpp parser queries
css parser queries
csv parser queries
cuda parser queries
cue parser queries
cylc parser queries
d parser queries
dart parser queries
desktop parser queries
devicetree parser queries
dhall parser queries
diff parser queries
disassembly parser queries
djot parser queries
dockerfile parser queries
dot parser queries
doxygen parser queries
dtd parser queries
earthfile parser queries
ebnf parser queries
ecma queries
editorconfig parser queries
eds parser queries
eex parser queries
elixir parser queries
elm parser queries
elsa parser queries
elvish parser queries
embedded_template parser queries
enforce parser queries
erlang parser queries
facility parser queries
faust parser queries
fennel parser queries
fidl parser queries
firrtl parser queries
fish parser queries
foam parser queries
forth parser queries
fortran parser queries
fsh parser queries
fsharp parser queries
func parser queries
gap parser queries
gaptst parser queries
gdscript parser queries
gdshader parser queries
git_config parser queries
git_rebase parser queries
gitattributes parser queries
gitcommit parser queries
gitignore parser queries
gleam parser queries
glimmer parser queries
glimmer_javascript parser queries
glimmer_typescript parser queries
glsl parser queries
gn parser queries
gnuplot parser queries
go parser queries
goctl parser queries
godot_resource parser queries
gomod parser queries
gosum parser queries
gotmpl parser queries
gowork parser queries
gpg parser queries
graphql parser queries
gren parser queries
groovy parser queries
groq parser queries
gstlaunch parser queries
hack parser queries
hare parser queries
haskell parser queries
haskell_persistent parser queries
hcl parser queries
heex parser queries
helm parser queries
hjson parser queries
hlsl parser queries
hlsplaylist parser queries
hocon parser queries
hoon parser queries
html parser queries
html_tags queries
htmldjango parser queries
http parser queries
hurl parser queries
hyprlang parser queries
idl parser queries
idris parser queries
ini parser queries
inko parser queries
ispc parser queries
janet_simple parser queries
java parser queries
javadoc parser queries
javascript parser queries
jinja parser queries
jinja_inline parser queries
jjdescription parser queries
jq parser queries
jsdoc parser queries
json parser queries
json5 parser queries
jsonnet parser queries
jsx queries
julia parser queries
just parser queries
kcl parser queries
kconfig parser queries
kdl parser queries
kitty parser queries
kos parser queries
kotlin parser queries
koto parser queries
kusto parser queries
lalrpop parser queries
latex parser queries
ledger parser queries
leo parser queries
linkerscript parser queries
liquid parser queries
liquidsoap parser queries
llvm parser queries
lua parser queries
luadoc parser queries
luap parser queries
luau parser queries
m68k parser queries
make parser queries
markdown parser queries
markdown_inline parser queries
matlab parser queries
menhir parser queries
mermaid parser queries
meson parser queries
mlir parser queries
muttrc parser queries
nasm parser queries
nginx parser queries
nickel parser queries
nim parser queries
nim_format_string parser queries
ninja parser queries
nix parser queries
nqc parser queries
nu parser queries
objc parser queries
objdump parser queries
ocaml parser queries
ocaml_interface parser queries
ocamllex parser queries
odin parser queries
pascal parser queries
passwd parser queries
pem parser queries
perl parser queries
php parser queries
php_only parser queries
phpdoc parser queries
pioasm parser queries
pkl parser queries
po parser queries
pod parser queries
poe_filter parser queries
pony parser queries
powershell parser queries
printf parser queries
prisma parser queries
problog parser queries
prolog parser queries
promql parser queries
properties parser queries
proto parser queries
prql parser queries
psv parser queries
pug parser queries
puppet parser queries
purescript parser queries
pymanifest parser queries
python parser queries
ql parser queries
qmldir parser queries
qmljs parser queries
query parser queries
r parser queries
racket parser queries
ralph parser queries
rasi parser queries
razor parser queries
rbs parser queries
re2c parser queries
readline parser queries
regex parser queries
rego parser queries
requirements parser queries
rescript parser queries
rifleconf parser queries
rnoweb parser queries
robot parser queries
robots_txt parser queries
roc parser queries
ron parser queries
rst parser queries
ruby parser queries
runescript parser queries
rust parser queries
scala parser queries
scfg parser queries
scheme parser queries
scss parser queries
sflog parser queries
slang parser queries
slim parser queries
slint parser queries
smali parser queries
smithy parser queries
snakemake parser queries
snl parser queries
solidity parser queries
soql parser queries
sosl parser queries
sourcepawn parser queries
sparql parser queries
sproto parser queries
sql parser queries
squirrel parser queries
ssh_config parser queries
starlark parser queries
strace parser queries
styled parser queries
supercollider parser queries
superhtml parser queries
surface parser queries
svelte parser queries
sway parser queries
swift parser queries
sxhkdrc parser queries
systemtap parser queries
systemverilog parser queries
t32 parser queries
tablegen parser queries
tact parser queries
tcl parser queries
teal parser queries
templ parser queries
tera parser queries
terraform parser queries
textproto parser queries
thrift parser queries
tiger parser queries
tlaplus parser queries
tmux parser queries
todotxt parser queries
toml parser queries
tsv parser queries
tsx parser queries
turtle parser queries
twig parser queries
typescript parser queries
typespec parser queries
typoscript parser queries
typst parser queries
udev parser queries
ungrammar parser queries
unison parser queries
usd parser queries
uxntal parser queries
v parser queries
vala parser queries
vento parser queries
vhdl parser queries
vhs parser queries
vim parser queries
vimdoc parser queries
vrl parser queries
vue parser queries
wgsl parser queries
wgsl_bevy parser queries
wing parser queries
wit parser queries
wxml parser queries
xcompose parser queries
xml parser queries
xresources parser queries
yaml parser queries
yang parser queries
yuck parser queries
zathurarc parser queries
zig parser queries
ziggy parser queries
ziggy_schema parser queries
zsh zsh self-contained

Documentation

Document Description
Registry overview Motivation and design of the distributed model
Architecture Full system design — registry format, source types, installer integration
Contributing Adding languages, creating query repos, governance
Testing Running CI locally, ts_query_ls, corpus tests, dependency resolution
Self-contained migration Guide for parser maintainers shipping their own queries
Registry schema JSON Schema for registry.json and parser.json

Get involved

  • Parser authors — ship queries with your grammar using the self-contained guide
  • Language users — claim maintainership of a query repo for a language you use daily
  • Query contributors — improve highlights, injections, folds, and indents for any language

Questions or ideas? Open an issue on the registry repo.

Popular repositories Loading

  1. nvim-treesitter nvim-treesitter Public

    Tree-sitter Query 141 4

  2. treesitter-parser-registry treesitter-parser-registry Public

    Lua 16 5

  3. nvim-treesitter-queries-clojure nvim-treesitter-queries-clojure Public

    Neovim tree-sitter queries for clojure

    Tree-sitter Query 2 1

  4. nvim-treesitter-queries-fish nvim-treesitter-queries-fish Public

    Neovim tree-sitter queries for fish

    Tree-sitter Query 1

  5. plentest.nvim plentest.nvim Public

    Lua 1

  6. nvim-treesitter-queries-lalrpop nvim-treesitter-queries-lalrpop Public

    Neovim tree-sitter queries for lalrpop

    Tree-sitter Query 1

Repositories

Showing 10 of 333 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…