test: add test for 'foldcolumn' with cmdwin (#27355)

This commit is contained in:
zeertzjq 2024-02-06 11:44:53 +08:00 committed by GitHub
parent b3bda2f043
commit f6042d5c30
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 83 additions and 95 deletions

View File

@ -2,6 +2,7 @@ local helpers = require('test.functional.helpers')(after_each)
local clear = helpers.clear
local insert = helpers.insert
local exec = helpers.exec
local feed = helpers.feed
local expect = helpers.expect
local command = helpers.command
@ -9,7 +10,7 @@ local fn = helpers.fn
local eq = helpers.eq
local neq = helpers.neq
describe('Folds', function()
describe('Folding', function()
local tempfname = 'Xtest-fold.txt'
setup(clear)
@ -423,6 +424,42 @@ a]],
eq(14, fn.foldclosedend(11))
end)
it('fdm=expr works correctly with :move #18668', function()
exec([[
set foldmethod=expr foldexpr=indent(v:lnum)
let content = ['', '', 'Line1', ' Line2', ' Line3',
\ 'Line4', ' Line5', ' Line6',
\ 'Line7', ' Line8', ' Line9']
call append(0, content)
normal! zM
call cursor(4, 1)
move 2
move 1
]])
expect([[
Line2
Line3
Line1
Line4
Line5
Line6
Line7
Line8
Line9
]])
eq(0, fn.foldlevel(1))
eq(3, fn.foldclosedend(2))
eq(0, fn.foldlevel(4))
eq(0, fn.foldlevel(5))
eq(0, fn.foldlevel(6))
eq(8, fn.foldclosedend(7))
eq(0, fn.foldlevel(9))
eq(11, fn.foldclosedend(10))
eq(0, fn.foldlevel(12))
end)
it('no folds remain if :delete makes buffer empty #19671', function()
command('setlocal foldmethod=manual')
fn.setline(1, { 'foo', 'bar', 'baz' })
@ -445,7 +482,7 @@ a]],
eq(1, fn.foldlevel(1))
end)
it('updates correctly with indent method and visual blockwise insertion #22898', function()
it('fdm=indent updates correctly with visual blockwise insertion #22898', function()
insert([[
a
b
@ -456,7 +493,7 @@ a]],
eq(1, fn.foldlevel(2))
end)
it("doesn't open folds with indent method when inserting lower foldlevel line", function()
it("fdm=indent doesn't open folds when inserting lower foldlevel line", function()
insert([[
insert an unindented line under this line
keep the lines under this line folded

View File

@ -56,7 +56,7 @@ describe('folded lines', function()
})
end)
it('work with more than one signcolumn', function()
it('with more than one signcolumn', function()
command('set signcolumn=yes:9')
feed('i<cr><esc>')
feed('vkzf')
@ -296,7 +296,7 @@ describe('folded lines', function()
describe("when 'cursorline' is set", function()
local function cursorline_tests(foldtext)
local sfx = not foldtext and ' (disabled foldtext)' or ''
local sfx = not foldtext and ' (transparent foldtext)' or ''
it('with high-priority CursorLine' .. sfx, function()
command('hi! CursorLine guibg=NONE guifg=Red gui=NONE')
test_folded_cursorline(foldtext)
@ -320,7 +320,7 @@ describe('folded lines', function()
cursorline_tests(false)
end)
it('work with spell', function()
it('with spell', function()
command('set spell')
insert(content1)
@ -339,7 +339,7 @@ describe('folded lines', function()
end
end)
it('work with matches', function()
it('with matches', function()
insert(content1)
command('highlight MyWord gui=bold guibg=red guifg=white')
command("call matchadd('MyWord', '\\V' . 'test', -1)")
@ -358,7 +358,7 @@ describe('folded lines', function()
end
end)
it('works with multibyte fillchars', function()
it('with multibyte fillchars', function()
insert([[
aa
bb
@ -535,7 +535,7 @@ describe('folded lines', function()
end
end)
it('works with split', function()
it('with split', function()
insert([[
aa
bb
@ -695,7 +695,7 @@ describe('folded lines', function()
end
end)
it('works with vsplit', function()
it('with vsplit', function()
insert([[
aa
bb
@ -867,7 +867,7 @@ describe('folded lines', function()
end
end)
it('works with tab', function()
it('with tabpages', function()
insert([[
aa
bb
@ -1006,7 +1006,7 @@ describe('folded lines', function()
end
end)
it('works with multibyte text', function()
it('with multibyte text', function()
eq(true, api.nvim_get_option_value('arabicshape', {}))
insert([[
å x̨̣̘̫̲͚͎̎͂̀̂͛͛̾͢͟ العَرَبِيَّة
@ -1198,8 +1198,8 @@ describe('folded lines', function()
end
end)
it('work in cmdline window', function()
feed_command('set foldmethod=manual')
it('in cmdline window', function()
feed_command('set foldmethod=manual foldcolumn=1')
feed_command('let x = 1')
feed_command('/alpha')
feed_command('/omega')
@ -1214,22 +1214,22 @@ describe('folded lines', function()
{3:[Command Line] }|
[3:---------------------------------------------]|
## grid 2
|
{7: } |
## grid 3
: |
## grid 4
{1::}set foldmethod=manual |
{1::}let x = 1 |
{1::}^ |
{1::}{7: }set foldmethod=manual foldcolumn=1 |
{1::}{7: }let x = 1 |
{1::}{7: }^ |
{1:~ }|
]])
else
screen:expect([[
|
{7: } |
{2:[No Name] }|
{1::}set foldmethod=manual |
{1::}let x = 1 |
{1::}^ |
{1::}{7: }set foldmethod=manual foldcolumn=1 |
{1::}{7: }let x = 1 |
{1::}{7: }^ |
{1:~ }|
{3:[Command Line] }|
: |
@ -1246,20 +1246,20 @@ describe('folded lines', function()
{3:[Command Line] }|
[3:---------------------------------------------]|
## grid 2
|
{7: } |
## grid 3
: |
## grid 4
{1::}{5:^+-- 2 lines: set foldmethod=manual·········}|
{1::} |
{1::}{7:+}{5:^+-- 2 lines: set foldmethod=manual foldcol}|
{1::}{7: } |
{1:~ }|*2
]])
else
screen:expect([[
|
{7: } |
{2:[No Name] }|
{1::}{5:^+-- 2 lines: set foldmethod=manual·········}|
{1::} |
{1::}{7:+}{5:^+-- 2 lines: set foldmethod=manual foldcol}|
{1::}{7: } |
{1:~ }|*2
{3:[Command Line] }|
: |
@ -1273,14 +1273,14 @@ describe('folded lines', function()
[2:---------------------------------------------]|*7
[3:---------------------------------------------]|
## grid 2
^ |
{7: }^ |
{1:~ }|*6
## grid 3
: |
]])
else
screen:expect([[
^ |
{7: }^ |
{1:~ }|*6
: |
]])
@ -1296,22 +1296,22 @@ describe('folded lines', function()
{3:[Command Line] }|
[3:---------------------------------------------]|
## grid 2
|
{7: } |
## grid 3
/ |
## grid 5
{1:/}alpha |
{1:/}{6:omega} |
{1:/}^ |
{1:/}{7: }alpha |
{1:/}{7: }{6:omega} |
{1:/}{7: }^ |
{1:~ }|
]])
else
screen:expect([[
|
{7: } |
{2:[No Name] }|
{1:/}alpha |
{1:/}{6:omega} |
{1:/}^ |
{1:/}{7: }alpha |
{1:/}{7: }{6:omega} |
{1:/}{7: }^ |
{1:~ }|
{3:[Command Line] }|
/ |
@ -1328,18 +1328,18 @@ describe('folded lines', function()
{3:[Command Line] }|
[3:---------------------------------------------]|
## grid 2
|
{7: } |
## grid 3
/ |
## grid 5
{1:/}{5:^+-- 3 lines: alpha·························}|
{1:/}{7:+}{5:^+-- 3 lines: alpha························}|
{1:~ }|*3
]])
else
screen:expect([[
|
{7: } |
{2:[No Name] }|
{1:/}{5:^+-- 3 lines: alpha·························}|
{1:/}{7:+}{5:^+-- 3 lines: alpha························}|
{1:~ }|*3
{3:[Command Line] }|
/ |
@ -1347,7 +1347,7 @@ describe('folded lines', function()
end
end)
it('work with autoresize', function()
it('foldcolumn autoresize', function()
fn.setline(1, 'line 1')
fn.setline(2, 'line 2')
fn.setline(3, 'line 3')
@ -1501,7 +1501,7 @@ describe('folded lines', function()
end
end)
it('does not crash when foldtext is longer than columns #12988', function()
it('no crash when foldtext is longer than columns #12988', function()
exec([[
function! MyFoldText() abort
return repeat('-', &columns + 100)
@ -1531,55 +1531,6 @@ describe('folded lines', function()
assert_alive()
end)
it('work correctly with :move #18668', function()
screen:try_resize(45, 12)
exec([[
set foldmethod=expr foldexpr=indent(v:lnum)
let content = ['', '', 'Line1', ' Line2', ' Line3',
\ 'Line4', ' Line5', ' Line6',
\ 'Line7', ' Line8', ' Line9']
call append(0, content)
normal! zM
call cursor(4, 1)
move 2
move 1
]])
if multigrid then
screen:expect([[
## grid 1
[2:---------------------------------------------]|*11
[3:---------------------------------------------]|
## grid 2
|
{5:^+-- 2 lines: Line2··························}|
|
Line1 |
Line4 |
{5:+-- 2 lines: Line5··························}|
Line7 |
{5:+-- 2 lines: Line8··························}|
|
{1:~ }|*2
## grid 3
|
]])
else
screen:expect([[
|
{5:^+-- 2 lines: Line2··························}|
|
Line1 |
Line4 |
{5:+-- 2 lines: Line5··························}|
Line7 |
{5:+-- 2 lines: Line8··························}|
|
{1:~ }|*2
|
]])
end
end)
it('fold text is shown when text has been scrolled to the right #19123', function()
insert(content1)
command('set number nowrap')
@ -2541,7 +2492,7 @@ describe('folded lines', function()
end
end)
it('support foldtext with virtual text format', function()
it('foldtext with virtual text format', function()
screen:try_resize(30, 7)
insert(content1)
command('hi! CursorLine guibg=NONE guifg=Red gui=NONE')
@ -2666,7 +2617,7 @@ describe('folded lines', function()
end
end)
it('supports disabled foldtext', function()
it('transparent foldtext', function()
screen:try_resize(30, 7)
insert(content1)
command('hi! CursorLine guibg=NONE guifg=Red gui=NONE')