diff options
| author | Kyren223 <Kyren223@proton.me> | 2025-05-02 21:11:36 +0300 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2025-05-02 21:11:36 +0300 |
| commit | 44115367879351f1af73157572e728ac4ba928b5 (patch) | |
| tree | b2379b6f53252416e9475984a4c16557f9ca8a5b /.config/nvim/lua/plugins | |
| parent | abaee25d8001c72e1ed092a7fb6e3d50064eded7 (diff) | |
Split treesitter and treesiter-textobjects
Diffstat (limited to '.config/nvim/lua/plugins')
| -rw-r--r-- | .config/nvim/lua/plugins/nvim-treesitter-textobjects.lua | 53 | ||||
| -rw-r--r-- | .config/nvim/lua/plugins/nvim-treesitter.lua | 105 |
2 files changed, 78 insertions, 80 deletions
diff --git a/.config/nvim/lua/plugins/nvim-treesitter-textobjects.lua b/.config/nvim/lua/plugins/nvim-treesitter-textobjects.lua new file mode 100644 index 0000000..d30b93c --- /dev/null +++ b/.config/nvim/lua/plugins/nvim-treesitter-textobjects.lua @@ -0,0 +1,53 @@ +return { + 'nvim-treesitter/nvim-treesitter-textobjects', + event = 'VeryLazy', + dependencies = { 'nvim-treesitter/nvim-treesitter' }, + config = function() + ---@diagnostic disable-next-line: missing-fields + require('nvim-treesitter.configs').setup({ + textobjects = { + select = { + enable = true, + lookahead = true, -- automatically jump forward to textobj, similar to targets.vim + keymaps = { + -- You can use the capture groups defined in textobjects.scm + ['af'] = { query = '@function.outer', desc = 'Select entire function' }, + ['if'] = { query = '@function.inner', desc = 'Select function body' }, + ['ac'] = { query = '@class.outer', desc = 'Select entire class' }, + ['ic'] = { query = '@class.inner', desc = 'Select class body' }, + ['as'] = { query = '@scope.outer', query_group = 'locals', desc = 'Select language scope' }, + ['is'] = { query = '@scope.inner', query_group = 'locals', desc = 'Select language scope' }, + ['ia'] = { query = '@assignment.rhs', desc = 'Select assignment rhs' }, + ['ip'] = { query = '@parameter.inner', desc = 'Select parameter' }, + }, + selection_modes = { + ['@parameter.outer'] = 'v', -- charwise + ['@function.outer'] = 'V', -- linewise + ['@class.outer'] = '<c-v>', -- blockwise + ['@assignment.rhs'] = 'v', -- charwise + }, + }, + swap = { + enable = true, + -- swap_next = { + -- ['<leader>sa'] = { query = '@parameter.inner', desc = 'Swap Argument (next)' }, + -- }, + -- swap_previous = { + -- ['<leader>sA'] = { query = '@parameter.inner', desc = 'Swap Argument (prev)' }, + -- }, + }, + }, + }) + + local ts_repeat_move = require('nvim-treesitter.textobjects.repeatable_move') + -- Repeat movement with ; and , + vim.keymap.set({ 'n', 'x', 'o' }, ';', ts_repeat_move.repeat_last_move_next) + vim.keymap.set({ 'n', 'x', 'o' }, ',', ts_repeat_move.repeat_last_move_previous) + + -- NOTE: You need this, otherwise the normal ; and , won't work for fFtT + vim.keymap.set({ 'n', 'x', 'o' }, 'f', ts_repeat_move.builtin_f_expr, { expr = true }) + vim.keymap.set({ 'n', 'x', 'o' }, 'F', ts_repeat_move.builtin_F_expr, { expr = true }) + vim.keymap.set({ 'n', 'x', 'o' }, 't', ts_repeat_move.builtin_t_expr, { expr = true }) + vim.keymap.set({ 'n', 'x', 'o' }, 'T', ts_repeat_move.builtin_T_expr, { expr = true }) + end, +} diff --git a/.config/nvim/lua/plugins/nvim-treesitter.lua b/.config/nvim/lua/plugins/nvim-treesitter.lua index 7ee6a47..39184cf 100644 --- a/.config/nvim/lua/plugins/nvim-treesitter.lua +++ b/.config/nvim/lua/plugins/nvim-treesitter.lua @@ -1,84 +1,29 @@ return { - { - 'nvim-treesitter/nvim-treesitter', - build = ':TSUpdate', - config = function() - ---@type userdata - ---@diagnostic disable-next-line: missing-fields - require('nvim-treesitter.configs').setup({ - auto_install = true, - highlight = { enable = true }, - indent = { enable = true }, - rainbow = { - enable = true, - extended_mode = true, - max_file_lines = nil, - }, - }) + 'nvim-treesitter/nvim-treesitter', + build = ':TSUpdate', + config = function() + ---@type userdata + ---@diagnostic disable-next-line: missing-fields + require('nvim-treesitter.configs').setup({ + auto_install = true, + highlight = { enable = true }, + indent = { enable = true }, + rainbow = { + enable = true, + extended_mode = true, + max_file_lines = nil, + }, + }) - -- 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) + -- 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 - end, - }, - { - 'nvim-treesitter/nvim-treesitter-textobjects', - event = 'VeryLazy', - dependencies = { 'nvim-treesitter/nvim-treesitter' }, - config = function() - ---@diagnostic disable-next-line: missing-fields - require('nvim-treesitter.configs').setup({ - textobjects = { - select = { - enable = true, - lookahead = true, -- automatically jump forward to textobj, similar to targets.vim - keymaps = { - -- You can use the capture groups defined in textobjects.scm - ['af'] = { query = '@function.outer', desc = 'Select entire function' }, - ['if'] = { query = '@function.inner', desc = 'Select function body' }, - ['ac'] = { query = '@class.outer', desc = 'Select entire class' }, - ['ic'] = { query = '@class.inner', desc = 'Select class body' }, - ['as'] = { query = '@scope.outer', query_group = 'locals', desc = 'Select language scope' }, - ['is'] = { query = '@scope.inner', query_group = 'locals', desc = 'Select language scope' }, - ['ia'] = { query = '@assignment.rhs', desc = 'Select assignment rhs' }, - ['ip'] = { query = '@parameter.inner', desc = 'Select parameter' }, - }, - selection_modes = { - ['@parameter.outer'] = 'v', -- charwise - ['@function.outer'] = 'V', -- linewise - ['@class.outer'] = '<c-v>', -- blockwise - ['@assignment.rhs'] = 'v', -- charwise - }, - }, - swap = { - enable = true, - -- swap_next = { - -- ['<leader>sa'] = { query = '@parameter.inner', desc = 'Swap Argument (next)' }, - -- }, - -- swap_previous = { - -- ['<leader>sA'] = { query = '@parameter.inner', desc = 'Swap Argument (prev)' }, - -- }, - }, - }, - }) - - local ts_repeat_move = require('nvim-treesitter.textobjects.repeatable_move') - -- Repeat movement with ; and , - vim.keymap.set({ 'n', 'x', 'o' }, ';', ts_repeat_move.repeat_last_move_next) - vim.keymap.set({ 'n', 'x', 'o' }, ',', ts_repeat_move.repeat_last_move_previous) - - -- NOTE: You need this, otherwise the normal ; and , won't work for fFtT - vim.keymap.set({ 'n', 'x', 'o' }, 'f', ts_repeat_move.builtin_f_expr, { expr = true }) - vim.keymap.set({ 'n', 'x', 'o' }, 'F', ts_repeat_move.builtin_F_expr, { expr = true }) - vim.keymap.set({ 'n', 'x', 'o' }, 't', ts_repeat_move.builtin_t_expr, { expr = true }) - vim.keymap.set({ 'n', 'x', 'o' }, 'T', ts_repeat_move.builtin_T_expr, { expr = true }) - end, - }, + return ft_to_lang(ft) + end + end, } |
