154 lines
7.1 KiB
Lua
154 lines
7.1 KiB
Lua
-- 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 = '<C-S-D>', -- maps in normal mode to init the node/scope selection
|
|
-- -- node_incremental = '<C-S-D>', -- increment to the upper named parent
|
|
-- -- scope_incremental = '<C-S-U>', -- increment to the upper scope (as defined in locals.scm)
|
|
-- -- node_decremental = '<C-S-S>', -- 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
|
|
}
|