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))
|
||||
|
||||
-- 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
|
||||
empty_segs = empty_segs + 1
|
||||
seg = _pass(s:find(sep, start, plain))
|
||||
|
@ -294,9 +294,11 @@ describe('lua stdlib', function()
|
||||
|
||||
it('vim.gsplit, vim.split', function()
|
||||
local tests = {
|
||||
-- plain trimempty
|
||||
{ 'a,b', ',', false, false, { 'a', 'b' } },
|
||||
{ ':aa::::bb:', ':', false, false, { '', '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/' } },
|
||||
{ '::ee::ff:', ':', false, false, { '', '', 'ee', '', 'ff', '' } },
|
||||
@ -315,7 +317,7 @@ describe('lua stdlib', function()
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
-- Test old signature
|
||||
|
Loading…
Reference in New Issue
Block a user