summaryrefslogtreecommitdiff
path: root/.config
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2025-05-02 21:11:36 +0300
committerKyren223 <Kyren223@proton.me>2025-05-02 21:11:36 +0300
commit44115367879351f1af73157572e728ac4ba928b5 (patch)
treeb2379b6f53252416e9475984a4c16557f9ca8a5b /.config
parentabaee25d8001c72e1ed092a7fb6e3d50064eded7 (diff)
Split treesitter and treesiter-textobjects
Diffstat (limited to '.config')
-rw-r--r--.config/nvim/lua/plugins/nvim-treesitter-textobjects.lua53
-rw-r--r--.config/nvim/lua/plugins/nvim-treesitter.lua105
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,
}