Post

Treesitter Neovim Config Cheatsheet

treesitter is a parser for programming and scripting languages. Treesitter helps with syntax highlighting, code formatting and for looking up code function definitions right from your code editor. Im using neovim.

Add treesitter to your vim plugins

1
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}

Install parsers

1
:TSInstall twig

Update all parsers

1
:TSUpdate all

Load the treesitter init.lua file

When vim starts, load the treesitter init file with a config of your choice

1
source $HOME/.config/nvim/plug-config/treesitter.lua

treesitter.lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
require'nvim-treesitter.configs'.setup {
  -- A list of parser names, or "all" (the five listed parsers should always be installed)
  ensure_installed = { "c", "lua", "vim", "vimdoc", "query" },

  -- Install parsers synchronously (only applied to `ensure_installed`)
  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 (for "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")!

  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,
  },
}


Check if a parser is installed

1
:TSInstallInfo

Check health

1
:checkhealth nvim-treesitter

Ensure all your languages have all the treesitter features enabled treesitter language features

Fixing Language Errors

if the language features are not enabled. You can enable them all by running:

1
:TSUpdate javascript

Update

If you get errors everytime you open neovim try running

1
:TSUpdate
This post is licensed under CC BY 4.0 by the author.