Вернуться назад

Treesitter

Страничка на GitHub: github.com/nvim-treesitter/nvim-treesitter

Устанавливаем nvim-treesitter:

-- ~/.config/nvim/lua/plugins/treesitter.lua

return {
   'nvim-treesitter/nvim-treesitter',
   lazy = false,
   build = ':TSUpdate',
   config = function()
      require'nvim-treesitter'.install { "javascript", "typescript", "html", "css", "lua" }
   end
}

и подключаем treesitter в init.lua:

-- ~/.config/nvim/init.lua

-- Setup lazy.nvim
require("lazy").setup({
   spec = {
      { import = "plugins.treesitter" },
      -- { ... }
   },
   -- install = { colorscheme = { "habamax" } }
})

Далее запустим :Lazy внутри nvim и установим Treesitter.

Проверка:

:checkhealth nvim-treesitter

" Можно также проверить и treesitter:
:checkhealth treesitter

tree-sitter-cli

Если в системе не установлен tree-sitter-cli, то nvim-treesitter будет ругаться на это – покажет как ошибку. Хотя он работает и без tree-sitter-cli.

Установить tree-sitter-cli:

# через npm:
npm install -g tree-sitter-cli

# Или с помощью pacman:
sudo pacman -S tree-sitter

В моём случае cli из репозитория Arch был старой версии, nvim-treesitter требовал версию поновее. Поэтому лучше ставить через npm.

Чтобы tree-sitter-cli, установленный с помощью npm, не конфликтовал с системным, лучше его ставить в $HOME. Можно сделать так:

mkdir -p ~/.npm-global
npm config set prefix '~/.npm-global'

# В ~/.bashrc добавим:
export PATH="$HOME/.npm-global/bin:$PATH"

# И после этого установим cli:
npm install -g tree-sitter-cli

После этого нужно перезайти в shell или выполнить: source ~/.bashrc

Покажет, какие capture-группы Tree-sitter срабатывают под курсором (через :inspect для Tree-sitter):

:lua =vim.treesitter.get_captures_at_cursor()