aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/range.lua
diff options
context:
space:
mode:
authorLuis Calle <53507599+TheLeoP@users.noreply.github.com>2026-04-09 10:01:28 -0500
committerGitHub <noreply@github.com>2026-04-09 11:01:28 -0400
commit24811c0a1410703d78e77c6a3233ff85f87964ef (patch)
tree52258fbc20cb43f92b5e13947c38375cbdf1337b /runtime/lua/vim/range.lua
parent9c5fba5df0b60cd25ac2c180a7d82fca47a105e6 (diff)
downloadrneovim-24811c0a1410703d78e77c6a3233ff85f87964ef.tar.gz
rneovim-24811c0a1410703d78e77c6a3233ff85f87964ef.tar.bz2
rneovim-24811c0a1410703d78e77c6a3233ff85f87964ef.zip
fix(vim.pos): Range:intersect() drops `buf` #38898
new() only supports nargs=5 or nargs=2, but this was passing 4 args.
Diffstat (limited to 'runtime/lua/vim/range.lua')
-rw-r--r--runtime/lua/vim/range.lua10
1 files changed, 7 insertions, 3 deletions
diff --git a/runtime/lua/vim/range.lua b/runtime/lua/vim/range.lua
index 27de39427b..03ad1b3c52 100644
--- a/runtime/lua/vim/range.lua
+++ b/runtime/lua/vim/range.lua
@@ -70,8 +70,8 @@ function Range.__index(pos, key)
end
---@package
----@overload fun(self: vim.Range, start: vim.Pos, end_: vim.Pos): vim.Range
----@overload fun(self: vim.Range, buf: integer, start_row: integer, start_col: integer, end_row: integer, end_col: integer): vim.Range
+---@overload fun(start: vim.Pos, end_: vim.Pos): vim.Range
+---@overload fun(buf: integer, start_row: integer, start_col: integer, end_row: integer, end_col: integer): vim.Range
function Range.new(...)
---@type integer, integer, integer, integer, integer|nil
local start_row, start_col, end_row, end_col, buf
@@ -223,6 +223,10 @@ end
---@return vim.Range? range that is present inside both range and `r2`.
--- `nil` if such range does not exist.
function Range:intersect(r2)
+ if self.buf ~= r2.buf then
+ return nil
+ end
+
local r1_inclusive_end_row, r1_inclusive_end_col =
to_inclusive_pos(self.buf, self.end_row, self.end_col)
local r2_inclusive_end_row, r2_inclusive_end_col =
@@ -237,7 +241,7 @@ function Range:intersect(r2)
local rs = cmp_pos(self.start_row, self.start_col, r2.start_row, r2.start_col) ~= 1 and r2 or self
local re = cmp_pos(self.end_row, self.end_col, r2.end_row, r2.end_col) ~= -1 and r2 or self
- return Range.new(rs.start_row, rs.start_col, re.end_row, re.end_col)
+ return Range.new(self.buf, rs.start_row, rs.start_col, re.end_row, re.end_col)
end
--- Converts |vim.Range| to `lsp.Range`.