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', 'd', require('neogen').generate, { desc = 'Generate documentation' }) end, }, 'davidmh/mdx.nvim', }