121 lines
2.8 KiB
Lua
121 lines
2.8 KiB
Lua
local has_tree_sitter_cli = vim.fn.executable('tree-sitter') == 1
|
|
|
|
if not has_tree_sitter_cli then
|
|
vim.schedule(function()
|
|
vim.notify(
|
|
'tree-sitter-cli not found on PATH; tree-sitter-manager.nvim disabled',
|
|
vim.log.levels.WARN
|
|
)
|
|
end)
|
|
end
|
|
|
|
return {
|
|
{
|
|
'romus204/tree-sitter-manager.nvim',
|
|
cond = has_tree_sitter_cli,
|
|
lazy = false,
|
|
config = function()
|
|
require('tree-sitter-manager').setup({
|
|
-- Enable core highlighting for every installed parser.
|
|
highlight = true,
|
|
ensure_installed = {
|
|
'asm',
|
|
'bash',
|
|
'c',
|
|
'cmake',
|
|
'cpp',
|
|
'css',
|
|
'csv',
|
|
'cuda',
|
|
'diff',
|
|
'disassembly',
|
|
'dockerfile',
|
|
'dot',
|
|
'doxygen',
|
|
'git_config',
|
|
'git_rebase',
|
|
'gitattributes',
|
|
'gitignore',
|
|
'glsl',
|
|
'go',
|
|
'gpg',
|
|
'hlsl',
|
|
'html',
|
|
'ini',
|
|
'javascript',
|
|
'jq',
|
|
'json',
|
|
'julia',
|
|
'llvm',
|
|
'lua',
|
|
'make',
|
|
'markdown',
|
|
'markdown_inline',
|
|
'meson',
|
|
'mlir',
|
|
'ninja',
|
|
'objc',
|
|
'objdump',
|
|
'printf',
|
|
'proto',
|
|
'python',
|
|
'query',
|
|
'regex',
|
|
'requirements',
|
|
'rst',
|
|
'ssh_config',
|
|
'strace',
|
|
'tablegen',
|
|
'tmux',
|
|
'toml',
|
|
'vim',
|
|
'vimdoc',
|
|
'xml',
|
|
'yaml',
|
|
},
|
|
})
|
|
end,
|
|
},
|
|
|
|
{
|
|
'nvim-treesitter/nvim-treesitter-textobjects',
|
|
branch = 'main',
|
|
config = function()
|
|
require('nvim-treesitter-textobjects').setup({
|
|
select = {
|
|
lookahead = true,
|
|
},
|
|
})
|
|
|
|
local select = require('nvim-treesitter-textobjects.select')
|
|
local function map(lhs, query)
|
|
vim.keymap.set({ 'x', 'o' }, lhs, function()
|
|
select.select_textobject(query, 'textobjects')
|
|
end, { desc = 'Select ' .. query })
|
|
end
|
|
|
|
map('ac', '@class.outer') -- Class text objects
|
|
map('ic', '@class.inner')
|
|
map('af', '@function.outer') -- Function text objects
|
|
map('if', '@function.inner')
|
|
map('a,', '@parameter.outer') -- Parameter/argument text objects
|
|
map('i,', '@parameter.inner')
|
|
map('a/', '@comment.outer') -- Comment text objects
|
|
map('i/', '@comment.inner')
|
|
end,
|
|
},
|
|
|
|
{ 'nvim-treesitter/nvim-treesitter-context', opts = {} },
|
|
|
|
{
|
|
'danymat/neogen',
|
|
config = function()
|
|
require('neogen').setup({ snippet_engine = 'luasnip' })
|
|
vim.keymap.set('n', '<leader>d', require('neogen').generate,
|
|
{ desc = 'Generate documentation' })
|
|
end,
|
|
},
|
|
|
|
'davidmh/mdx.nvim',
|
|
}
|