From 4603b4a22f4fbfb1c4df1cd1bb5e846719f96d6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dosko=C4=8Dil?= <30779172+Dook97@users.noreply.github.com> Date: Sat, 20 Dec 2025 23:11:28 +0100 Subject: [PATCH 1/2] fixup! fix: range containment check (e.g. weird @parameter.inner behavior) (#840) --- lua/nvim-treesitter-textobjects/shared.lua | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/lua/nvim-treesitter-textobjects/shared.lua b/lua/nvim-treesitter-textobjects/shared.lua index c5947adf..9ce9e95b 100644 --- a/lua/nvim-treesitter-textobjects/shared.lua +++ b/lua/nvim-treesitter-textobjects/shared.lua @@ -217,19 +217,7 @@ end ---@param col integer ---@return boolean local function is_in_range(range, row, col) - local start_row, start_col, end_row, end_col = unpack(range) ---@type integer, integer, integer, integer - end_col = end_col - 1 - - local is_in_rows = start_row <= row and end_row >= row - local is_after_start_col_if_needed = true - if start_row == row then - is_after_start_col_if_needed = col >= start_col - end - local is_before_end_col_if_needed = true - if end_row == row then - is_before_end_col_if_needed = col <= end_col - end - return is_in_rows and is_after_start_col_if_needed and is_before_end_col_if_needed + return ts._range.contains(range, { row, col, row, col + 1 }) end -- TODO: replace with `vim.Range:has(vim.Range)` when we drop support for 0.11 @@ -237,13 +225,7 @@ end ---@param inner Range4 ---@return boolean local function contains(outer, inner) - local start_row_o, start_col_o, end_row_o, end_col_o = unpack(outer) ---@type integer, integer, integer, integer - local start_row_i, start_col_i, end_row_i, end_col_i = unpack(inner) ---@type integer, integer, integer, integer - - return start_row_o <= start_row_i - and start_col_o <= start_col_i - and end_row_o >= end_row_i - and end_col_o >= end_col_i + return ts._range.contains(outer, inner) end ---@param range Range6 From a71760d7c9b84bdfd269253c9cec71f17a46f9dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dosko=C4=8Dil?= <30779172+Dook97@users.noreply.github.com> Date: Thu, 25 Dec 2025 22:14:57 +0100 Subject: [PATCH 2/2] tests: check correct @function.inner when at end of function --- tests/select/lua/selection_mode.lua | 7 +++++++ tests/select/lua_spec.lua | 12 ++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 tests/select/lua/selection_mode.lua create mode 100644 tests/select/lua_spec.lua diff --git a/tests/select/lua/selection_mode.lua b/tests/select/lua/selection_mode.lua new file mode 100644 index 00000000..39016f3c --- /dev/null +++ b/tests/select/lua/selection_mode.lua @@ -0,0 +1,7 @@ +function a() + print('foo') +end + +function b() + print('bar') +end diff --git a/tests/select/lua_spec.lua b/tests/select/lua_spec.lua new file mode 100644 index 00000000..4e851b92 --- /dev/null +++ b/tests/select/lua_spec.lua @@ -0,0 +1,12 @@ +local Runner = require('tests.select.common').Runner + +local run = Runner:new(it, 'tests/select/lua', { + tabstop = 2, + shiftwidth = 2, + softtabstop = 0, + expandtab = true, +}) + +describe('command equality Lua:', function() + run:compare_cmds('selection_mode.lua', { row = 3, col = 0, cmds = { 'dim', 'k_D' } }) +end)