*nvim-treesitter.txt* Treesitter parser and query installer for Neovim Authors: Kiyan Yazdani Thomas Vigouroux Stephan Seitz Steven Sojka Santos Gallegos https://github.com/nvim-treesitter/nvim-treesitter/graphs/contributors Type |gO| to see the table of contents. ============================================================================== INTRODUCTION *nvim-treesitter-intro* Nvim-treesitter provides functionalities for managing treesitter parsers and compatible queries for core features (highlighting, injections, folds, indents). ============================================================================== QUICK START *nvim-treesitter-quickstart* To configure `nvim-treesitter`, put this in your `init.lua` file: >lua require'nvim-treesitter'.setup { -- A directory to install the parsers and queries to. -- Defaults to the `stdpath('data')/site` dir. install_dir = "/some/path/to/store/parsers", } NOTE: You do not need to call `setup` to use this plugin with the default settings! Parsers and queries can then be installed with >lua require'nvim-treesitter'.install { 'rust', 'javascript', 'zig' } < To check installed parsers and queries, use `:checkhealth nvim-treesitter`. Treesitter features for installed languages need to be enabled manually in a |FileType| autocommand or |ftplugin|, e.g. >lua vim.api.nvim_create_autocmd('FileType', { pattern = { 'rust', 'javascript', 'zig' }, callback = function() -- syntax highlighting, provided by Neovim vim.treesitter.start() -- folds, provided by Neovim vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()' vim.wo.foldmethod = 'expr' -- indentation, provided by nvim-treesitter vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" end, }) < ============================================================================== COMMANDS *nvim-treesitter-commands* :TSInstall {language} *:TSInstall* Install one or more treesitter parsers. {language} can be one or multiple parsers or tiers (`stable`, `unstable`, or `all` (not recommended)). This is a no-op if the parser(s) are already installed. Installation is performed asynchronously. Use *:TSInstall!* to force installation even if a parser is already installed. :TSInstallFromGrammar {language} *:TSInstallFromGrammar* Like |:TSInstall| but also regenerates the `parser.c` from the original grammar. Useful for languages where the provided `parser.c` is outdated (e.g., uses a no longer supported ABI). :TSUpdate [{language}] *:TSUpdate* Update parsers to the `revision` specified in the manifest if this is newer than the installed version. If {language} is specified, update the corresponding parser or tier; otherwise update all installed parsers. This is a no-op if all (specified) parsers are up to date. Note: It is recommended to add this command as a build step in your plugin manager. :TSUninstall {language} *:TSUninstall* Deletes the parser for one or more {language}, or all parsers with `all`. :TSLog *:TSLog* Shows all messages from previous install, update, or uninstall operations. ============================================================================== API *nvim-treesitter-api* setup({opts}) *nvim-treesitter.setup()* Configure installation options. Needs to be specified before any installation operation. Note: You only need to call `setup` if you want to set non-default options! Parameters: ~ • {opts} `(table?)` Optional parameters: • {install_dir} (`string?`, default `stdpath('data')/site/`) directory to install parsers and queries to. Note: will be prepended to |runtimepath|. install({languages} [, {opts}]) *nvim-treesitter.install()* Download, compile, and install the specified treesitter parsers and copy the corresponding queries to a directory on |runtimepath|, enabling their use in Neovim. Note: This operation is performed asynchronously by default. For synchronous operation (e.g., in a bootstrapping script), you need to `wait()` for it: >lua require('nvim-treesitter').install({ 'rust', 'javascript', 'zig' }) :wait(300000) -- max. 5 minutes < Parameters: ~ • {languages} `(string[]|string)` (List of) languages or tiers (`stable`, `unstable`) to install. • {opts} `(table?)` Optional parameters: • {force} (`boolean?`, default `false`) force installation of already installed parsers • {generate} (`boolean?`, default `false`) generate `parser.c` from `grammar.json` or `grammar.js` before compiling. • {max_jobs} (`integer?`) limit parallel tasks (useful in combination with {generate} on memory-limited systems). • {summary} (`boolean?`, default `false`) print summary of successful and total operations for multiple languages. uninstall({languages} [, {opts}]) *nvim-treesitter.uninstall()* Remove the parser and queries for the specified language(s). Parameters: ~ • {languages} `(string[]|string)` (List of) languages or tiers (`stable`, `unstable`) to update. • {opts} `(table?)` Optional parameters: • {summary} (`boolean?`, default `false`) print summary of successful and total operations for multiple languages. update([{languages}, {opts}]) *nvim-treesitter.update()* Update the parsers and queries if older than the revision specified in the manifest. Note: This operation is performed asynchronously by default. For synchronous operation (e.g., in a bootstrapping script), you need to `wait()` for it: >lua require('nvim-treesitter').update():wait(300000) -- max. 5 minutes < Parameters: ~ • {languages} `(string[]|string)?` (List of) languages or tiers to update (default: all installed). • {opts} `(table?)` Optional parameters: • {max_jobs} (`integer?`) limit parallel tasks (useful in combination with {generate} on memory-limited systems). • {summary} (`boolean?`, default `false`) print summary of successful and total operations for multiple languages. indentexpr() *nvim-treesitter.indentexpr()* Used to enable treesitter indentation for a language via >lua vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" < get_available([{tier}]) *nvim-treesitter.get_available()* Return list of languages available for installation. Parameters: ~ • {tier} `(integer?)` Only return languages of specified {tier} (`1`: stable, `2`: unstable, `3`: unmaintained, `4`: unsupported) get_installed([{type}]) *nvim-treesitter.get_installed()* Return list of languages installed via `nvim-treesitter`. Note: This only searches `nvim-treesitter`'s (configured or default) installation directory; parsers and queries from other sources can be placed anywhere on 'runtimepath' and are not included. To list all, e.g., parsers that are installed from any source, use >lua vim.api.nvim_get_runtime_file('parser/*', true) < Parameters: ~ • {type} `('queries'|parsers'?)` If specified, only show languages with installed queries or parsers, respectively. vim:tw=78:ts=8:expandtab:noet:ft=help:norl: