aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2023-06-12 09:54:30 -0600
committerChristian Clason <c.clason@uni-graz.at>2025-05-12 18:43:40 +0200
commit692b051b09935653befdb8f7ba8afdb640adf17b (patch)
tree167162b6b129ae04f68c5735078521a72917c742 /README.md
parentfeat(c-family): inherit injections (diff)
downloadnvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.gz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.bz2
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.lz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.xz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.zst
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.zip
feat!: drop modules, general refactor and cleanup
Diffstat (limited to 'README.md')
-rw-r--r--README.md742
1 files changed, 65 insertions, 677 deletions
diff --git a/README.md b/README.md
index 2cb5f033b..715ec50ed 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
+<h1 align="center">
+ <img src="https://github.com/nvim-treesitter/nvim-treesitter/assets/2361214/0513b223-c902-4f12-92ee-8ac4d8d6f41f" alt="nvim-treesitter">
+</h1>
<div align="center">
- <h1>nvim-treesitter</h1>
<p>
<a href="https://matrix.to/#/#nvim-treesitter:matrix.org">
<img alt="Matrix Chat" src="https://img.shields.io/matrix/nvim-treesitter:matrix.org" />
@@ -13,608 +15,111 @@
</p>
</div>
-<div align="center">
- <p>
- <img src="assets/logo.png" align="center" alt="Logo" />
- </p>
- <p>
- <a href="https://github.com/tree-sitter/tree-sitter">Treesitter</a>
- configurations and abstraction layer for
- <a href="https://github.com/neovim/neovim/">Neovim</a>.
- </p>
- <p>
- <i>
- Logo by <a href="https://github.com/steelsojka">@steelsojka</a>
- </i>
- </p>
-</div>
-
-The goal of `nvim-treesitter` is both to provide a simple and easy way to use the interface for [tree-sitter](https://github.com/tree-sitter/tree-sitter) in Neovim and to provide some basic functionality such as highlighting based on it:
-
-![example-cpp](https://user-images.githubusercontent.com/2361214/202753610-e923bf4e-e88f-494b-bb1e-d22a7688446f.png)
-
-Traditional highlighting (left) vs Treesitter-based highlighting (right).
-More examples can be found in [our gallery](https://github.com/nvim-treesitter/nvim-treesitter/wiki/Gallery).
-
-**Warning: Treesitter and nvim-treesitter highlighting are an experimental feature of Neovim.
-Please consider the experience with this plug-in as experimental until Tree-Sitter support in Neovim is stable!
-We recommend using the nightly builds of Neovim if possible.
-You can find the current roadmap [here](https://github.com/nvim-treesitter/nvim-treesitter/issues/4767).
-The roadmap and all features of this plugin are open to change, and any suggestion will be highly appreciated!**
-
-Nvim-treesitter is based on three interlocking features: [**language parsers**](#language-parsers), [**queries**](#adding-queries), and [**modules**](#available-modules), where _modules_ provide features – e.g., highlighting – based on _queries_ for syntax objects extracted from a given buffer by _language parsers_.
-Users will generally only need to interact with parsers and modules as explained in the next section.
-For more detailed information on setting these up, see ["Advanced setup"](#advanced-setup).
-
----
-
-### Table of contents
+# WARNING
-- [Quickstart](#quickstart)
-- [Supported languages](#supported-languages)
-- [Available modules](#available-modules)
-- [Advanced setup](#advanced-setup)
-- [Extra features](#extra-features)
-- [Troubleshooting](#troubleshooting)
+**This branch is a [full, incompatible, rewrite of `nvim-treesitter`](https://github.com/nvim-treesitter/nvim-treesitter/issues/4767) and [work in progress](TODO.md). This branch REQUIRES (the latest commit on) Neovim `master`.**
----
+The `nvim-treesitter` plugin provides
+1. functions for installing, updating, and removing [**tree-sitter parsers**](SUPPORTED_LANGUAGES.md);
+2. a collection of **queries** for enabling tree-sitter features built into Neovim for these languages.
# Quickstart
## Requirements
-- **Neovim 0.10** or later ([nightly](https://github.com/neovim/neovim#install-from-source) recommended)
+- Neovim 0.10.0 or later (nightly)
- `tar` and `curl` in your path (or alternatively `git`)
-- A C compiler in your path and libstdc++ installed ([Windows users please read this!](https://github.com/nvim-treesitter/nvim-treesitter/wiki/Windows-support)).
+- a C compiler in your path and libstdc++ installed ([Windows users please read this!](https://github.com/nvim-treesitter/nvim-treesitter/wiki/Windows-support))
+- optional: `tree-sitter` CLI and `node`
## Installation
You can install `nvim-treesitter` with your favorite package manager (or using the native `package` feature of vim, see `:h packages`).
**NOTE: This plugin is only guaranteed to work with specific versions of language parsers** (as specified in the `lockfile.json`). **When upgrading the plugin, you must make sure that all installed parsers are updated to the latest version** via `:TSUpdate`.
-It is strongly recommended to automate this; e.g., if you are using [vim-plug](https://github.com/junegunn/vim-plug), put this in your `init.vim` file:
+It is strongly recommended to automate this; e.g., using [lazy.nvim](https://github.com/folke/lazy.nvim)
-```vim
-Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
-```
-
-For other plugin managers such as `packer.nvim`, see this [Installation page from the wiki](https://github.com/nvim-treesitter/nvim-treesitter/wiki/Installation) (Note that this page is community maintained).
-
-## Language parsers
-
-Treesitter uses a different _parser_ for every language, which needs to be generated via `tree-sitter-cli` from a `grammar.js` file, then compiled to a `.so` library that needs to be placed in neovim's `runtimepath` (typically under `parser/{language}.so`).
-To simplify this, `nvim-treesitter` provides commands to automate this process.
-If the language is already [supported by `nvim-treesitter`](#supported-languages), you can install it with
-
-```vim
-:TSInstall <language_to_install>
+```lua
+require('lazy').setup(
+ { 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate', lazy = false }
+)
```
-This command supports tab expansion.
-You can also get a list of all available languages and their installation status with `:TSInstallInfo`.
-Parsers not on this list can be added manually by following the steps described under ["Adding parsers"](#adding-parsers) below.
-
-To make sure a parser is at the latest compatible version (as specified in `nvim-treesitter`'s `lockfile.json`), use `:TSUpdate {language}`. To update all parsers unconditionally, use `:TSUpdate all` or just `:TSUpdate`.
+**NOTE: This plugin does not support lazy-loading.**
-## Modules
+## Setup
-Each module provides a distinct tree-sitter-based feature such as [highlighting](#highlight), [indentation](#indentation), or [folding](#folding); see [`:h nvim-treesitter-modules`](doc/nvim-treesitter.txt) or ["Available modules"](#available-modules) below for a list of modules and their options.
-
-Following examples assume that you are configuring neovim with lua. If you are using vimscript, see `:h lua-heredoc`.
-All modules are disabled by default and need to be activated explicitly in your `init.lua`, e.g., via
+`nvim-treesitter` can be configured by calling `setup`. The following snippet lists the available options and their default values. **You do not need to call `setup` for `nvim-treesitter` to work using default values.**
```lua
-require'nvim-treesitter.configs'.setup {
- -- A list of parser names, or "all" (the listed parsers MUST always be installed)
- ensure_installed = { "c", "lua", "vim", "vimdoc", "query", "markdown", "markdown_inline" },
+require'nvim-treesitter'.setup {
+ -- A list of parser names or tiers ('core', 'stable', 'community', 'unstable')
+ ensure_install = { },
+
+ -- List of parsers to ignore installing
+ ignore_install = { },
- -- Install parsers synchronously (only applied to `ensure_installed`)
+ -- Install parsers synchronously (only applied to `ensure_install`)
sync_install = false,
-- Automatically install missing parsers when entering buffer
- -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
- auto_install = true,
-
- -- List of parsers to ignore installing (or "all")
- ignore_install = { "javascript" },
-
- ---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
- -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!
+ auto_install = false,
- highlight = {
- enable = true,
-
- -- NOTE: these are the names of the parsers and not the filetype. (for example if you want to
- -- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is
- -- the name of the parser)
- -- list of language that will be disabled
- disable = { "c", "rust" },
- -- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files
- disable = function(lang, buf)
- local max_filesize = 100 * 1024 -- 100 KB
- local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
- if ok and stats and stats.size > max_filesize then
- return true
- end
- end,
-
- -- Setting this to true will run `:h syntax` and tree-sitter at the same time.
- -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
- -- Using this option may slow down your editor, and you may see some duplicate highlights.
- -- Instead of true it can also be a list of languages
- additional_vim_regex_highlighting = false,
- },
+ -- Directory to install parsers and queries to
+ install_dir = vim.fn.stdpath('data') .. '/site'
}
```
-Each module can also be enabled or disabled interactively through the following commands:
-
-```vim
-:TSBufEnable {module} " enable module on current buffer
-:TSBufDisable {module} " disable module on current buffer
-:TSEnable {module} [{ft}] " enable module on every buffer. If filetype is specified, enable only for this filetype.
-:TSDisable {module} [{ft}] " disable module on every buffer. If filetype is specified, disable only for this filetype.
-:TSModuleInfo [{module}] " list information about modules state for each filetype
-```
-
Check [`:h nvim-treesitter-commands`](doc/nvim-treesitter.txt) for a list of all available commands.
-It may be necessary to reload the buffer (e.g., via `:e`) after enabling a module interactively.
# Supported languages
For `nvim-treesitter` to support a specific feature for a specific language requires both a parser for that language and an appropriate language-specific query file for that feature.
-The following is a list of languages for which a parser can be installed through `:TSInstall`; a checked box means that `nvim-treesitter` also contains queries at least for the `highlight` module.
-
-Experimental parsers are parsers that have a maintainer but are not stable enough for
-daily use yet.
+A list of the currently supported languages can be found [on this page](SUPPORTED_LANGUAGES.md).
We are looking for maintainers to add more parsers and to write query files for their languages. Check our [tracking issue](https://github.com/nvim-treesitter/nvim-treesitter/issues/2282) for open language requests.
-<!--This section of the README is automatically updated by a CI job-->
-<!--parserinfo-->
-- [x] [ada](https://github.com/briot/tree-sitter-ada) (maintained by @briot)
-- [x] [agda](https://github.com/tree-sitter/tree-sitter-agda) (maintained by @Decodetalkers)
-- [x] [angular](https://github.com/dlvandenberg/tree-sitter-angular) (experimental, maintained by @dlvandenberg)
-- [x] [apex](https://github.com/aheber/tree-sitter-sfapex) (maintained by @aheber, @xixiaofinland)
-- [x] [arduino](https://github.com/ObserverOfTime/tree-sitter-arduino) (maintained by @ObserverOfTime)
-- [x] [asm](https://github.com/RubixDev/tree-sitter-asm) (maintained by @RubixDev)
-- [x] [astro](https://github.com/virchau13/tree-sitter-astro) (maintained by @virchau13)
-- [x] [authzed](https://github.com/mleonidas/tree-sitter-authzed) (maintained by @mattpolzin)
-- [ ] [awk](https://github.com/Beaglefoot/tree-sitter-awk)
-- [x] [bash](https://github.com/tree-sitter/tree-sitter-bash) (maintained by @TravonteD)
-- [x] [bass](https://github.com/vito/tree-sitter-bass) (maintained by @amaanq)
-- [x] [beancount](https://github.com/polarmutex/tree-sitter-beancount) (maintained by @polarmutex)
-- [x] [bibtex](https://github.com/latex-lsp/tree-sitter-bibtex) (maintained by @theHamsta, @clason)
-- [x] [bicep](https://github.com/amaanq/tree-sitter-bicep) (maintained by @amaanq)
-- [x] [bitbake](https://github.com/amaanq/tree-sitter-bitbake) (maintained by @amaanq)
-- [x] [blade](https://github.com/EmranMR/tree-sitter-blade) (maintained by @calebdw)
-- [x] [blueprint](https://gitlab.com/gabmus/tree-sitter-blueprint.git) (experimental, maintained by @gabmus)
-- [x] [bp](https://github.com/ambroisie/tree-sitter-bp) (maintained by @ambroisie)
-- [x] [brightscript](https://github.com/ajdelcimmuto/tree-sitter-brightscript) (maintained by @ajdelcimmuto)
-- [x] [c](https://github.com/tree-sitter/tree-sitter-c) (maintained by @amaanq)
-- [x] [c_sharp](https://github.com/tree-sitter/tree-sitter-c-sharp) (maintained by @amaanq)
-- [x] [caddy](https://github.com/opa-oz/tree-sitter-caddy) (maintained by @opa-oz)
-- [x] [cairo](https://github.com/amaanq/tree-sitter-cairo) (maintained by @amaanq)
-- [x] [capnp](https://github.com/amaanq/tree-sitter-capnp) (maintained by @amaanq)
-- [x] [chatito](https://github.com/ObserverOfTime/tree-sitter-chatito) (maintained by @ObserverOfTime)
-- [x] [circom](https://github.com/Decurity/tree-sitter-circom) (maintained by @alexandr-martirosyan)
-- [x] [clojure](https://github.com/sogaiu/tree-sitter-clojure) (maintained by @NoahTheDuke)
-- [x] [cmake](https://github.com/uyha/tree-sitter-cmake) (maintained by @uyha)
-- [x] [comment](https://github.com/stsewd/tree-sitter-comment) (maintained by @stsewd)
-- [x] [commonlisp](https://github.com/theHamsta/tree-sitter-commonlisp) (maintained by @theHamsta)
-- [x] [cooklang](https://github.com/addcninblue/tree-sitter-cooklang) (maintained by @addcninblue)
-- [x] [corn](https://github.com/jakestanger/tree-sitter-corn) (maintained by @jakestanger)
-- [x] [cpon](https://github.com/amaanq/tree-sitter-cpon) (maintained by @amaanq)
-- [x] [cpp](https://github.com/tree-sitter/tree-sitter-cpp) (maintained by @theHamsta)
-- [x] [css](https://github.com/tree-sitter/tree-sitter-css) (maintained by @TravonteD)
-- [x] [csv](https://github.com/amaanq/tree-sitter-csv) (maintained by @amaanq)
-- [x] [cuda](https://github.com/theHamsta/tree-sitter-cuda) (maintained by @theHamsta)
-- [x] [cue](https://github.com/eonpatapon/tree-sitter-cue) (maintained by @amaanq)
-- [x] [cylc](https://github.com/elliotfontaine/tree-sitter-cylc) (maintained by @elliotfontaine)
-- [x] [d](https://github.com/gdamore/tree-sitter-d) (maintained by @amaanq)
-- [x] [dart](https://github.com/UserNobody14/tree-sitter-dart) (maintained by @akinsho)
-- [x] [desktop](https://github.com/ValdezFOmar/tree-sitter-desktop) (maintained by @ValdezFOmar)
-- [x] [devicetree](https://github.com/joelspadin/tree-sitter-devicetree) (maintained by @jedrzejboczar)
-- [x] [dhall](https://github.com/jbellerb/tree-sitter-dhall) (maintained by @amaanq)
-- [x] [diff](https://github.com/the-mikedavis/tree-sitter-diff) (maintained by @gbprod)
-- [x] [disassembly](https://github.com/ColinKennedy/tree-sitter-disassembly) (maintained by @ColinKennedy)
-- [x] [djot](https://github.com/treeman/tree-sitter-djot) (maintained by @NoahTheDuke)
-- [x] [dockerfile](https://github.com/camdencheek/tree-sitter-dockerfile) (maintained by @camdencheek)
-- [x] [dot](https://github.com/rydesun/tree-sitter-dot) (maintained by @rydesun)
-- [x] [doxygen](https://github.com/amaanq/tree-sitter-doxygen) (maintained by @amaanq)
-- [x] [dtd](https://github.com/tree-sitter-grammars/tree-sitter-xml) (maintained by @ObserverOfTime)
-- [x] [earthfile](https://github.com/glehmann/tree-sitter-earthfile) (maintained by @glehmann)
-- [x] [ebnf](https://github.com/RubixDev/ebnf) (experimental, maintained by @RubixDev)
-- [x] [editorconfig](https://github.com/ValdezFOmar/tree-sitter-editorconfig) (maintained by @ValdezFOmar)
-- [x] [eds](https://github.com/uyha/tree-sitter-eds) (maintained by @uyha)
-- [x] [eex](https://github.com/connorlay/tree-sitter-eex) (maintained by @connorlay)
-- [x] [elixir](https://github.com/elixir-lang/tree-sitter-elixir) (maintained by @connorlay)
-- [x] [elm](https://github.com/elm-tooling/tree-sitter-elm) (maintained by @zweimach)
-- [x] [elsa](https://github.com/glapa-grossklag/tree-sitter-elsa) (maintained by @glapa-grossklag, @amaanq)
-- [x] [elvish](https://github.com/elves/tree-sitter-elvish) (maintained by @elves)
-- [ ] [embedded_template](https://github.com/tree-sitter/tree-sitter-embedded-template)
-- [x] [enforce](https://github.com/simonvic/tree-sitter-enforce) (maintained by @simonvic)
-- [x] [erlang](https://github.com/WhatsApp/tree-sitter-erlang) (maintained by @filmor)
-- [x] [facility](https://github.com/FacilityApi/tree-sitter-facility) (maintained by @bryankenote)
-- [x] [faust](https://github.com/khiner/tree-sitter-faust) (maintained by @khiner)
-- [x] [fennel](https://github.com/alexmozaidze/tree-sitter-fennel) (maintained by @alexmozaidze)
-- [x] [fidl](https://github.com/google/tree-sitter-fidl) (maintained by @chaopeng)
-- [x] [firrtl](https://github.com/amaanq/tree-sitter-firrtl) (maintained by @amaanq)
-- [x] [fish](https://github.com/ram02z/tree-sitter-fish) (maintained by @ram02z)
-- [x] [foam](https://github.com/FoamScience/tree-sitter-foam) (experimental, maintained by @FoamScience)
-- [x] [forth](https://github.com/AlexanderBrevig/tree-sitter-forth) (maintained by @amaanq)
-- [x] [fortran](https://github.com/stadelmanma/tree-sitter-fortran) (maintained by @amaanq)
-- [x] [fsh](https://github.com/mgramigna/tree-sitter-fsh) (maintained by @mgramigna)
-- [x] [fsharp](https://github.com/ionide/tree-sitter-fsharp) (maintained by @nsidorenco)
-- [x] [func](https://github.com/amaanq/tree-sitter-func) (maintained by @amaanq)
-- [x] [fusion](https://gitlab.com/jirgn/tree-sitter-fusion.git) (maintained by @jirgn)
-- [x] [GAP system](https://github.com/gap-system/tree-sitter-gap) (maintained by @reiniscirpons)
-- [x] [GAP system test files](https://github.com/gap-system/tree-sitter-gaptst) (maintained by @reiniscirpons)
-- [x] [Godot (gdscript)](https://github.com/PrestonKnopp/tree-sitter-gdscript) (maintained by @PrestonKnopp)
-- [x] [gdshader](https://github.com/GodOfAvacyn/tree-sitter-gdshader) (maintained by @godofavacyn)
-- [x] [git_config](https://github.com/the-mikedavis/tree-sitter-git-config) (maintained by @amaanq)
-- [x] [git_rebase](https://github.com/the-mikedavis/tree-sitter-git-rebase) (maintained by @gbprod)
-- [x] [gitattributes](https://github.com/ObserverOfTime/tree-sitter-gitattributes) (maintained by @ObserverOfTime)
-- [x] [gitcommit](https://github.com/gbprod/tree-sitter-gitcommit) (maintained by @gbprod)
-- [x] [gitignore](https://github.com/shunsambongi/tree-sitter-gitignore) (maintained by @theHamsta)
-- [x] [gleam](https://github.com/gleam-lang/tree-sitter-gleam) (maintained by @amaanq)
-- [x] [Glimmer and Ember](https://github.com/ember-tooling/tree-sitter-glimmer) (maintained by @NullVoxPopuli)
-- [x] [glimmer_javascript](https://github.com/NullVoxPopuli/tree-sitter-glimmer-javascript) (maintained by @NullVoxPopuli)
-- [x] [glimmer_typescript](https://github.com/NullVoxPopuli/tree-sitter-glimmer-typescript) (maintained by @NullVoxPopuli)
-- [x] [glsl](https://github.com/theHamsta/tree-sitter-glsl) (maintained by @theHamsta)
-- [x] [GN (Generate Ninja)](https://github.com/amaanq/tree-sitter-gn) (maintained by @amaanq)
-- [x] [gnuplot](https://github.com/dpezto/tree-sitter-gnuplot) (maintained by @dpezto)
-- [x] [go](https://github.com/tree-sitter/tree-sitter-go) (maintained by @theHamsta, @WinWisely268)
-- [x] [goctl](https://github.com/chaozwn/tree-sitter-goctl) (maintained by @chaozwn)
-- [x] [Godot Resources (gdresource)](https://github.com/PrestonKnopp/tree-sitter-godot-resource) (maintained by @pierpo)
-- [x] [gomod](https://github.com/camdencheek/tree-sitter-go-mod) (maintained by @camdencheek)
-- [x] [gosum](https://github.com/amaanq/tree-sitter-go-sum) (maintained by @amaanq)
-- [x] [gotmpl](https://github.com/ngalaiko/tree-sitter-go-template) (maintained by @qvalentin)
-- [x] [gowork](https://github.com/omertuc/tree-sitter-go-work) (maintained by @omertuc)
-- [x] [gpg](https://github.com/ObserverOfTime/tree-sitter-gpg-config) (maintained by @ObserverOfTime)
-- [x] [graphql](https://github.com/bkegley/tree-sitter-graphql) (maintained by @bkegley)
-- [x] [gren](https://github.com/MaeBrooks/tree-sitter-gren) (maintained by @MaeBrooks)
-- [x] [groovy](https://github.com/murtaza64/tree-sitter-groovy) (maintained by @murtaza64)
-- [x] [gstlaunch](https://github.com/theHamsta/tree-sitter-gstlaunch) (maintained by @theHamsta)
-- [ ] [hack](https://github.com/slackhq/tree-sitter-hack)
-- [x] [hare](https://github.com/amaanq/tree-sitter-hare) (maintained by @amaanq)
-- [x] [haskell](https://github.com/tree-sitter/tree-sitter-haskell) (maintained by @mrcjkb)
-- [x] [haskell_persistent](https://github.com/MercuryTechnologies/tree-sitter-haskell-persistent) (maintained by @lykahb)
-- [x] [hcl](https://github.com/MichaHoffmann/tree-sitter-hcl) (maintained by @MichaHoffmann)
-- [x] [heex](https://github.com/connorlay/tree-sitter-heex) (maintained by @connorlay)
-- [x] [helm](https://github.com/ngalaiko/tree-sitter-go-template) (maintained by @qvalentin)
-- [x] [hjson](https://github.com/winston0410/tree-sitter-hjson) (maintained by @winston0410)
-- [x] [hlsl](https://github.com/theHamsta/tree-sitter-hlsl) (maintained by @theHamsta)
-- [x] [hlsplaylist](https://github.com/Freed-Wu/tree-sitter-hlsplaylist) (maintained by @Freed-Wu)
-- [x] [hocon](https://github.com/antosha417/tree-sitter-hocon) (maintained by @antosha417)
-- [x] [hoon](https://github.com/urbit-pilled/tree-sitter-hoon) (experimental, maintained by @urbit-pilled)
-- [x] [html](https://github.com/tree-sitter/tree-sitter-html) (maintained by @TravonteD)
-- [x] [htmldjango](https://github.com/interdependence/tree-sitter-htmldjango) (experimental, maintained by @ObserverOfTime)
-- [x] [http](https://github.com/rest-nvim/tree-sitter-http) (maintained by @amaanq, @NTBBloodbath)
-- [x] [hurl](https://github.com/pfeiferj/tree-sitter-hurl) (maintained by @pfeiferj)
-- [x] [hyprlang](https://github.com/luckasRanarison/tree-sitter-hyprlang) (maintained by @luckasRanarison)
-- [x] [idl](https://github.com/cathaysia/tree-sitter-idl) (maintained by @cathaysia)
-- [x] [idris](https://github.com/kayhide/tree-sitter-idris) (maintained by @srghma)
-- [x] [ini](https://github.com/justinmk/tree-sitter-ini) (experimental, maintained by @theHamsta)
-- [x] [inko](https://github.com/inko-lang/tree-sitter-inko) (maintained by @yorickpeterse)
-- [x] [ipkg](https://github.com/srghma/tree-sitter-ipkg) (maintained by @srghma)
-- [x] [ispc](https://github.com/fab4100/tree-sitter-ispc) (maintained by @fab4100)
-- [x] [janet_simple](https://github.com/sogaiu/tree-sitter-janet-simple) (maintained by @sogaiu)
-- [x] [java](https://github.com/tree-sitter/tree-sitter-java) (maintained by @p00f)
-- [x] [javadoc](https://github.com/rmuir/tree-sitter-javadoc) (maintained by @rmuir)
-- [x] [javascript](https://github.com/tree-sitter/tree-sitter-javascript) (maintained by @steelsojka)
-- [x] [jinja](https://github.com/cathaysia/tree-sitter-jinja) (maintained by @cathaysia)
-- [x] [jinja_inline](https://github.com/cathaysia/tree-sitter-jinja) (maintained by @cathaysia)
-- [x] [jq](https://github.com/flurie/tree-sitter-jq) (maintained by @ObserverOfTime)
-- [x] [jsdoc](https://github.com/tree-sitter/tree-sitter-jsdoc) (maintained by @steelsojka)
-- [x] [json](https://github.com/tree-sitter/tree-sitter-json) (maintained by @steelsojka)
-- [x] [json5](https://github.com/Joakker/tree-sitter-json5) (maintained by @Joakker)
-- [x] [JSON with comments](https://gitlab.com/WhyNotHugo/tree-sitter-jsonc.git) (maintained by @WhyNotHugo)
-- [x] [jsonnet](https://github.com/sourcegraph/tree-sitter-jsonnet) (maintained by @nawordar)
-- [x] [julia](https://github.com/tree-sitter/tree-sitter-julia) (maintained by @fredrikekre)
-- [x] [just](https://github.com/IndianBoy42/tree-sitter-just) (maintained by @Hubro)
-- [x] [kcl](https://github.com/kcl-lang/tree-sitter-kcl) (maintained by @bertbaron)
-- [x] [kconfig](https://github.com/amaanq/tree-sitter-kconfig) (maintained by @amaanq)
-- [x] [kdl](https://github.com/amaanq/tree-sitter-kdl) (maintained by @amaanq)
-- [x] [kotlin](https://github.com/fwcd/tree-sitter-kotlin) (maintained by @SalBakraa)
-- [x] [koto](https://github.com/koto-lang/tree-sitter-koto) (maintained by @irh)
-- [x] [kusto](https://github.com/Willem-J-an/tree-sitter-kusto) (maintained by @Willem-J-an)
-- [x] [lalrpop](https://github.com/traxys/tree-sitter-lalrpop) (maintained by @traxys)
-- [x] [latex](https://github.com/latex-lsp/tree-sitter-latex) (maintained by @theHamsta, @clason)
-- [x] [ledger](https://github.com/cbarrete/tree-sitter-ledger) (maintained by @cbarrete)
-- [x] [leo](https://github.com/r001/tree-sitter-leo) (maintained by @r001)
-- [x] [linkerscript](https://github.com/amaanq/tree-sitter-linkerscript) (maintained by @amaanq)
-- [x] [liquid](https://github.com/hankthetank27/tree-sitter-liquid) (maintained by @hankthetank27)
-- [x] [liquidsoap](https://github.com/savonet/tree-sitter-liquidsoap) (maintained by @toots)
-- [x] [llvm](https://github.com/benwilliamgraham/tree-sitter-llvm) (maintained by @benwilliamgraham)
-- [x] [lua](https://github.com/MunifTanjim/tree-sitter-lua) (maintained by @muniftanjim)
-- [x] [luadoc](https://github.com/amaanq/tree-sitter-luadoc) (maintained by @amaanq)
-- [x] [lua patterns](https://github.com/amaanq/tree-sitter-luap) (maintained by @amaanq)
-- [x] [luau](https://github.com/amaanq/tree-sitter-luau) (maintained by @amaanq)
-- [x] [m68k](https://github.com/grahambates/tree-sitter-m68k) (maintained by @grahambates)
-- [x] [make](https://github.com/alemuller/tree-sitter-make) (maintained by @lewis6991)
-- [x] [markdown (basic highlighting)](https://github.com/MDeiml/tree-sitter-markdown) (experimental, maintained by @MDeiml)
-- [x] [markdown_inline (needed for full highlighting)](https://github.com/MDeiml/tree-sitter-markdown) (experimental, maintained by @MDeiml)
-- [x] [matlab](https://github.com/acristoffers/tree-sitter-matlab) (maintained by @acristoffers)
-- [x] [menhir](https://github.com/Kerl13/tree-sitter-menhir) (maintained by @Kerl13)
-- [ ] [mermaid](https://github.com/monaqa/tree-sitter-mermaid) (experimental)
-- [x] [meson](https://github.com/Decodetalkers/tree-sitter-meson) (maintained by @Decodetalkers)
-- [x] [mlir](https://github.com/artagnon/tree-sitter-mlir) (experimental, maintained by @artagnon)
-- [x] [muttrc](https://github.com/neomutt/tree-sitter-muttrc) (maintained by @Freed-Wu)
-- [x] [nasm](https://github.com/naclsn/tree-sitter-nasm) (maintained by @ObserverOfTime)
-- [x] [nginx](https://github.com/opa-oz/tree-sitter-nginx) (maintained by @opa-oz)
-- [ ] [nickel](https://github.com/nickel-lang/tree-sitter-nickel)
-- [x] [nim](https://github.com/alaviss/tree-sitter-nim) (maintained by @aMOPel)
-- [x] [nim_format_string](https://github.com/aMOPel/tree-sitter-nim-format-string) (maintained by @aMOPel)
-- [x] [ninja](https://github.com/alemuller/tree-sitter-ninja) (maintained by @alemuller)
-- [x] [nix](https://github.com/cstrahan/tree-sitter-nix) (maintained by @leo60228)
-- [x] [norg](https://github.com/nvim-neorg/tree-sitter-norg) (maintained by @JoeyGrajciar, @vhyrro)
-- [x] [nqc](https://github.com/amaanq/tree-sitter-nqc) (maintained by @amaanq)
-- [x] [nu](https://github.com/nushell/tree-sitter-nu) (maintained by @abhisheksingh0x558)
-- [x] [objc](https://github.com/amaanq/tree-sitter-objc) (maintained by @amaanq)
-- [x] [objdump](https://github.com/ColinKennedy/tree-sitter-objdump) (maintained by @ColinKennedy)
-- [x] [ocaml](https://github.com/tree-sitter/tree-sitter-ocaml) (maintained by @undu)
-- [x] [ocaml_interface](https://github.com/tree-sitter/tree-sitter-ocaml) (maintained by @undu)
-- [x] [ocamllex](https://github.com/atom-ocaml/tree-sitter-ocamllex) (maintained by @undu)
-- [x] [odin](https://github.com/amaanq/tree-sitter-odin) (maintained by @amaanq)
-- [x] [pascal](https://github.com/Isopod/tree-sitter-pascal) (maintained by @Isopod)
-- [x] [passwd](https://github.com/ath3/tree-sitter-passwd) (maintained by @amaanq)
-- [x] [pem](https://github.com/ObserverOfTime/tree-sitter-pem) (maintained by @ObserverOfTime)
-- [x] [perl](https://github.com/tree-sitter-perl/tree-sitter-perl) (maintained by @RabbiVeesh, @LeoNerd)
-- [x] [php](https://github.com/tree-sitter/tree-sitter-php) (maintained by @tk-shirasaka, @calebdw)
-- [x] [php_only](https://github.com/tree-sitter/tree-sitter-php) (maintained by @tk-shirasaka, @calebdw)
-- [x] [phpdoc](https://github.com/claytonrcarter/tree-sitter-phpdoc) (experimental, maintained by @mikehaertl)
-- [x] [pioasm](https://github.com/leo60228/tree-sitter-pioasm) (maintained by @leo60228)
-- [x] [po](https://github.com/erasin/tree-sitter-po) (maintained by @amaanq)
-- [x] [pod](https://github.com/tree-sitter-perl/tree-sitter-pod) (maintained by @RabbiVeesh, @LeoNerd)
-- [x] [Path of Exile item filter](https://github.com/ObserverOfTime/tree-sitter-poe-filter) (experimental, maintained by @ObserverOfTime)
-- [x] [pony](https://github.com/amaanq/tree-sitter-pony) (maintained by @amaanq, @mfelsche)
-- [x] [powershell](https://github.com/airbus-cert/tree-sitter-powershell) (maintained by @L2jLiga)
-- [x] [printf](https://github.com/ObserverOfTime/tree-sitter-printf) (maintained by @ObserverOfTime)
-- [x] [prisma](https://github.com/victorhqc/tree-sitter-prisma) (maintained by @elianiva)
-- [x] [problog](https://github.com/foxyseta/tree-sitter-prolog) (maintained by @foxyseta)
-- [x] [prolog](https://github.com/foxyseta/tree-sitter-prolog) (maintained by @foxyseta)
-- [x] [promql](https://github.com/MichaHoffmann/tree-sitter-promql) (maintained by @MichaHoffmann)
-- [x] [properties](https://github.com/tree-sitter-grammars/tree-sitter-properties) (maintained by @ObserverOfTime)
-- [x] [proto](https://github.com/treywood/tree-sitter-proto) (maintained by @treywood)
-- [x] [prql](https://github.com/PRQL/tree-sitter-prql) (maintained by @matthias-Q)
-- [x] [psv](https://github.com/amaanq/tree-sitter-csv) (maintained by @amaanq)
-- [x] [pug](https://github.com/zealot128/tree-sitter-pug) (experimental, maintained by @zealot128)
-- [x] [puppet](https://github.com/amaanq/tree-sitter-puppet) (maintained by @amaanq)
-- [x] [purescript](https://github.com/postsolar/tree-sitter-purescript) (maintained by @postsolar)
-- [x] [PyPA manifest](https://github.com/ObserverOfTime/tree-sitter-pymanifest) (maintained by @ObserverOfTime)
-- [x] [python](https://github.com/tree-sitter/tree-sitter-python) (maintained by @stsewd, @theHamsta)
-- [x] [ql](https://github.com/tree-sitter/tree-sitter-ql) (maintained by @pwntester)
-- [x] [qmldir](https://github.com/Decodetalkers/tree-sitter-qmldir) (maintained by @amaanq)
-- [x] [qmljs](https://github.com/yuja/tree-sitter-qmljs) (maintained by @Decodetalkers)
-- [x] [Tree-Sitter query language](https://github.com/nvim-treesitter/tree-sitter-query) (maintained by @steelsojka)
-- [x] [r](https://github.com/r-lib/tree-sitter-r) (maintained by @ribru17)
-- [ ] [racket](https://github.com/6cdh/tree-sitter-racket)
-- [x] [ralph](https://github.com/alephium/tree-sitter-ralph) (maintained by @tdroxler)
-- [x] [rasi](https://github.com/Fymyte/tree-sitter-rasi) (maintained by @Fymyte)
-- [x] [razor](https://github.com/tris203/tree-sitter-razor) (maintained by @tris203)
-- [x] [rbs](https://github.com/joker1007/tree-sitter-rbs) (maintained by @joker1007)
-- [x] [re2c](https://github.com/amaanq/tree-sitter-re2c) (maintained by @amaanq)
-- [x] [readline](https://github.com/ribru17/tree-sitter-readline) (maintained by @ribru17)
-- [x] [regex](https://github.com/tree-sitter/tree-sitter-regex) (maintained by @theHamsta)
-- [x] [rego](https://github.com/FallenAngel97/tree-sitter-rego) (maintained by @FallenAngel97)
-- [x] [pip requirements](https://github.com/ObserverOfTime/tree-sitter-requirements) (maintained by @ObserverOfTime)
-- [x] [rescript](https://github.com/rescript-lang/tree-sitter-rescript) (maintained by @ribru17)
-- [x] [rnoweb](https://github.com/bamonroe/tree-sitter-rnoweb) (maintained by @bamonroe)
-- [x] [robot](https://github.com/Hubro/tree-sitter-robot) (maintained by @Hubro)
-- [x] [robots](https://github.com/opa-oz/tree-sitter-robots-txt) (maintained by @opa-oz)
-- [x] [roc](https://github.com/faldor20/tree-sitter-roc) (maintained by @nat-418)
-- [x] [ron](https://github.com/amaanq/tree-sitter-ron) (maintained by @amaanq)
-- [x] [rst](https://github.com/stsewd/tree-sitter-rst) (maintained by @stsewd)
-- [x] [ruby](https://github.com/tree-sitter/tree-sitter-ruby) (maintained by @TravonteD)
-- [x] [runescript](https://github.com/2004Scape/tree-sitter-runescript) (maintained by @2004Scape)
-- [x] [rust](https://github.com/tree-sitter/tree-sitter-rust) (maintained by @amaanq)
-- [x] [scala](https://github.com/tree-sitter/tree-sitter-scala) (maintained by @stevanmilic)
-- [x] [scfg](https://github.com/rockorager/tree-sitter-scfg) (maintained by @WhyNotHugo)
-- [ ] [scheme](https://github.com/6cdh/tree-sitter-scheme)
-- [x] [scss](https://github.com/serenadeai/tree-sitter-scss) (maintained by @elianiva)
-- [x] [sflog](https://github.com/aheber/tree-sitter-sfapex) (maintained by @aheber, @xixiaofinland)
-- [x] [slang](https://github.com/theHamsta/tree-sitter-slang) (experimental, maintained by @theHamsta)
-- [x] [slim](https://github.com/theoo/tree-sitter-slim) (maintained by @theoo)
-- [x] [slint](https://github.com/slint-ui/tree-sitter-slint) (maintained by @hunger)
-- [x] [smali](https://github.com/tree-sitter-grammars/tree-sitter-smali) (maintained by @amaanq)
-- [x] [smithy](https://github.com/indoorvivants/tree-sitter-smithy) (maintained by @amaanq, @keynmol)
-- [ ] [snakemake](https://github.com/osthomas/tree-sitter-snakemake) (experimental)
-- [x] [solidity](https://github.com/JoranHonig/tree-sitter-solidity) (maintained by @amaanq)
-- [x] [soql](https://github.com/aheber/tree-sitter-sfapex) (maintained by @aheber, @xixiaofinland)
-- [x] [sosl](https://github.com/aheber/tree-sitter-sfapex) (maintained by @aheber, @xixiaofinland)
-- [x] [sourcepawn](https://github.com/nilshelmig/tree-sitter-sourcepawn) (maintained by @Sarrus1)
-- [x] [sparql](https://github.com/GordianDziwis/tree-sitter-sparql) (maintained by @GordianDziwis)
-- [x] [sql](https://github.com/derekstride/tree-sitter-sql) (maintained by @derekstride)
-- [x] [squirrel](https://github.com/amaanq/tree-sitter-squirrel) (maintained by @amaanq)
-- [x] [ssh_config](https://github.com/ObserverOfTime/tree-sitter-ssh-config) (maintained by @ObserverOfTime)
-- [x] [starlark](https://github.com/amaanq/tree-sitter-starlark) (maintained by @amaanq)
-- [x] [strace](https://github.com/sigmaSd/tree-sitter-strace) (maintained by @amaanq)
-- [x] [styled](https://github.com/mskelton/tree-sitter-styled) (maintained by @mskelton)
-- [x] [supercollider](https://github.com/madskjeldgaard/tree-sitter-supercollider) (maintained by @madskjeldgaard)
-- [x] [superhtml](https://github.com/kristoff-it/superhtml) (maintained by @rockorager)
-- [x] [surface](https://github.com/connorlay/tree-sitter-surface) (maintained by @connorlay)
-- [x] [svelte](https://github.com/tree-sitter-grammars/tree-sitter-svelte) (maintained by @amaanq)
-- [x] [sway](https://github.com/FuelLabs/tree-sitter-sway.git) (maintained by @ribru17)
-- [x] [swift](https://github.com/alex-pinkus/tree-sitter-swift) (maintained by @alex-pinkus)
-- [x] [sxhkdrc](https://github.com/RaafatTurki/tree-sitter-sxhkdrc) (maintained by @RaafatTurki)
-- [x] [systemtap](https://github.com/ok-ryoko/tree-sitter-systemtap) (maintained by @ok-ryoko)
-- [x] [t32](https://gitlab.com/xasc/tree-sitter-t32.git) (maintained by @xasc)
-- [x] [tablegen](https://github.com/amaanq/tree-sitter-tablegen) (maintained by @amaanq)
-- [x] [tact](https://github.com/tact-lang/tree-sitter-tact) (maintained by @novusnota)
-- [x] [tcl](https://github.com/tree-sitter-grammars/tree-sitter-tcl) (maintained by @lewis6991)
-- [x] [teal](https://github.com/euclidianAce/tree-sitter-teal) (maintained by @euclidianAce)
-- [x] [templ](https://github.com/vrischmann/tree-sitter-templ) (maintained by @vrischmann)
-- [x] [tera](https://github.com/uncenter/tree-sitter-tera) (maintained by @uncenter)
-- [x] [terraform](https://github.com/MichaHoffmann/tree-sitter-hcl) (maintained by @MichaHoffmann)
-- [x] [textproto](https://github.com/PorterAtGoogle/tree-sitter-textproto) (maintained by @Porter)
-- [x] [thrift](https://github.com/duskmoon314/tree-sitter-thrift) (maintained by @amaanq, @duskmoon314)
-- [x] [tiger](https://github.com/ambroisie/tree-sitter-tiger) (maintained by @ambroisie)
-- [x] [tlaplus](https://github.com/tlaplus-community/tree-sitter-tlaplus) (maintained by @ahelwer, @susliko)
-- [x] [tmux](https://github.com/Freed-Wu/tree-sitter-tmux) (maintained by @Freed-Wu)
-- [x] [todotxt](https://github.com/arnarg/tree-sitter-todotxt) (experimental, maintained by @arnarg)
-- [x] [toml](https://github.com/tree-sitter-grammars/tree-sitter-toml) (maintained by @tk-shirasaka)
-- [x] [tsv](https://github.com/amaanq/tree-sitter-csv) (maintained by @amaanq)
-- [x] [tsx](https://github.com/tree-sitter/tree-sitter-typescript) (maintained by @steelsojka)
-- [x] [turtle](https://github.com/GordianDziwis/tree-sitter-turtle) (maintained by @GordianDziwis)
-- [x] [twig](https://github.com/gbprod/tree-sitter-twig) (maintained by @gbprod)
-- [x] [typescript](https://github.com/tree-sitter/tree-sitter-typescript) (maintained by @steelsojka)
-- [x] [typespec](https://github.com/happenslol/tree-sitter-typespec) (maintained by @happenslol)
-- [x] [typoscript](https://github.com/Teddytrombone/tree-sitter-typoscript) (maintained by @Teddytrombone)
-- [x] [typst](https://github.com/uben0/tree-sitter-typst) (maintained by @uben0, @RaafatTurki)
-- [x] [udev](https://github.com/ObserverOfTime/tree-sitter-udev) (maintained by @ObserverOfTime)
-- [x] [ungrammar](https://github.com/Philipp-M/tree-sitter-ungrammar) (maintained by @Philipp-M, @amaanq)
-- [x] [unison](https://github.com/kylegoetz/tree-sitter-unison) (maintained by @tapegram)
-- [x] [usd](https://github.com/ColinKennedy/tree-sitter-usd) (maintained by @ColinKennedy)
-- [x] [uxn tal](https://github.com/amaanq/tree-sitter-uxntal) (maintained by @amaanq)
-- [x] [v](https://github.com/vlang/v-analyzer) (maintained by @kkharji, @amaanq)
-- [x] [vala](https://github.com/vala-lang/tree-sitter-vala) (maintained by @Prince781)
-- [x] [vento](https://github.com/ventojs/tree-sitter-vento) (maintained by @wrapperup, @oscarotero)
-- [x] [verilog](https://github.com/gmlarumbe/tree-sitter-systemverilog) (maintained by @zhangwwpeng)
-- [x] [vhdl](https://github.com/jpt13653903/tree-sitter-vhdl) (maintained by @jpt13653903)
-- [x] [vhs](https://github.com/charmbracelet/tree-sitter-vhs) (maintained by @caarlos0)
-- [x] [vim](https://github.com/neovim/tree-sitter-vim) (maintained by @clason)
-- [x] [vimdoc](https://github.com/neovim/tree-sitter-vimdoc) (maintained by @clason)
-- [x] [vrl](https://github.com/belltoy/tree-sitter-vrl) (maintained by @belltoy)
-- [x] [vue](https://github.com/tree-sitter-grammars/tree-sitter-vue) (maintained by @WhyNotHugo, @lucario387)
-- [x] [wgsl](https://github.com/szebniok/tree-sitter-wgsl) (maintained by @szebniok)
-- [x] [wgsl_bevy](https://github.com/theHamsta/tree-sitter-wgsl-bevy) (maintained by @theHamsta)
-- [x] [wing](https://github.com/winglang/tree-sitter-wing) (maintained by @gshpychka, @MarkMcCulloh)
-- [x] [wit](https://github.com/liamwh/tree-sitter-wit) (maintained by @liamwh)
-- [x] [xcompose](https://github.com/ObserverOfTime/tree-sitter-xcompose) (maintained by @ObserverOfTime)
-- [x] [xml](https://github.com/tree-sitter-grammars/tree-sitter-xml) (maintained by @ObserverOfTime)
-- [x] [xresources](https://github.com/ValdezFOmar/tree-sitter-xresources) (maintained by @ValdezFOmar)
-- [x] [yaml](https://github.com/tree-sitter-grammars/tree-sitter-yaml) (maintained by @amaanq)
-- [x] [yang](https://github.com/Hubro/tree-sitter-yang) (maintained by @Hubro)
-- [x] [yuck](https://github.com/Philipp-M/tree-sitter-yuck) (maintained by @Philipp-M, @amaanq)
-- [x] [zathurarc](https://github.com/Freed-Wu/tree-sitter-zathurarc) (maintained by @Freed-Wu)
-- [x] [zig](https://github.com/tree-sitter-grammars/tree-sitter-zig) (maintained by @amaanq)
-- [x] [ziggy](https://github.com/kristoff-it/ziggy) (maintained by @rockorager)
-- [x] [ziggy_schema](https://github.com/kristoff-it/ziggy) (maintained by @rockorager)
-<!--parserinfo-->
-
For related information on the supported languages, including related plugins, see [this wiki page](https://github.com/nvim-treesitter/nvim-treesitter/wiki/Supported-Languages-Information).
-# Available modules
-
-Modules provide the top-level features of `nvim-treesitter`.
-The following is a list of modules included in `nvim-treesitter` and their configuration via `init.lua` (where multiple modules can be combined in a single call to `setup`).
-Note that not all modules work for all languages (depending on the queries available for them).
-Additional modules can be provided as [external plugins](https://github.com/nvim-treesitter/nvim-treesitter/wiki/Extra-modules-and-plugins).
-
-#### Highlight
-
-Consistent syntax highlighting.
-
-```lua
-require'nvim-treesitter.configs'.setup {
- highlight = {
- enable = true,
- -- Setting this to true will run `:h syntax` and tree-sitter at the same time.
- -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
- -- Using this option may slow down your editor, and you may see some duplicate highlights.
- -- Instead of true it can also be a list of languages
- additional_vim_regex_highlighting = false,
- },
-}
-```
-
-To customize the syntax highlighting of a capture, simply define or link a highlight group of the same name:
+# Supported features
-```lua
--- Highlight the @foo.bar capture group with the "Identifier" highlight group
-vim.api.nvim_set_hl(0, "@foo.bar", { link = "Identifier" })
-```
-
-For a language-specific highlight, append the name of the language:
-
-```lua
--- Highlight @foo.bar as "Identifier" only in Lua files
-vim.api.nvim_set_hl(0, "@foo.bar.lua", { link = "Identifier" })
-```
-
-See `:h treesitter-highlight-groups` for details.
-
-#### Incremental selection
-
-Incremental selection based on the named nodes from the grammar.
-
-```lua
-require'nvim-treesitter.configs'.setup {
- incremental_selection = {
- enable = true,
- keymaps = {
- init_selection = "gnn", -- set to `false` to disable one of the mappings
- node_incremental = "grn",
- scope_incremental = "grc",
- node_decremental = "grm",
- },
- },
-}
-```
+`nvim-treesitter` provides queries for the following features. **These are not automatically enabled.**
-#### Indentation
+## Highlighting
-Indentation based on treesitter for the `=` operator.
-**NOTE: This is an experimental feature**.
+Treesitter highlighting is provided by Neovim, see `:h treesitter-highlight`. To enable it for a filetype, put `vim.treesitter.start()` in a `ftplugin/<filetype>.lua` in your config directory, or place the following in your `init.lua`:
```lua
-require'nvim-treesitter.configs'.setup {
- indent = {
- enable = true
- }
-}
+vim.api.nvim_create_autocmd('FileType', {
+ pattern = { '<filetype>' },
+ callback = function() vim.treesitter.start() end,
+})
```
-#### Folding
+## Folds
-Tree-sitter based folding (implemented in Neovim itself, see `:h vim.treesitter.foldexpr()`). To enable it for the current window, set
+Treesitter-based folding is provided by Neovim. To enable it, put the following in your `ftplugin` or `FileType` autocommand:
```lua
-vim.wo.foldmethod = 'expr'
vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
```
-This will respect your `foldminlines` and `foldnestmax` settings.
-
-# Advanced setup
-
-## Changing the parser install directory
+## Indentation
-If you want to install the parsers to a custom directory you can specify this
-directory with `parser_install_dir` option in that is passed to `setup`.
-`nvim-treesitter` will then install the parser files into this directory.
-
-This directory must be writeable and must be explicitly prepended to the
-`runtimepath`. For example:
+Treesitter-based indentation is provided by this plugin but considered **experimental**. To enable it, put the following in your `ftplugin` or `FileType` autocommand:
```lua
- -- It MUST be at the beginning of runtimepath. Otherwise the parsers from Neovim itself
- -- is loaded that may not be compatible with the queries from the 'nvim-treesitter' plugin.
- vim.opt.runtimepath:prepend("/some/path/to/store/parsers")
-
- require'nvim-treesitter.configs'.setup {
- parser_install_dir = "/some/path/to/store/parsers",
-
- ...
-
- }
+vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
```
-If this option is not included in the setup options, or is explicitly set to
-`nil` then the default install directories will be used. If this value is set
-the default directories will be ignored.
+(Note the specific quotes used.)
-Bear in mind that any parser installed into a parser folder on the runtime path
-will still be considered installed. (For example if
-"~/.local/share/nvim/site/parser/c.so" exists then the "c" parser will be
-considered installed, even though it is not in `parser_install_dir`)
+## Injections
-The default paths are:
+Injections are used for multi-language documents, see `:h treesitter-language-injections`. No setup is needed.
-1. first the package folder. Where `nvim-treesitter` is installed.
-2. second the site directory. This is the "site" subdirectory of `stdpath("data")`.
+# Advanced setup
## Adding parsers
@@ -625,139 +130,56 @@ If you have a parser that is not on the list of supported languages (either as a
3. Add the following snippet to your `init.lua`:
```lua
-local parser_config = require "nvim-treesitter.parsers".get_parser_configs()
+local parser_config = require "nvim-treesitter.parsers".configs
parser_config.zimbu = {
install_info = {
url = "~/projects/tree-sitter-zimbu", -- local path or git repo
files = {"src/parser.c"}, -- note that some parsers also require src/scanner.c or src/scanner.cc
-- optional entries:
- branch = "main", -- default branch in case of git repo if different from master
+ branch = "develop", -- only needed if different from default branch
generate_requires_npm = false, -- if stand-alone parser without npm dependencies
requires_generate_from_grammar = false, -- if folder contains pre-generated src/parser.c
},
- filetype = "zu", -- if filetype does not match the parser name
}
```
+If you use a git repository for your parser and want to use a specific version, you can set the `revision` key
+in the `install_info` table for you parser config.
-If you wish to set a specific parser for a filetype, you should use `vim.treesitter.language.register()`:
+4. If the parser name differs from the filetype(s) used by Neovim, you need to register the parser via
```lua
-vim.treesitter.language.register('python', 'someft') -- the someft filetype will use the python parser and queries.
+vim.treesitter.language.register('zimbu', { 'zu' })
```
-Note this requires Nvim v0.9.
+If Neovim does not detect your language's filetype by default, you can use [Neovim's `vim.filetype.add()`](<https://neovim.io/doc/user/lua.html#vim.filetype.add()>) to add a custom detection rule.
-4. Start `nvim` and `:TSInstall zimbu`.
+5. Start `nvim` and `:TSInstall zimbu`.
You can also skip step 2 and use `:TSInstallFromGrammar zimbu` to install directly from a `grammar.js` in the top-level directory specified by `url`.
Once the parser is installed, you can update it (from the latest revision of the `main` branch if `url` is a Github repository) with `:TSUpdate zimbu`.
-Note that neither `:TSInstall` nor `:TSInstallFromGrammar` copy query files from the grammar repository.
-If you want your installed grammar to be useful, you must manually [add query files](#adding-queries) to your local nvim-treesitter installation.
-Note also that module functionality is only triggered if your language's filetype is correctly identified.
-If Neovim does not detect your language's filetype by default, you can use [Neovim's `vim.filetype.add()`](<https://neovim.io/doc/user/lua.html#vim.filetype.add()>) to add a custom detection rule.
-
-If you use a git repository for your parser and want to use a specific version, you can set the `revision` key
-in the `install_info` table for you parser config.
## Adding queries
-Queries are what `nvim-treesitter` uses to extract information from the syntax tree;
-they are located in the `queries/{language}/*` runtime directories (see `:h rtp`),
-like the `queries` folder of this plugin, e.g. `queries/{language}/{locals,highlights,textobjects}.scm`.
-Other modules may require additional queries such as `folding.scm`. You can find a
-list of all supported capture names in [CONTRIBUTING.md](https://github.com/nvim-treesitter/nvim-treesitter/blob/master/CONTRIBUTING.md#parser-configurations).
-
-The first query file on `runtimepath` will be used (see `:h treesitter-query`).
-If you want to make a query on the user config extend other queries instead of
-replacing them, see `:h treesitter-query-modeline-extends`.
-
-If you want to completely override a query, you can use `:h vim.treesitter.query.set()`.
-For example, to override the `injections` queries from `c` with your own:
-
-```lua
-vim.treesitter.query.set("c", "injections", "(comment) @comment")
-```
-
-Note: when using `query.set()`, all queries in the runtime directories will be ignored.
-
-## Adding modules
-
-If you wish you write your own module, you need to support
-
-- tree-sitter language detection support;
-- attaching and detaching to buffers;
-- all nvim-treesitter commands.
-
-At the top level, you can use the `define_modules` function to define one or more modules or module groups:
+Queries can be placed anywhere in your `runtimepath` under `queries/<language>`, with earlier directories taking precedence unless the queries are marked with `; extends`; see `:h treesitter-query`.
+E.g., to add queries for `zimbu`, put `highlights.scm` etc. under
```lua
-require'nvim-treesitter'.define_modules {
- my_cool_plugin = {
- attach = function(bufnr, lang)
- -- Do cool stuff here
- end,
- detach = function(bufnr)
- -- Undo cool stuff here
- end,
- is_supported = function(lang)
- -- Check if the language is supported
- end
- }
-}
+vim.fn.stdpath('data') .. 'site/queries/zimbu'
```
-with the following properties:
-
-- `module_path` specifies a require path (string) that exports a module with an `attach` and `detach` function. This is not required if the functions are on this definition.
-- `enable` determines if the module is enabled by default. This is usually overridden by the user.
-- `disable` takes a list of languages that this module is disabled for. This is usually overridden by the user.
-- `is_supported` takes a function that takes a language and determines if this module supports that language.
-- `attach` takes a function that attaches to a buffer. This is required if `module_path` is not provided.
-- `detach` takes a function that detaches from a buffer. This is required if `module_path` is not provided.
-
-# Extra features
-
-### Statusline indicator
-
-```vim
-echo nvim_treesitter#statusline(90) " 90 can be any length
-module->expression_statement->call->identifier
-```
-
-### Utilities
-
-You can get some utility functions with
-
-```lua
-local ts_utils = require 'nvim-treesitter.ts_utils'
-```
-
-Check [`:h nvim-treesitter-utils`](doc/nvim-treesitter.txt) for more information.
-
# Troubleshooting
Before doing anything, make sure you have the latest version of this plugin and run `:checkhealth nvim-treesitter`.
It can also help to update the parsers via `:TSUpdate`.
-#### Feature `X` does not work for `{language}`...
-
-First, check the `health#nvim_treesitter#check` and the `health#treesitter#check` sections of `:checkhealth` for any warning.
-If there is one, it's highly likely that this is the cause of the problem.
+#### Feature `{X}` does not work for `{language}`...
-Next check the `## Parser/Features` subsection of the `health#nvim_treesitter#check` section of `:checkhealth` to ensure the desired module is enabled for your language.
-If not, you might be missing query files; see [Adding queries](#adding-queries).
+1. Check the `nvim-treesitter` section of `:checkhealth` for any warning, and make sure that the query for `{X}` is listed for `{language}`.
-Finally, ensure Neovim is correctly identifying your language's filetype using the `:echo &filetype` command while one of your language's files is open in Neovim.
-If not, add a short Vimscript file to nvim-treesitter's `ftdetect` runtime directory following [Neovim's documentation](https://neovim.io/doc/user/filetype.html#new-filetype) on filetype detection.
-You can also quickly & temporarily set the filetype for a single buffer with the `:set filetype=langname` command to test whether it fixes the problem.
+2. Ensure that the feature is enabled as explained above.
-If everything is okay, then it might be an actual error.
-In that case, feel free to [open an issue here](https://github.com/nvim-treesitter/nvim-treesitter/issues/new/choose).
-
-#### I get `module 'vim.treesitter.query' not found`
-
-Make sure you have the latest version of Neovim.
+3. Ensure Neovim is correctly identifying your language's filetype using the `:echo &filetype` command while one of your language's files is open in Neovim.
#### I get `Error detected while processing .../plugin/nvim-treesitter.vim` every time I open Neovim
@@ -773,32 +195,10 @@ or due to an outdated parser.
- Make sure you have the parsers up to date with `:TSUpdate`
- Make sure you don't have more than one `parser` runtime directory.
- You can execute this command `:echo nvim_get_runtime_file('parser', v:true)` to find all runtime directories.
+ You can execute this command `:= vim.api.nvim_get_runtime_file('parser', true)` to find all runtime directories.
If you get more than one path, remove the ones that are outside this plugin (`nvim-treesitter` directory),
so the correct version of the parser is used.
-#### I experience weird highlighting issues similar to [#78](https://github.com/nvim-treesitter/nvim-treesitter/issues/78)
-
-This is a well known issue, which arises when the tree and the buffer have gotten out of sync.
-As this is an upstream issue, we don't have any definite fix.
-To get around this, you can force reparsing the buffer with
-
-```vim
-:write | edit | TSBufEnable highlight
-```
-
-This will save, restore and enable highlighting for the current buffer.
-
-#### I experience bugs when using `nvim-treesitter`'s `foldexpr` similar to [#194](https://github.com/nvim-treesitter/nvim-treesitter/issues/194)
-
-This might happen, and is known to happen, with `vim-clap`.
-To avoid these kind of errors, please use `setlocal` instead of `set` for the respective filetypes.
-
-#### I run into errors like `module 'nvim-treesitter.configs' not found` at startup
-
-This is because of `rtp` management in `nvim`, adding `packadd
-nvim-treesitter` should fix the issue.
-
#### I want to use Git instead of curl for downloading the parsers
In your Lua config:
@@ -828,24 +228,12 @@ require("nvim-treesitter.install").prefer_git = true
In your Lua config:
```lua
-for _, config in pairs(require("nvim-treesitter.parsers").get_parser_configs()) do
+for _, config in pairs(require("nvim-treesitter.parsers").configs) do
config.install_info.url = config.install_info.url:gsub("https://github.com/", "something else")
end
-require'nvim-treesitter.configs'.setup {
+require'nvim-treesitter'.setup {
--
--
}
```
-
-#### Using an existing parser for another filetype
-
-For example, to use the `bash` tree-sitter to highlight file with
-`filetype=apkbuild`, use:
-
-```lua
-vim.treesitter.language.register("bash", "apkbuild")
-```
-
-The `bash` tree-sitter must be installed following the usual procedure [as
-described above](#language-parsers).