diff options
| author | Luis Calle <53507599+TheLeoP@users.noreply.github.com> | 2026-04-09 10:01:28 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-09 11:01:28 -0400 |
| commit | 24811c0a1410703d78e77c6a3233ff85f87964ef (patch) | |
| tree | 52258fbc20cb43f92b5e13947c38375cbdf1337b /runtime/lua/vim/range.lua | |
| parent | 9c5fba5df0b60cd25ac2c180a7d82fca47a105e6 (diff) | |
| download | rneovim-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.lua | 10 |
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`. |