neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit ca6dbf3558cec83f1d42a1e5f670c40c5893554e
parent 3d9c028a4ce1557af7f7269968db5dd0c480f270
Author: Calvin Bochulak <calvin.bochulak@gmail.com>
Date:   Sat, 23 Mar 2024 15:46:54 -0600

fix(vim.iter): use correct cmp function when truncating tail in `take` (#27998)


Diffstat:
Mruntime/lua/vim/iter.lua | 3++-
Mtest/functional/lua/iter_spec.lua | 6++++++
2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/runtime/lua/vim/iter.lua b/runtime/lua/vim/iter.lua @@ -709,7 +709,8 @@ end ---@private function ListIter:take(n) local inc = self._head < self._tail and 1 or -1 - self._tail = math.min(self._tail, self._head + n * inc) + local cmp = self._head < self._tail and math.min or math.max + self._tail = cmp(self._tail, self._head + n * inc) return self end diff --git a/test/functional/lua/iter_spec.lua b/test/functional/lua/iter_spec.lua @@ -249,6 +249,12 @@ describe('vim.iter', function() do local t = { 4, 3, 2, 1 } + eq({ 1, 2, 3 }, vim.iter(t):rev():take(3):totable()) + eq({ 2, 3, 4 }, vim.iter(t):take(3):rev():totable()) + end + + do + local t = { 4, 3, 2, 1 } local it = vim.iter(t) eq({ 4, 3 }, it:take(2):totable()) -- tail is already set from the previous take()