-- Highlight, edit, and navigate code return { -- 'nvim-treesitter/nvim-treesitter-textobjects', -- lazy = true, -- branch = 'main', -- dependencies = { -- 'nvim-treesitter/nvim-treesitter', -- }, -- config = function() -- -- configuration -- require('nvim-treesitter-textobjects').setup { -- select = { -- lookahead = true, -- selection_modes = { -- ['@parameter.outer'] = 'v', -- charwise -- ['@function.outer'] = 'V', -- linewise -- ['@class.outer'] = 'V', -- blockwise -- }, -- include_surrounding_whitespace = false, -- }, -- move = { -- set_jumps = true, -- }, -- } -- for keys, query in -- { -- -- or you use the queries from supported languages with textobjects.scm -- ['af'] = '@function.outer', -- ['if'] = '@function.inner', -- ['aC'] = '@class.outer', -- ['iC'] = '@class.inner', -- ['ay'] = '@conditional.outer', -- ['iy'] = '@conditional.inner', -- ['aj'] = '@loop.outer', -- ['ij'] = '@loop.inner', -- ['is'] = '@statement.inner', -- ['as'] = '@statement.outer', -- ['ac'] = '@comment.outer', -- ['ic'] = '@comment.inner', -- ['ap'] = '@comment.parameter', -- ['ip'] = '@comment.parameter', -- ['an'] = '@local.scope', -- } -- do -- vim.keymap.set({ 'n', 'x', 'o' }, keys, function() -- require('nvim-treesitter-textobjects.select').select_textobject(query, 'textobjects') -- end) -- end -- for keys, query in -- { -- -- or you use the queries from supported languages with textobjects.scm -- [']'] = '@function.outer', -- ['o'] = { '@loop.inner', '@loop.outer' }, -- ['n'] = '@local.scope', -- ['y'] = '@conditional.outer', -- ['e'] = '@statement.outer', -- ['/'] = '@comment.outer', -- } -- do -- vim.keymap.set({ 'n', 'x', 'o' }, ']' .. keys, function() -- require('nvim-treesitter-textobjects.move').goto_next_start(query, 'textobjects') -- end) -- vim.keymap.set({ 'n', 'x', 'o' }, '[' .. keys, function() -- require('nvim-treesitter-textobjects.move').goto_previous_start(query, 'textobjects') -- end) -- end -- -- require('nvim-treesitter.configs').setup { -- -- incremental_selection = { -- -- enable = true, -- -- keymaps = { -- -- -- mappings for incremental selection (visual mappings) -- -- init_selection = '', -- maps in normal mode to init the node/scope selection -- -- node_incremental = '', -- increment to the upper named parent -- -- scope_incremental = '', -- increment to the upper scope (as defined in locals.scm) -- -- node_decremental = '', -- decrement to the previous node -- -- }, -- -- }, -- -- textobjects = { -- -- -- syntax-aware textobjects -- -- enable = true, -- -- keymaps = { -- -- ['iL'] = { -- -- -- you can define your own textobjects directly here -- -- go = '(function_definition) @function', -- -- }, -- -- -- or you use the queries from supported languages with textobjects.scm -- -- ['af'] = '@function.outer', -- -- ['if'] = '@function.inner', -- -- ['aC'] = '@class.outer', -- -- ['iC'] = '@class.inner', -- -- ['ay'] = '@conditional.outer', -- -- ['iy'] = '@conditional.inner', -- -- ['aj'] = '@loop.outer', -- -- ['ij'] = '@loop.inner', -- -- ['is'] = '@statement.inner', -- -- ['as'] = '@statement.outer', -- -- ['ac'] = '@comment.outer', -- -- ['ic'] = '@comment.inner', -- -- ['ap'] = '@comment.parameter', -- -- ['ip'] = '@comment.parameter', -- -- }, -- -- move = { -- -- enable = true, -- -- set_jumps = true, -- whether to set jumps in the jumplist -- -- goto_next_start = { -- -- [']m'] = '@function.outer', -- -- [']]'] = '@class.outer', -- -- }, -- -- goto_next_end = { -- -- [']M'] = '@function.outer', -- -- [']['] = '@class.outer', -- -- }, -- -- goto_previous_start = { -- -- ['[m'] = '@function.outer', -- -- ['[['] = '@class.outer', -- -- }, -- -- goto_previous_end = { -- -- ['[M'] = '@function.outer', -- -- ['[]'] = '@class.outer', -- -- }, -- -- }, -- -- select = { -- -- enable = true, -- -- keymaps = { -- -- -- You can use the capture groups defined in textobjects.scm -- -- ['af'] = '@function.outer', -- -- ['if'] = '@function.inner', -- -- ['ac'] = '@class.outer', -- -- ['ic'] = '@class.inner', -- -- -- Or you can define your own textobjects like this -- -- ['iF'] = { -- -- python = '(function_definition) @function', -- -- cpp = '(function_definition) @function', -- -- c = '(function_definition) @function', -- -- java = '(method_declaration) @function', -- -- go = '(method_declaration) @function', -- -- }, -- -- }, -- -- }, -- -- }, -- -- } -- end, -- opts = {}, -- -- There are additional nvim-treesitter modules that you can use to interact -- -- with nvim-treesitter. You should go explore a few and see what interests you: -- -- -- -- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod` -- -- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context -- -- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects }