nvim-treesitter/nvim-treesitter
[!CAUTION] The
master
branch is frozen and provided for backward compatibility only. All future updates happen on themain
branch, which will become the default branch in the future.
The goal of nvim-treesitter
is both to provide a simple and easy way to use the interface for tree-sitter in Neovim and to provide some basic functionality such as highlighting based on it:
Traditional highlighting (left) vs Treesitter-based highlighting (right). More examples can be found in our 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. 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, queries, and 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”.
Table of contents
Quickstart
Requirements
- Neovim 0.10 or later (supported up to Neovim 0.12);
tar
andcurl
in your path (or alternativelygit
);- a C compiler in your path and libstdc++ installed (Windows users please read this!).
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 lazy.nvim
, put this in your init.lua
file:
|
|
[!CAUTION]
- This plugin does not support lazy-loading.
- Make sure to specify the
master
branch, as the default branch will switch tomain
in the future.
For other plugin managers such as packer.nvim
, see this Installation page from the wiki (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
, you can install it with
|
|
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” 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
.
Modules
Each module provides a distinct tree-sitter-based feature such as highlighting, indentation, or folding; see :h nvim-treesitter-modules
or “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
|
|
Each module can also be enabled or disabled interactively through the following commands:
|
|
Check :h nvim-treesitter-commands
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.
We are looking for maintainers to add more parsers and to write query files for their languages. Check our tracking issue for open language requests.
- ada (maintained by @briot)
- agda (maintained by @Decodetalkers)
- angular (experimental, maintained by @dlvandenberg)
- apex (maintained by @aheber, @xixiaofinland)
- arduino (maintained by @ObserverOfTime)
- asm (maintained by @RubixDev)
- astro (maintained by @virchau13)
- authzed (maintained by @mattpolzin)
- awk
- bash (maintained by @TravonteD)
- bass (maintained by @amaanq)
- beancount (maintained by @polarmutex)
- bibtex (maintained by @theHamsta, @clason)
- bicep (maintained by @amaanq)
- bitbake (maintained by @amaanq)
- blade (maintained by @calebdw)
- blueprint (experimental, maintained by @gabmus)
- bp (maintained by @ambroisie)
- brightscript (maintained by @ajdelcimmuto)
- c (maintained by @amaanq)
- c_sharp (maintained by @amaanq)
- caddy (maintained by @opa-oz)
- cairo (maintained by @amaanq)
- capnp (maintained by @amaanq)
- chatito (maintained by @ObserverOfTime)
- circom (maintained by @alexandr-martirosyan)
- clojure (maintained by @NoahTheDuke)
- cmake (maintained by @uyha)
- comment (maintained by @stsewd)
- commonlisp (maintained by @theHamsta)
- cooklang (maintained by @addcninblue)
- corn (maintained by @jakestanger)
- cpon (maintained by @amaanq)
- cpp (maintained by @theHamsta)
- css (maintained by @TravonteD)
- csv (maintained by @amaanq)
- cuda (maintained by @theHamsta)
- cue (maintained by @amaanq)
- cylc (maintained by @elliotfontaine)
- d (maintained by @amaanq)
- dart (maintained by @akinsho)
- desktop (maintained by @ValdezFOmar)
- devicetree (maintained by @jedrzejboczar)
- dhall (maintained by @amaanq)
- diff (maintained by @gbprod)
- disassembly (maintained by @ColinKennedy)
- djot (maintained by @NoahTheDuke)
- dockerfile (maintained by @camdencheek)
- dot (maintained by @rydesun)
- doxygen (maintained by @amaanq)
- dtd (maintained by @ObserverOfTime)
- earthfile (maintained by @glehmann)
- ebnf (experimental, maintained by @RubixDev)
- editorconfig (maintained by @ValdezFOmar)
- eds (maintained by @uyha)
- eex (maintained by @connorlay)
- elixir (maintained by @connorlay)
- elm (maintained by @zweimach)
- elsa (maintained by @glapa-grossklag, @amaanq)
- elvish (maintained by @elves)
- embedded_template
- enforce (maintained by @simonvic)
- erlang (maintained by @filmor)
- facility (maintained by @bryankenote)
- faust (maintained by @khiner)
- fennel (maintained by @alexmozaidze)
- fidl (maintained by @chaopeng)
- firrtl (maintained by @amaanq)
- fish (maintained by @ram02z)
- foam (experimental, maintained by @FoamScience)
- forth (maintained by @amaanq)
- fortran (maintained by @amaanq)
- fsh (maintained by @mgramigna)
- fsharp (maintained by @nsidorenco)
- func (maintained by @amaanq)
- fusion (maintained by @jirgn)
- GAP system (maintained by @reiniscirpons)
- GAP system test files (maintained by @reiniscirpons)
- Godot (gdscript) (maintained by @PrestonKnopp)
- gdshader (maintained by @godofavacyn)
- git_config (maintained by @amaanq)
- git_rebase (maintained by @gbprod)
- gitattributes (maintained by @ObserverOfTime)
- gitcommit (maintained by @gbprod)
- gitignore (maintained by @theHamsta)
- gleam (maintained by @amaanq)
- Glimmer and Ember (maintained by @NullVoxPopuli)
- glimmer_javascript (maintained by @NullVoxPopuli)
- glimmer_typescript (maintained by @NullVoxPopuli)
- glsl (maintained by @theHamsta)
- GN (Generate Ninja) (maintained by @amaanq)
- gnuplot (maintained by @dpezto)
- go (maintained by @theHamsta, @WinWisely268)
- goctl (maintained by @chaozwn)
- Godot Resources (gdresource) (maintained by @pierpo)
- gomod (maintained by @camdencheek)
- gosum (maintained by @amaanq)
- gotmpl (maintained by @qvalentin)
- gowork (maintained by @omertuc)
- gpg (maintained by @ObserverOfTime)
- graphql (maintained by @bkegley)
- gren (maintained by @MaeBrooks)
- groovy (maintained by @murtaza64)
- gstlaunch (maintained by @theHamsta)
- hack
- hare (maintained by @amaanq)
- haskell (maintained by @mrcjkb)
- haskell_persistent (maintained by @lykahb)
- hcl (maintained by @MichaHoffmann)
- heex (maintained by @connorlay)
- helm (maintained by @qvalentin)
- hjson (maintained by @winston0410)
- hlsl (maintained by @theHamsta)
- hlsplaylist (maintained by @Freed-Wu)
- hocon (maintained by @antosha417)
- hoon (experimental, maintained by @urbit-pilled)
- html (maintained by @TravonteD)
- htmldjango (experimental, maintained by @ObserverOfTime)
- http (maintained by @amaanq, @NTBBloodbath)
- hurl (maintained by @pfeiferj)
- hyprlang (maintained by @luckasRanarison)
- idl (maintained by @cathaysia)
- idris (maintained by @srghma)
- ini (experimental, maintained by @theHamsta)
- inko (maintained by @yorickpeterse)
- ipkg (maintained by @srghma)
- ispc (maintained by @fab4100)
- janet_simple (maintained by @sogaiu)
- java (maintained by @p00f)
- javadoc (maintained by @rmuir)
- javascript (maintained by @steelsojka)
- jinja (maintained by @cathaysia)
- jinja_inline (maintained by @cathaysia)
- jq (maintained by @ObserverOfTime)
- jsdoc (maintained by @steelsojka)
- json (maintained by @steelsojka)
- json5 (maintained by @Joakker)
- JSON with comments (maintained by @WhyNotHugo)
- jsonnet (maintained by @nawordar)
- julia (maintained by @fredrikekre)
- just (maintained by @Hubro)
- kcl (maintained by @bertbaron)
- kconfig (maintained by @amaanq)
- kdl (maintained by @amaanq)
- kotlin (maintained by @SalBakraa)
- koto (maintained by @irh)
- kusto (maintained by @Willem-J-an)
- lalrpop (maintained by @traxys)
- latex (maintained by @theHamsta, @clason)
- ledger (maintained by @cbarrete)
- leo (maintained by @r001)
- linkerscript (maintained by @amaanq)
- liquid (maintained by @hankthetank27)
- liquidsoap (maintained by @toots)
- llvm (maintained by @benwilliamgraham)
- lua (maintained by @muniftanjim)
- luadoc (maintained by @amaanq)
- lua patterns (maintained by @amaanq)
- luau (maintained by @amaanq)
- m68k (maintained by @grahambates)
- make (maintained by @lewis6991)
- markdown (basic highlighting) (experimental, maintained by @MDeiml)
- markdown_inline (needed for full highlighting) (experimental, maintained by @MDeiml)
- matlab (maintained by @acristoffers)
- menhir (maintained by @Kerl13)
- mermaid (experimental)
- meson (maintained by @Decodetalkers)
- mlir (experimental, maintained by @artagnon)
- muttrc (maintained by @Freed-Wu)
- nasm (maintained by @ObserverOfTime)
- nginx (maintained by @opa-oz)
- nickel
- nim (maintained by @aMOPel)
- nim_format_string (maintained by @aMOPel)
- ninja (maintained by @alemuller)
- nix (maintained by @leo60228)
- norg (maintained by @JoeyGrajciar, @vhyrro)
- nqc (maintained by @amaanq)
- nu (maintained by @abhisheksingh0x558)
- objc (maintained by @amaanq)
- objdump (maintained by @ColinKennedy)
- ocaml (maintained by @undu)
- ocaml_interface (maintained by @undu)
- ocamllex (maintained by @undu)
- odin (maintained by @amaanq)
- pascal (maintained by @Isopod)
- passwd (maintained by @amaanq)
- pem (maintained by @ObserverOfTime)
- perl (maintained by @RabbiVeesh, @LeoNerd)
- php (maintained by @tk-shirasaka, @calebdw)
- php_only (maintained by @tk-shirasaka, @calebdw)
- phpdoc (experimental, maintained by @mikehaertl)
- pioasm (maintained by @leo60228)
- po (maintained by @amaanq)
- pod (maintained by @RabbiVeesh, @LeoNerd)
- Path of Exile item filter (experimental, maintained by @ObserverOfTime)
- pony (maintained by @amaanq, @mfelsche)
- powershell (maintained by @L2jLiga)
- printf (maintained by @ObserverOfTime)
- prisma (maintained by @elianiva)
- problog (maintained by @foxyseta)
- prolog (maintained by @foxyseta)
- promql (maintained by @MichaHoffmann)
- properties (maintained by @ObserverOfTime)
- proto (maintained by @treywood)
- prql (maintained by @matthias-Q)
- psv (maintained by @amaanq)
- pug (experimental, maintained by @zealot128)
- puppet (maintained by @amaanq)
- purescript (maintained by @postsolar)
- PyPA manifest (maintained by @ObserverOfTime)
- python (maintained by @stsewd, @theHamsta)
- ql (maintained by @pwntester)
- qmldir (maintained by @amaanq)
- qmljs (maintained by @Decodetalkers)
- Tree-Sitter query language (maintained by @steelsojka)
- r (maintained by @ribru17)
- racket
- ralph (maintained by @tdroxler)
- rasi (maintained by @Fymyte)
- razor (maintained by @tris203)
- rbs (maintained by @joker1007)
- re2c (maintained by @amaanq)
- readline (maintained by @ribru17)
- regex (maintained by @theHamsta)
- rego (maintained by @FallenAngel97)
- pip requirements (maintained by @ObserverOfTime)
- rescript (maintained by @ribru17)
- rnoweb (maintained by @bamonroe)
- robot (maintained by @Hubro)
- robots (maintained by @opa-oz)
- roc (maintained by @nat-418)
- ron (maintained by @amaanq)
- rst (maintained by @stsewd)
- ruby (maintained by @TravonteD)
- runescript (maintained by @2004Scape)
- rust (maintained by @amaanq)
- scala (maintained by @stevanmilic)
- scfg (maintained by @WhyNotHugo)
- scheme
- scss (maintained by @elianiva)
- sflog (maintained by @aheber, @xixiaofinland)
- slang (experimental, maintained by @theHamsta)
- slim (maintained by @theoo)
- slint (maintained by @hunger)
- smali (maintained by @amaanq)
- smithy (maintained by @amaanq, @keynmol)
- snakemake (experimental)
- solidity (maintained by @amaanq)
- soql (maintained by @aheber, @xixiaofinland)
- sosl (maintained by @aheber, @xixiaofinland)
- sourcepawn (maintained by @Sarrus1)
- sparql (maintained by @GordianDziwis)
- sql (maintained by @derekstride)
- squirrel (maintained by @amaanq)
- ssh_config (maintained by @ObserverOfTime)
- starlark (maintained by @amaanq)
- strace (maintained by @amaanq)
- styled (maintained by @mskelton)
- supercollider (maintained by @madskjeldgaard)
- superhtml (maintained by @rockorager)
- surface (maintained by @connorlay)
- svelte (maintained by @amaanq)
- sway (maintained by @ribru17)
- swift (maintained by @alex-pinkus)
- sxhkdrc (maintained by @RaafatTurki)
- systemtap (maintained by @ok-ryoko)
- t32 (maintained by @xasc)
- tablegen (maintained by @amaanq)
- tact (maintained by @novusnota)
- tcl (maintained by @lewis6991)
- teal (maintained by @euclidianAce)
- templ (maintained by @vrischmann)
- tera (maintained by @uncenter)
- terraform (maintained by @MichaHoffmann)
- textproto (maintained by @Porter)
- thrift (maintained by @amaanq, @duskmoon314)
- tiger (maintained by @ambroisie)
- tlaplus (maintained by @ahelwer, @susliko)
- tmux (maintained by @Freed-Wu)
- todotxt (experimental, maintained by @arnarg)
- toml (maintained by @tk-shirasaka)
- tsv (maintained by @amaanq)
- tsx (maintained by @steelsojka)
- turtle (maintained by @GordianDziwis)
- twig (maintained by @gbprod)
- typescript (maintained by @steelsojka)
- typespec (maintained by @happenslol)
- typoscript (maintained by @Teddytrombone)
- typst (maintained by @uben0, @RaafatTurki)
- udev (maintained by @ObserverOfTime)
- ungrammar (maintained by @Philipp-M, @amaanq)
- unison (maintained by @tapegram)
- usd (maintained by @ColinKennedy)
- uxn tal (maintained by @amaanq)
- v (maintained by @kkharji, @amaanq)
- vala (maintained by @Prince781)
- vento (maintained by @wrapperup, @oscarotero)
- verilog (maintained by @zhangwwpeng)
- vhdl (maintained by @jpt13653903)
- vhs (maintained by @caarlos0)
- vim (maintained by @clason)
- vimdoc (maintained by @clason)
- vrl (maintained by @belltoy)
- vue (maintained by @WhyNotHugo, @lucario387)
- wgsl (maintained by @szebniok)
- wgsl_bevy (maintained by @theHamsta)
- wing (maintained by @gshpychka, @MarkMcCulloh)
- wit (maintained by @liamwh)
- xcompose (maintained by @ObserverOfTime)
- xml (maintained by @ObserverOfTime)
- xresources (maintained by @ValdezFOmar)
- yaml (maintained by @amaanq)
- yang (maintained by @Hubro)
- yuck (maintained by @Philipp-M, @amaanq)
- zathurarc (maintained by @Freed-Wu)
- zig (maintained by @amaanq)
- ziggy (maintained by @rockorager)
- ziggy_schema (maintained by @rockorager)
For related information on the supported languages, including related plugins, see this wiki page.
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.
Highlight
Consistent syntax highlighting.
|
|
To customize the syntax highlighting of a capture, simply define or link a highlight group of the same name:
|
|
For a language-specific highlight, append the name of the language:
|
|
See :h treesitter-highlight-groups
for details.
Incremental selection
Incremental selection based on the named nodes from the grammar.
|
|
Indentation
Indentation based on treesitter for the =
operator.
NOTE: This is an experimental feature.
|
|
Folding
Tree-sitter based folding (implemented in Neovim itself, see :h vim.treesitter.foldexpr()
). To enable it for the current window, set
|
|
This will respect your foldminlines
and foldnestmax
settings.
Advanced setup
Changing the parser install directory
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:
|
|
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.
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
)
The default paths are:
- first the package folder. Where
nvim-treesitter
is installed. - second the site directory. This is the “site” subdirectory of
stdpath("data")
.
Adding parsers
If you have a parser that is not on the list of supported languages (either as a repository on Github or in a local directory), you can add it manually for use by nvim-treesitter
as follows:
- Clone the repository or create a new project in, say,
~/projects/tree-sitter-zimbu
. Make sure that thetree-sitter-cli
executable is installed and in your path; see https://tree-sitter.github.io/tree-sitter/creating-parsers#installation for installation instructions. - Run
tree-sitter generate
in this directory (followed bytree-sitter test
for good measure). - Add the following snippet to your
init.lua
:
|
|
If you wish to set a specific parser for a filetype, you should use vim.treesitter.language.register()
:
|
|
Note this requires Nvim v0.9.
- 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 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()
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.
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:
|
|
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:
|
|
with the following properties:
module_path
specifies a require path (string) that exports a module with anattach
anddetach
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 ifmodule_path
is not provided.detach
takes a function that detaches from a buffer. This is required ifmodule_path
is not provided.
Extra features
Statusline indicator
|
|
Utilities
You can get some utility functions with
|
|
Check :h nvim-treesitter-utils
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.
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.
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 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.
If everything is okay, then it might be an actual error. In that case, feel free to open an issue here.
I get module 'vim.treesitter.query' not found
Make sure you have the latest version of Neovim.
I get Error detected while processing .../plugin/nvim-treesitter.vim
every time I open Neovim
This is probably due to a change in a parser’s grammar or its queries.
Try updating the parser that you suspect has changed (:TSUpdate {language}
) or all of them (:TSUpdate
).
If the error persists after updating all parsers,
please open an issue.
I get query error: invalid node type at position
This could be due a query file outside this plugin using outdated nodes, 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. 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
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
|
|
This will save, restore and enable highlighting for the current buffer.
I experience bugs when using nvim-treesitter
’s foldexpr
similar to #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:
|
|
I want to use a HTTP proxy for downloading the parsers
You can either configure curl to use additional CLI arguments in your Lua config:
|
|
or you can configure git via .gitconfig
and use git instead of curl
|
|
I want to use a mirror instead of “https://github.com/"
In your Lua config:
|
|
Using an existing parser for another filetype
For example, to use the bash
tree-sitter to highlight file with
filetype=apkbuild
, use:
|
|
The bash
tree-sitter must be installed following the usual procedure as
described above.