From 00a3545d69d8f0b9890f2f95dc428416263a4e0f Mon Sep 17 00:00:00 2001 From: Ray Guo <33137074+RayGuo-ergou@users.noreply.github.com> Date: Mon, 20 Jan 2025 09:47:25 +1100 Subject: [PATCH] feat: migrate from treesitter textobjects to mini.ai --- nvim/lua/ergou/plugins/mini-nvim.lua | 18 ++++++++++++++++ nvim/lua/ergou/plugins/nvim-treesitter.lua | 25 +++++++++++----------- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/nvim/lua/ergou/plugins/mini-nvim.lua b/nvim/lua/ergou/plugins/mini-nvim.lua index 34948de6..5e7f360e 100644 --- a/nvim/lua/ergou/plugins/mini-nvim.lua +++ b/nvim/lua/ergou/plugins/mini-nvim.lua @@ -47,4 +47,22 @@ return { } end, }, + { + 'echasnovski/mini.ai', + opts = function() + local spec_treesitter = require('mini.ai').gen_spec.treesitter + return { + custom_textobjects = { + -- HACK: for html tags, see: https://github.com/echasnovski/mini.nvim/issues/110#issuecomment-1212277863 + t = spec_treesitter({ a = '@function.outer', i = '@function.inner' }), + a = spec_treesitter({ a = '@parameter.outer', i = '@parameter.inner' }), + A = spec_treesitter({ a = '@assignment.outer', i = '@assignment.inner' }), + f = spec_treesitter({ a = '@function.outer', i = '@function.inner' }), + c = spec_treesitter({ a = '@call.outer', i = '@call.inner' }), + l = spec_treesitter({ a = '@loop.outer', i = '@loop.inner' }), + i = spec_treesitter({ a = '@conditional.outer', i = '@conditional.inner' }), + }, + } + end, + }, } diff --git a/nvim/lua/ergou/plugins/nvim-treesitter.lua b/nvim/lua/ergou/plugins/nvim-treesitter.lua index a248bebc..04098569 100644 --- a/nvim/lua/ergou/plugins/nvim-treesitter.lua +++ b/nvim/lua/ergou/plugins/nvim-treesitter.lua @@ -117,19 +117,20 @@ return { enable = true, lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim keymaps = { + -- use mini.ai -- You can use the capture groups defined in textobjects.scm - ['aa'] = '@parameter.outer', - ['ia'] = '@parameter.inner', - ['aA'] = '@assignment.outer', - ['iA'] = '@assignment.inner', - ['af'] = '@function.outer', - ['if'] = '@function.inner', - ['ac'] = '@call.outer', - ['ic'] = '@call.inner', - ['al'] = '@loop.outer', - ['il'] = '@loop.inner', - ['ai'] = '@conditional.outer', - ['ii'] = '@conditional.inner', + -- ['aa'] = '@parameter.outer', + -- ['ia'] = '@parameter.inner', + -- ['aA'] = '@assignment.outer', + -- ['iA'] = '@assignment.inner', + -- ['af'] = '@function.outer', + -- ['if'] = '@function.inner', + -- ['ac'] = '@call.outer', + -- ['ic'] = '@call.inner', + -- ['al'] = '@loop.outer', + -- ['il'] = '@loop.inner', + -- ['ai'] = '@conditional.outer', + -- ['ii'] = '@conditional.inner', }, }, move = {