Files
dotfiles/.config/nvim/lua/plugins/nvim-treesitter.lua
2025-08-22 00:57:37 +03:00

131 lines
3.8 KiB
Lua

return {
'nvim-treesitter/nvim-treesitter',
version = false, -- last release is way too old
build = ':TSUpdate',
lazy = false, -- It's only 2ms it's fine
cmd = { 'TSUpdateSync', 'TSUpdate', 'TSInstall' },
keys = {
{ '<c-space>', desc = 'Increment Selection' },
{ '<bs>', desc = 'Decrement Selection', mode = 'x' },
},
---@type TSConfig
---@diagnostic disable-next-line: missing-fields
opts = {
highlight = { enable = true },
indent = { enable = true },
rainbow = {
enable = true,
extended_mode = true,
max_file_lines = nil,
},
ensure_installed = {
'asm',
'astro',
'bash',
'c',
'cpp',
'css',
'csv',
'diff',
'desktop',
'git_config',
'git_rebase',
'gitattributes',
'gitcommit',
'gitignore',
'go',
'gomod',
'gosum',
'gowork',
'groovy',
'html',
'ini',
'java',
'javascript',
'jsdoc',
'json',
'jsonc',
'latex',
'linkerscript',
'lua',
'luadoc',
'luap',
'make',
'markdown',
'markdown_inline',
'mermaid',
'nix',
'pem',
'printf',
'python',
'query',
'regex',
'rust',
'scheme',
'sql',
'ssh_config',
'tmux',
'toml',
'tsx',
'typescript',
'vim',
'vimdoc',
'xml',
'yaml',
'zig',
'comment',
'gotmpl'
},
incremental_selection = {
enable = true,
keymaps = {
init_selection = '<C-space>',
node_incremental = '<C-space>',
scope_incremental = false,
node_decremental = '<bs>',
},
},
textobjects = {
move = {
enable = true,
goto_next_start = {
['gf'] = '@function.outer',
['gc'] = '@class.outer',
['ga'] = '@parameter.inner',
},
goto_previous_start = {
['gF'] = '@function.outer',
['gC'] = '@class.outer',
['gA'] = '@parameter.inner',
},
},
},
},
config = function(_, opts)
require('nvim-treesitter.configs').setup(opts)
-- HACK: Workaround to have syntax highlighting in zsh until a zsh parser is added
-- https://github.com/nvim-treesitter/nvim-treesitter/issues/655
local ft_to_lang = require('nvim-treesitter.parsers').ft_to_lang
---@diagnostic disable-next-line: duplicate-set-field
require('nvim-treesitter.parsers').ft_to_lang = function(ft)
if ft == 'zsh' then
return 'bash'
end
return ft_to_lang(ft)
end
end,
init = function(plugin)
-- PERF: add nvim-treesitter queries to the rtp and it's custom query predicates early
-- This is needed because a bunch of plugins no longer `require("nvim-treesitter")`, which
-- no longer trigger the **nvim-treesitter** module to be loaded in time.
-- Luckily, the only things that those plugins need are the custom queries, which we make available
-- during startup.
require('lazy.core.loader').add_to_rtp(plugin)
require('nvim-treesitter.query_predicates')
end,
}