mirror of
https://github.com/neovim/neovim.git
synced 2024-12-23 20:55:18 -07:00
fix(lua): vim.split may trim inner empty items
Problem:
`vim.split('a:::', ':', {trimempty=true})` trims inner empty items.
Regression from 9c49c10470
Solution:
Set `empty_start=false` when first non-empty item is found.
close #23212
This commit is contained in:
parent
9e79f7433e
commit
622b1ae38a
@ -138,7 +138,9 @@ function vim.gsplit(s, sep, opts)
|
|||||||
local seg = _pass(s:find(sep, start, plain))
|
local seg = _pass(s:find(sep, start, plain))
|
||||||
|
|
||||||
-- Trim empty segments from start/end.
|
-- Trim empty segments from start/end.
|
||||||
if trimempty and seg == '' then
|
if seg ~= '' then
|
||||||
|
empty_start = false
|
||||||
|
elseif trimempty then
|
||||||
while not done and seg == '' do
|
while not done and seg == '' do
|
||||||
empty_segs = empty_segs + 1
|
empty_segs = empty_segs + 1
|
||||||
seg = _pass(s:find(sep, start, plain))
|
seg = _pass(s:find(sep, start, plain))
|
||||||
|
@ -294,9 +294,11 @@ describe('lua stdlib', function()
|
|||||||
|
|
||||||
it('vim.gsplit, vim.split', function()
|
it('vim.gsplit, vim.split', function()
|
||||||
local tests = {
|
local tests = {
|
||||||
|
-- plain trimempty
|
||||||
{ 'a,b', ',', false, false, { 'a', 'b' } },
|
{ 'a,b', ',', false, false, { 'a', 'b' } },
|
||||||
{ ':aa::::bb:', ':', false, false, { '', 'aa', '', '', '', 'bb', '' } },
|
{ ':aa::::bb:', ':', false, false, { '', 'aa', '', '', '', 'bb', '' } },
|
||||||
{ ':aa::::bb:', ':', false, true, { 'aa', '', '', '', 'bb' } },
|
{ ':aa::::bb:', ':', false, true, { 'aa', '', '', '', 'bb' } },
|
||||||
|
{ 'aa::::bb:', ':', false, true, { 'aa', '', '', '', 'bb' } },
|
||||||
{ ':aa::bb:', ':', false, true, { 'aa', '', 'bb' } },
|
{ ':aa::bb:', ':', false, true, { 'aa', '', 'bb' } },
|
||||||
{ '/a/b:/b/\n', '[:\n]', false, true, { '/a/b', '/b/' } },
|
{ '/a/b:/b/\n', '[:\n]', false, true, { '/a/b', '/b/' } },
|
||||||
{ '::ee::ff:', ':', false, false, { '', '', 'ee', '', 'ff', '' } },
|
{ '::ee::ff:', ':', false, false, { '', '', 'ee', '', 'ff', '' } },
|
||||||
@ -315,7 +317,7 @@ describe('lua stdlib', function()
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, t in ipairs(tests) do
|
for _, t in ipairs(tests) do
|
||||||
eq(t[5], vim.split(t[1], t[2], {plain=t[3], trimempty=t[4]}))
|
eq(t[5], vim.split(t[1], t[2], {plain=t[3], trimempty=t[4]}), t[1])
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Test old signature
|
-- Test old signature
|
||||||
|
Loading…
Reference in New Issue
Block a user