Nvim-treesitter configuration: Difference between revisions

From wikinotes
Line 15: Line 15:
You can set the parsers you'd like to make available within your <code>init.vim</code>.
You can set the parsers you'd like to make available within your <code>init.vim</code>.


<syntaxhighlight lang="vim">
<syntaxhighlight lang="lua">
# ~/.config/nvim/init.vim
# ~/.config/nvim/init.vim



Revision as of 19:54, 19 July 2021

Locations

~/.config/nvim/init.vim neovim config
~/.vim/queries/**/* language-specific module configs

Enabling Features

Parsers

You can set the parsers you'd like to make available within your init.vim.

# ~/.config/nvim/init.vim

lua <<EOF
require'nvim-treesitter.configs'.setup {
    -- automatically install these language parsers:
    --   * "maintained"                # all parsers with maintainers
    --   * "all"                       # all available parsers
    --   * { "bash", "python", .. }  # these specific languages
    ensure_installed = "maintained"; 
}
EOF

Modules

Enable modules within your init.nvim

# ~/.config/nvim/init.vim

lua <<EOF
require'nvim-treesitter.configs'.setup {
  highlight = {
    enable = true,

    -- when true, enables vim syntaxhighlighting alongside tree-sitters
    -- true/false or a list of languages
    additional_vim_regex_highlighting = false,
  },

  incremental_selection = {
    enable = true;
  },

  indent = {
    enable = true;
  },
}
EOF

Folds

Adjust the foldmethods/foldexprs for languages you'd like to fold using tree-sitter.

set foldmethod=expr
set foldexpr=nvim_treesitter#foldexpr()

Customizing Features

NOTE:

I gave up on trying to do this the cleanly.
I forked the project and I'm hosting it at home. Will rebase periodically for new features.

Basics

Default configuration of features is set within the queries directory in .scm files.
In the code, these are read using nvim_get_runtime_file which layers files from ~/.vim overtop of these files.
Simply override the settings within your .vim directory.

Folds

I don't think folds can be customized without changing the plugin sourcecode.
I think all searches are appended, you cannot remove builtin searches.
You can rewrite them though...

; queries/python/folds.scm

(function_definition) @fold
(class_definition) @fold