diff options
Diffstat (limited to 'test/functional/ui/popupmenu_spec.lua')
| -rw-r--r-- | test/functional/ui/popupmenu_spec.lua | 6213 |
1 files changed, 3721 insertions, 2492 deletions
diff --git a/test/functional/ui/popupmenu_spec.lua b/test/functional/ui/popupmenu_spec.lua index c681453294..a6cd216d84 100644 --- a/test/functional/ui/popupmenu_spec.lua +++ b/test/functional/ui/popupmenu_spec.lua @@ -5,6 +5,7 @@ local clear, feed = helpers.clear, helpers.feed local source = helpers.source local insert = helpers.insert local meths = helpers.meths +local async_meths = helpers.async_meths local command = helpers.command local funcs = helpers.funcs local eq = helpers.eq @@ -1023,1870 +1024,11 @@ describe('ui/ext_popupmenu', function() end) end) +describe("builtin popupmenu 'pumblend'", function() + before_each(clear) -describe('builtin popupmenu', function() - local screen - before_each(function() - clear() - screen = Screen.new(32, 20) - screen:attach() - screen:set_default_attr_ids({ - -- popup selected item / scrollbar track - ['s'] = {background = Screen.colors.WebGray}, - -- popup non-selected item - ['n'] = {background = Screen.colors.LightMagenta}, - -- popup scrollbar knob - ['c'] = {background = Screen.colors.Grey0}, - [1] = {bold = true, foreground = Screen.colors.Blue}, - [2] = {bold = true}, - [3] = {reverse = true}, - [4] = {bold = true, reverse = true}, - [5] = {bold = true, foreground = Screen.colors.SeaGreen}, - [6] = {foreground = Screen.colors.Grey100, background = Screen.colors.Red}, - [7] = {background = Screen.colors.Yellow}, -- Search - [8] = {foreground = Screen.colors.Red}, - }) - end) - - it('with preview-window above', function() - feed(':ped<CR><c-w>4+') - feed('iaa bb cc dd ee ff gg hh ii jj<cr>') - feed('<c-x><c-n>') - screen:expect([[ - aa bb cc dd ee ff gg hh ii jj | - aa | - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {3:[No Name] [Preview][+] }| - aa bb cc dd ee ff gg hh ii jj | - aa^ | - {s:aa }{c: }{1: }| - {n:bb }{c: }{1: }| - {n:cc }{c: }{1: }| - {n:dd }{c: }{1: }| - {n:ee }{c: }{1: }| - {n:ff }{c: }{1: }| - {n:gg }{s: }{1: }| - {n:hh }{s: }{4: }| - {2:-- }{5:match 1 of 10} | - ]]) - end) - - it('with preview-window below', function() - feed(':ped<CR><c-w>4+<c-w>r') - feed('iaa bb cc dd ee ff gg hh ii jj<cr>') - feed('<c-x><c-n>') - screen:expect([[ - aa bb cc dd ee ff gg hh ii jj | - aa^ | - {s:aa }{c: }{1: }| - {n:bb }{c: }{1: }| - {n:cc }{c: }{1: }| - {n:dd }{c: }{1: }| - {n:ee }{c: }{1: }| - {n:ff }{c: }{1: }| - {n:gg }{s: }{1: }| - {n:hh }{s: }{4: }| - aa bb cc dd ee ff gg hh ii jj | - aa | - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {3:[No Name] [Preview][+] }| - {2:-- }{5:match 1 of 10} | - ]]) - end) - - it('with preview-window above and tall and inverted', function() - feed(':ped<CR><c-w>8+') - feed('iaa<cr>bb<cr>cc<cr>dd<cr>ee<cr>') - feed('ff<cr>gg<cr>hh<cr>ii<cr>jj<cr>') - feed('kk<cr>ll<cr>mm<cr>nn<cr>oo<cr>') - feed('<c-x><c-n>') - screen:expect([[ - aa | - bb | - cc | - dd | - {s:aa }{c: }{3:ew][+] }| - {n:bb }{c: } | - {n:cc }{c: } | - {n:dd }{c: } | - {n:ee }{c: } | - {n:ff }{c: } | - {n:gg }{c: } | - {n:hh }{c: } | - {n:ii }{c: } | - {n:jj }{c: } | - {n:kk }{c: } | - {n:ll }{s: } | - {n:mm }{s: } | - aa^ | - {4:[No Name] [+] }| - {2:-- }{5:match 1 of 15} | - ]]) - end) - - it('with preview-window above and short and inverted', function() - feed(':ped<CR><c-w>4+') - feed('iaa<cr>bb<cr>cc<cr>dd<cr>ee<cr>') - feed('ff<cr>gg<cr>hh<cr>ii<cr>jj<cr>') - feed('<c-x><c-n>') - screen:expect([[ - aa | - bb | - cc | - dd | - ee | - ff | - gg | - hh | - {s:aa }{c: }{3:ew][+] }| - {n:bb }{c: } | - {n:cc }{c: } | - {n:dd }{c: } | - {n:ee }{c: } | - {n:ff }{c: } | - {n:gg }{c: } | - {n:hh }{c: } | - {n:ii }{s: } | - aa^ | - {4:[No Name] [+] }| - {2:-- }{5:match 1 of 10} | - ]]) - end) - - it('with preview-window below and inverted', function() - feed(':ped<CR><c-w>4+<c-w>r') - feed('iaa<cr>bb<cr>cc<cr>dd<cr>ee<cr>') - feed('ff<cr>gg<cr>hh<cr>ii<cr>jj<cr>') - feed('<c-x><c-n>') - screen:expect([[ - {s:aa }{c: } | - {n:bb }{c: } | - {n:cc }{c: } | - {n:dd }{c: } | - {n:ee }{c: } | - {n:ff }{c: } | - {n:gg }{s: } | - {n:hh }{s: } | - aa^ | - {4:[No Name] [+] }| - aa | - bb | - cc | - dd | - ee | - ff | - gg | - hh | - {3:[No Name] [Preview][+] }| - {2:-- }{5:match 1 of 10} | - ]]) - end) - - -- oldtest: Test_pum_with_preview_win() - it('preview window opened during completion', function() - exec([[ - funct Omni_test(findstart, base) - if a:findstart - return col(".") - 1 - endif - return [#{word: "one", info: "1info"}, #{word: "two", info: "2info"}, #{word: "three", info: "3info"}] - endfunc - set omnifunc=Omni_test - set completeopt+=longest - ]]) - feed('Gi<C-X><C-O>') - screen:expect([[ - ^ | - {n:one }{1: }| - {n:two }{1: }| - {n:three }{1: }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {2:-- }{8:Back at original} | - ]]) - feed('<C-N>') - screen:expect([[ - 1info | - | - {1:~ }| - {3:[Scratch] [Preview] }| - one^ | - {s:one }{1: }| - {n:two }{1: }| - {n:three }{1: }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {4:[No Name] [+] }| - {2:-- }{5:match 1 of 3} | - ]]) - end) - - it('with vsplits', function() - insert('aaa aab aac\n') - feed(':vsplit<cr>') - screen:expect([[ - aaa aab aac │aaa aab aac| - ^ │ | - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {4:[No Name] [+] }{3:<Name] [+] }| - :vsplit | - ]]) - - feed('ibbb a<c-x><c-n>') - screen:expect([[ - aaa aab aac │aaa aab aac| - bbb aaa^ │bbb aaa | - {1:~ }{s: aaa }{1: }│{1:~ }| - {1:~ }{n: aab }{1: }│{1:~ }| - {1:~ }{n: aac }{1: }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {4:[No Name] [+] }{3:<Name] [+] }| - {2:-- }{5:match 1 of 3} | - ]]) - - feed('<esc><c-w><c-w>oc a<c-x><c-n>') - screen:expect([[ - aaa aab aac│aaa aab aac | - bbb aaa │bbb aaa | - c aaa │c aaa^ | - {1:~ }│{1:~}{s: aaa }{1: }| - {1:~ }│{1:~}{n: aab }{1: }| - {1:~ }│{1:~}{n: aac }{1: }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {1:~ }│{1:~ }| - {3:<Name] [+] }{4:[No Name] [+] }| - {2:-- }{5:match 1 of 3} | - ]]) - end) - - it('with split and scroll', function() - screen:try_resize(60,14) - command("split") - command("set completeopt+=noinsert") - command("set mouse=a") - insert([[ - Lorem ipsum dolor sit amet, consectetur - adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. - Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex - ea commodo consequat. Duis aute irure dolor in - reprehenderit in voluptate velit esse cillum - dolore eu fugiat nulla pariatur. Excepteur sint - occaecat cupidatat non proident, sunt in culpa - qui officia deserunt mollit anim id est - laborum. - ]]) - - screen:expect([[ - reprehenderit in voluptate velit esse cillum | - dolore eu fugiat nulla pariatur. Excepteur sint | - occaecat cupidatat non proident, sunt in culpa | - qui officia deserunt mollit anim id est | - laborum. | - ^ | - {4:[No Name] [+] }| - Lorem ipsum dolor sit amet, consectetur | - adipisicing elit, sed do eiusmod tempor | - incididunt ut labore et dolore magna aliqua. | - Ut enim ad minim veniam, quis nostrud | - exercitation ullamco laboris nisi ut aliquip ex | - {3:[No Name] [+] }| - | - ]]) - - feed('ggOEst <c-x><c-p>') - screen:expect([[ - Est ^ | - L{n: sunt }{s: }sit amet, consectetur | - a{n: in }{s: }sed do eiusmod tempor | - i{n: culpa }{s: }re et dolore magna aliqua. | - U{n: qui }{s: }eniam, quis nostrud | - e{n: officia }{s: }co laboris nisi ut aliquip ex | - {4:[No}{n: deserunt }{s: }{4: }| - L{n: mollit }{s: }sit amet, consectetur | - a{n: anim }{s: }sed do eiusmod tempor | - i{n: id }{s: }re et dolore magna aliqua. | - U{n: est }{s: }eniam, quis nostrud | - e{n: laborum }{c: }co laboris nisi ut aliquip ex | - {3:[No}{s: Est }{c: }{3: }| - {2:-- Keyword Local completion (^N^P) }{5:match 1 of 65} | - ]]) - - meths.input_mouse('wheel', 'down', '', 0, 9, 40) - screen:expect([[ - Est ^ | - L{n: sunt }{s: }sit amet, consectetur | - a{n: in }{s: }sed do eiusmod tempor | - i{n: culpa }{s: }re et dolore magna aliqua. | - U{n: qui }{s: }eniam, quis nostrud | - e{n: officia }{s: }co laboris nisi ut aliquip ex | - {4:[No}{n: deserunt }{s: }{4: }| - U{n: mollit }{s: }eniam, quis nostrud | - e{n: anim }{s: }co laboris nisi ut aliquip ex | - e{n: id }{s: }at. Duis aute irure dolor in | - r{n: est }{s: }oluptate velit esse cillum | - d{n: laborum }{c: }ulla pariatur. Excepteur sint | - {3:[No}{s: Est }{c: }{3: }| - {2:-- Keyword Local completion (^N^P) }{5:match 1 of 65} | - ]]) - - feed('e') - screen:expect([[ - Est e^ | - L{n: elit } sit amet, consectetur | - a{n: eiusmod } sed do eiusmod tempor | - i{n: et }ore et dolore magna aliqua. | - U{n: enim }veniam, quis nostrud | - e{n: exercitation }mco laboris nisi ut aliquip ex | - {4:[No}{n: ex }{4: }| - U{n: ea }veniam, quis nostrud | - e{n: esse }mco laboris nisi ut aliquip ex | - e{n: eu }uat. Duis aute irure dolor in | - r{s: est }voluptate velit esse cillum | - dolore eu fugiat nulla pariatur. Excepteur sint | - {3:[No Name] [+] }| - {2:-- Keyword Local completion (^N^P) }{5:match 1 of 65} | - ]]) - - meths.input_mouse('wheel', 'up', '', 0, 9, 40) - screen:expect([[ - Est e^ | - L{n: elit } sit amet, consectetur | - a{n: eiusmod } sed do eiusmod tempor | - i{n: et }ore et dolore magna aliqua. | - U{n: enim }veniam, quis nostrud | - e{n: exercitation }mco laboris nisi ut aliquip ex | - {4:[No}{n: ex }{4: }| - L{n: ea } sit amet, consectetur | - a{n: esse } sed do eiusmod tempor | - i{n: eu }ore et dolore magna aliqua. | - U{s: est }veniam, quis nostrud | - exercitation ullamco laboris nisi ut aliquip ex | - {3:[No Name] [+] }| - {2:-- Keyword Local completion (^N^P) }{5:match 1 of 65} | - ]]) - - feed('s') - screen:expect([[ - Est es^ | - L{n: esse } sit amet, consectetur | - a{s: est } sed do eiusmod tempor | - incididunt ut labore et dolore magna aliqua. | - Ut enim ad minim veniam, quis nostrud | - exercitation ullamco laboris nisi ut aliquip ex | - {4:[No Name] [+] }| - Lorem ipsum dolor sit amet, consectetur | - adipisicing elit, sed do eiusmod tempor | - incididunt ut labore et dolore magna aliqua. | - Ut enim ad minim veniam, quis nostrud | - exercitation ullamco laboris nisi ut aliquip ex | - {3:[No Name] [+] }| - {2:-- Keyword Local completion (^N^P) }{5:match 1 of 65} | - ]]) - - meths.input_mouse('wheel', 'down', '', 0, 9, 40) - screen:expect([[ - Est es^ | - L{n: esse } sit amet, consectetur | - a{s: est } sed do eiusmod tempor | - incididunt ut labore et dolore magna aliqua. | - Ut enim ad minim veniam, quis nostrud | - exercitation ullamco laboris nisi ut aliquip ex | - {4:[No Name] [+] }| - Ut enim ad minim veniam, quis nostrud | - exercitation ullamco laboris nisi ut aliquip ex | - ea commodo consequat. Duis aute irure dolor in | - reprehenderit in voluptate velit esse cillum | - dolore eu fugiat nulla pariatur. Excepteur sint | - {3:[No Name] [+] }| - {2:-- Keyword Local completion (^N^P) }{5:match 1 of 65} | - ]]) - - feed('<bs>') - screen:expect([[ - Est e^ | - L{n: elit } sit amet, consectetur | - a{n: eiusmod } sed do eiusmod tempor | - i{n: et }ore et dolore magna aliqua. | - U{n: enim }veniam, quis nostrud | - e{n: exercitation }mco laboris nisi ut aliquip ex | - {4:[No}{n: ex }{4: }| - U{n: ea }veniam, quis nostrud | - e{n: esse }mco laboris nisi ut aliquip ex | - e{n: eu }uat. Duis aute irure dolor in | - r{s: est }voluptate velit esse cillum | - dolore eu fugiat nulla pariatur. Excepteur sint | - {3:[No Name] [+] }| - {2:-- Keyword Local completion (^N^P) }{5:match 1 of 65} | - ]]) - - feed('<c-p>') - screen:expect([[ - Est eu^ | - L{n: elit } sit amet, consectetur | - a{n: eiusmod } sed do eiusmod tempor | - i{n: et }ore et dolore magna aliqua. | - U{n: enim }veniam, quis nostrud | - e{n: exercitation }mco laboris nisi ut aliquip ex | - {4:[No}{n: ex }{4: }| - U{n: ea }veniam, quis nostrud | - e{n: esse }mco laboris nisi ut aliquip ex | - e{s: eu }uat. Duis aute irure dolor in | - r{n: est }voluptate velit esse cillum | - dolore eu fugiat nulla pariatur. Excepteur sint | - {3:[No Name] [+] }| - {2:-- Keyword Local completion (^N^P) }{5:match 22 of 65} | - ]]) - - meths.input_mouse('wheel', 'down', '', 0, 9, 40) - screen:expect([[ - Est eu^ | - L{n: elit } sit amet, consectetur | - a{n: eiusmod } sed do eiusmod tempor | - i{n: et }ore et dolore magna aliqua. | - U{n: enim }veniam, quis nostrud | - e{n: exercitation }mco laboris nisi ut aliquip ex | - {4:[No}{n: ex }{4: }| - r{n: ea }voluptate velit esse cillum | - d{n: esse }nulla pariatur. Excepteur sint | - o{s: eu }t non proident, sunt in culpa | - q{n: est }unt mollit anim id est | - laborum. | - {3:[No Name] [+] }| - {2:-- Keyword Local completion (^N^P) }{5:match 22 of 65} | - ]]) - - - funcs.complete(4, {'ea', 'eeeeeeeeeeeeeeeeee', 'ei', 'eo', 'eu', 'ey', 'eå', 'eä', 'eö'}) - screen:expect([[ - Est eu^ | - {s: ea }t amet, consectetur | - {n: eeeeeeeeeeeeeeeeee }d do eiusmod tempor | - {n: ei } et dolore magna aliqua. | - {n: eo }iam, quis nostrud | - {n: eu } laboris nisi ut aliquip ex | - {4:[N}{n: ey }{4: }| - {n: eå }uptate velit esse cillum | - {n: eä }la pariatur. Excepteur sint | - {n: eö }on proident, sunt in culpa | - qui officia deserunt mollit anim id est | - laborum. | - {3:[No Name] [+] }| - {2:-- Keyword Local completion (^N^P) }{5:match 1 of 9} | - ]]) - - funcs.complete(4, {'ea', 'eee', 'ei', 'eo', 'eu', 'ey', 'eå', 'eä', 'eö'}) - screen:expect([[ - Est eu^ | - {s: ea }r sit amet, consectetur | - {n: eee }, sed do eiusmod tempor | - {n: ei }bore et dolore magna aliqua. | - {n: eo } veniam, quis nostrud | - {n: eu }amco laboris nisi ut aliquip ex | - {4:[N}{n: ey }{4: }| - {n: eå } voluptate velit esse cillum | - {n: eä } nulla pariatur. Excepteur sint | - {n: eö }at non proident, sunt in culpa | - qui officia deserunt mollit anim id est | - laborum. | - {3:[No Name] [+] }| - {2:-- INSERT --} | - ]]) - - feed('<c-n>') - screen:expect([[ - Esteee^ | - {n: ea }r sit amet, consectetur | - {s: eee }, sed do eiusmod tempor | - {n: ei }bore et dolore magna aliqua. | - {n: eo } veniam, quis nostrud | - {n: eu }amco laboris nisi ut aliquip ex | - {4:[N}{n: ey }{4: }| - {n: eå } voluptate velit esse cillum | - {n: eä } nulla pariatur. Excepteur sint | - {n: eö }at non proident, sunt in culpa | - qui officia deserunt mollit anim id est | - laborum. | - {3:[No Name] [+] }| - {2:-- INSERT --} | - ]]) - - funcs.complete(6, {'foo', 'bar'}) - screen:expect([[ - Esteee^ | - Lo{s: foo }sit amet, consectetur | - ad{n: bar }sed do eiusmod tempor | - incididunt ut labore et dolore magna aliqua. | - Ut enim ad minim veniam, quis nostrud | - exercitation ullamco laboris nisi ut aliquip ex | - {4:[No Name] [+] }| - reprehenderit in voluptate velit esse cillum | - dolore eu fugiat nulla pariatur. Excepteur sint | - occaecat cupidatat non proident, sunt in culpa | - qui officia deserunt mollit anim id est | - laborum. | - {3:[No Name] [+] }| - {2:-- INSERT --} | - ]]) - - feed('<c-y>') - screen:expect([[ - Esteefoo^ | - Lorem ipsum dolor sit amet, consectetur | - adipisicing elit, sed do eiusmod tempor | - incididunt ut labore et dolore magna aliqua. | - Ut enim ad minim veniam, quis nostrud | - exercitation ullamco laboris nisi ut aliquip ex | - {4:[No Name] [+] }| - reprehenderit in voluptate velit esse cillum | - dolore eu fugiat nulla pariatur. Excepteur sint | - occaecat cupidatat non proident, sunt in culpa | - qui officia deserunt mollit anim id est | - laborum. | - {3:[No Name] [+] }| - {2:-- INSERT --} | - ]]) - end) - - it('can be moved due to wrap or resize', function() - feed('isome long prefix before the ') - command("set completeopt+=noinsert,noselect") - command("set linebreak") - funcs.complete(29, {'word', 'choice', 'text', 'thing'}) - screen:expect([[ - some long prefix before the ^ | - {1:~ }{n: word }| - {1:~ }{n: choice}| - {1:~ }{n: text }| - {1:~ }{n: thing }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {2:-- INSERT --} | - ]]) - - feed('<c-p>') - screen:expect([[ - some long prefix before the | - thing^ | - {n:word }{1: }| - {n:choice }{1: }| - {n:text }{1: }| - {s:thing }{1: }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {2:-- INSERT --} | - ]]) - - feed('<c-p>') - screen:expect([[ - some long prefix before the text| - {1:^~ }{n: word }| - {1:~ }{n: choice}| - {1:~ }{s: text }| - {1:~ }{n: thing }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {2:-- INSERT --} | - ]]) - - screen:try_resize(30,8) - screen:expect([[ - some long prefix before the | - text^ | - {n:word }{1: }| - {n:choice }{1: }| - {s:text }{1: }| - {n:thing }{1: }| - {1:~ }| - {2:-- INSERT --} | - ]]) - - screen:try_resize(50,8) - screen:expect([[ - some long prefix before the text^ | - {1:~ }{n: word }{1: }| - {1:~ }{n: choice }{1: }| - {1:~ }{s: text }{1: }| - {1:~ }{n: thing }{1: }| - {1:~ }| - {1:~ }| - {2:-- INSERT --} | - ]]) - - screen:try_resize(25,10) - screen:expect([[ - some long prefix before | - the text^ | - {1:~ }{n: word }{1: }| - {1:~ }{n: choice }{1: }| - {1:~ }{s: text }{1: }| - {1:~ }{n: thing }{1: }| - {1:~ }| - {1:~ }| - {1:~ }| - {2:-- INSERT --} | - ]]) - - screen:try_resize(12,5) - screen:expect([[ - some long | - prefix | - bef{n: word } | - tex{n: }^ | - {2:-- INSERT -} | - ]]) - - -- can't draw the pum, but check we don't crash - screen:try_resize(12,2) - screen:expect([[ - text^ | - {2:-- INSERT -} | - ]]) - - -- but state is preserved, pum reappears - screen:try_resize(20,8) - screen:expect([[ - some long prefix | - before the text^ | - {1:~ }{n: word }{1: }| - {1:~ }{n: choice }{1: }| - {1:~ }{s: text }{1: }| - {1:~ }{n: thing }{1: }| - {1:~ }| - {2:-- INSERT --} | - ]]) - end) - - it('with VimResized autocmd', function() - feed('isome long prefix before the ') - command("set completeopt+=noinsert,noselect") - command("autocmd VimResized * redraw!") - command("set linebreak") - funcs.complete(29, {'word', 'choice', 'text', 'thing'}) - screen:expect([[ - some long prefix before the ^ | - {1:~ }{n: word }| - {1:~ }{n: choice}| - {1:~ }{n: text }| - {1:~ }{n: thing }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {2:-- INSERT --} | - ]]) - - screen:try_resize(16,10) - screen:expect([[ - some long | - prefix before | - the ^ | - {1:~ }{n: word }| - {1:~ }{n: choice }| - {1:~ }{n: text }| - {1:~ }{n: thing }| - {1:~ }| - {1:~ }| - {2:-- INSERT --} | - ]]) - end) - - it('with rightleft window', function() - command("set rl wildoptions+=pum") - feed('isome rightleft ') - screen:expect([[ - ^ tfelthgir emos| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {2:-- INSERT --} | - ]]) - - command("set completeopt+=noinsert,noselect") - funcs.complete(16, {'word', 'choice', 'text', 'thing'}) - screen:expect([[ - ^ tfelthgir emos| - {1: }{n: drow}{1: ~}| - {1: }{n: eciohc}{1: ~}| - {1: }{n: txet}{1: ~}| - {1: }{n: gniht}{1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {2:-- INSERT --} | - ]]) - - feed('<c-n>') - screen:expect([[ - ^ drow tfelthgir emos| - {1: }{s: drow}{1: ~}| - {1: }{n: eciohc}{1: ~}| - {1: }{n: txet}{1: ~}| - {1: }{n: gniht}{1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - {1: ~}| - |