diff options
Diffstat (limited to 'test/old/testdir')
-rw-r--r-- | test/old/testdir/setup.vim | 6 | ||||
-rw-r--r-- | test/old/testdir/test_diffmode.vim | 36 | ||||
-rw-r--r-- | test/old/testdir/test_filetype.vim | 1 | ||||
-rw-r--r-- | test/old/testdir/test_fold.vim | 9 | ||||
-rw-r--r-- | test/old/testdir/test_functions.vim | 18 | ||||
-rw-r--r-- | test/old/testdir/test_history.vim | 5 | ||||
-rw-r--r-- | test/old/testdir/test_options.vim | 312 | ||||
-rw-r--r-- | test/old/testdir/test_scroll_opt.vim | 84 |
8 files changed, 443 insertions, 28 deletions
diff --git a/test/old/testdir/setup.vim b/test/old/testdir/setup.vim index 4e8859a33e..b0c2a15a3f 100644 --- a/test/old/testdir/setup.vim +++ b/test/old/testdir/setup.vim @@ -26,6 +26,9 @@ if exists('s:did_load') set sessionoptions+=options set viewoptions+=options set switchbuf= + if has('win32') + set isfname+=: + endif if g:testname !~ 'test_mapping.vim$' " Make "Q" switch to Ex mode. " This does not work for all tests. @@ -50,6 +53,9 @@ tlunmenu * " roughly equivalent to test_setmouse() in Vim func Ntest_setmouse(row, col) call nvim_input_mouse('move', '', '', 0, a:row - 1, a:col - 1) + if state('m') == '' + call getchar(0) + endif endfunc " Prevent Nvim log from writing to stderr. diff --git a/test/old/testdir/test_diffmode.vim b/test/old/testdir/test_diffmode.vim index d6d9f351fc..a06411883c 100644 --- a/test/old/testdir/test_diffmode.vim +++ b/test/old/testdir/test_diffmode.vim @@ -1616,6 +1616,42 @@ func Test_diff_scroll_wrap_on() call assert_equal(1, winsaveview().topline) normal! j call assert_equal(2, winsaveview().topline) + + bwipe! + bwipe! +endfunc + +func Test_diff_scroll_many_filler() + 20new + vnew + call setline(1, ['^^^', '^^^', '$$$', '$$$']) + diffthis + setlocal scrolloff=0 + wincmd p + call setline(1, ['^^^', '^^^'] + repeat(['###'], 41) + ['$$$', '$$$']) + diffthis + setlocal scrolloff=0 + wincmd p + redraw + + " Note: need a redraw after each scroll, otherwise the test always passes. + normal! G + redraw + call assert_equal(3, winsaveview().topline) + call assert_equal(18, winsaveview().topfill) + exe "normal! \<C-B>" + redraw + call assert_equal(3, winsaveview().topline) + call assert_equal(19, winsaveview().topfill) + exe "normal! \<C-B>" + redraw + call assert_equal(2, winsaveview().topline) + call assert_equal(0, winsaveview().topfill) + exe "normal! \<C-B>" + redraw + call assert_equal(1, winsaveview().topline) + call assert_equal(0, winsaveview().topfill) + bwipe! bwipe! endfunc diff --git a/test/old/testdir/test_filetype.vim b/test/old/testdir/test_filetype.vim index e5d7085d71..c3002b6747 100644 --- a/test/old/testdir/test_filetype.vim +++ b/test/old/testdir/test_filetype.vim @@ -340,6 +340,7 @@ func s:GetFilenameChecks() abort \ 'jsonnet': ['file.jsonnet', 'file.libsonnet'], \ 'jsp': ['file.jsp'], \ 'julia': ['file.jl'], + \ 'just': ['justfile', 'Justfile', '.justfile', 'config.just'], \ 'kconfig': ['Kconfig', 'Kconfig.debug', 'Kconfig.file'], \ 'kdl': ['file.kdl'], \ 'kivy': ['file.kv'], diff --git a/test/old/testdir/test_fold.vim b/test/old/testdir/test_fold.vim index ccd1bfecf8..e529a94174 100644 --- a/test/old/testdir/test_fold.vim +++ b/test/old/testdir/test_fold.vim @@ -1569,4 +1569,13 @@ func Test_foldcolumn_linebreak_control_char() bwipe! endfunc +" This used to cause invalid memory access +func Test_foldexpr_return_empty_string() + new + setlocal foldexpr='' foldmethod=expr + redraw + + bwipe! +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/test/old/testdir/test_functions.vim b/test/old/testdir/test_functions.vim index 7b20f47f7a..b27b0be802 100644 --- a/test/old/testdir/test_functions.vim +++ b/test/old/testdir/test_functions.vim @@ -3303,4 +3303,22 @@ func Test_glob_extended_bash() let &shell=_shell endfunc +" Test for glob() with extended patterns (MS-Windows) +" Vim doesn't use 'shell' to expand wildcards on MS-Windows. +" Unlike bash, it doesn't support {,} expansion. +func Test_glob_extended_mswin() + CheckMSWindows + + call mkdir('Xtestglob/foo/bar/src', 'p') + call writefile([], 'Xtestglob/foo/bar/src/foo.sh') + call writefile([], 'Xtestglob/foo/bar/src/foo.h') + call writefile([], 'Xtestglob/foo/bar/src/foo.cpp') + + " Sort output of glob() otherwise we end up with different + " ordering depending on whether file system is case-sensitive. + let expected = ['Xtestglob/foo/bar/src/foo.cpp', 'Xtestglob/foo/bar/src/foo.h', 'Xtestglob/foo/bar/src/foo.sh'] + call assert_equal(expected, sort(glob('Xtestglob/**/foo.*', 0, 1))) + call delete('Xtestglob', 'rf') +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/test/old/testdir/test_history.vim b/test/old/testdir/test_history.vim index f1c31dee04..bb6d671725 100644 --- a/test/old/testdir/test_history.vim +++ b/test/old/testdir/test_history.vim @@ -244,8 +244,13 @@ endfunc " Test for making sure the key value is not stored in history func Test_history_crypt_key() CheckFeature cryptv + call feedkeys(":set bs=2 key=abc ts=8\<CR>", 'xt') call assert_equal('set bs=2 key= ts=8', histget(':')) + + call assert_fails("call feedkeys(':set bs=2 key-=abc ts=8\<CR>', 'xt')") + call assert_equal('set bs=2 key-= ts=8', histget(':')) + set key& bs& ts& endfunc diff --git a/test/old/testdir/test_options.vim b/test/old/testdir/test_options.vim index c56efe8786..76b7cc920b 100644 --- a/test/old/testdir/test_options.vim +++ b/test/old/testdir/test_options.vim @@ -299,11 +299,11 @@ func Test_set_completion() call assert_equal('"set tabstop thesaurus thesaurusfunc', @:) " Expand current value - call feedkeys(":set fileencodings=\<C-A>\<C-B>\"\<CR>", 'tx') - call assert_equal('"set fileencodings=ucs-bom,utf-8,default,latin1', @:) + call feedkeys(":set suffixes=\<C-A>\<C-B>\"\<CR>", 'tx') + call assert_equal('"set suffixes=.bak,~,.o,.h,.info,.swp,.obj', @:) - call feedkeys(":set fileencodings:\<C-A>\<C-B>\"\<CR>", 'tx') - call assert_equal('"set fileencodings:ucs-bom,utf-8,default,latin1', @:) + call feedkeys(":set suffixes:\<C-A>\<C-B>\"\<CR>", 'tx') + call assert_equal('"set suffixes:.bak,~,.o,.h,.info,.swp,.obj', @:) " Expand key codes. " call feedkeys(":set <H\<C-A>\<C-B>\"\<CR>", 'tx') @@ -364,14 +364,20 @@ func Test_set_completion() call assert_equal("\"set invtabstop=", @:) " Expand options for 'spellsuggest' - call feedkeys(":set spellsuggest=best,file:xyz\<Tab>\<C-B>\"\<CR>", 'xt') - call assert_equal("\"set spellsuggest=best,file:xyz", @:) - - " Expand value for 'key' - " set key=abcd - " call feedkeys(":set key=\<Tab>\<C-B>\"\<CR>", 'xt') - " call assert_equal('"set key=*****', @:) - " set key= + call feedkeys(":set spellsuggest=file:test_options.v\<Tab>\<C-B>\"\<CR>", 'xt') + call assert_equal("\"set spellsuggest=file:test_options.vim", @:) + call feedkeys(":set spellsuggest=best,file:test_options.v\<Tab>\<C-B>\"\<CR>", 'xt') + call assert_equal("\"set spellsuggest=best,file:test_options.vim", @:) + + " Expanding value for 'key' is disallowed + if exists('+key') + set key=abcd + call feedkeys(":set key=\<Tab>\<C-B>\"\<CR>", 'xt') + call assert_equal('"set key=', @:) + call feedkeys(":set key-=\<Tab>\<C-B>\"\<CR>", 'xt') + call assert_equal('"set key-=', @:) + set key= + endif " Expand values for 'filetype' call feedkeys(":set filetype=sshdconfi\<Tab>\<C-B>\"\<CR>", 'xt') @@ -386,6 +392,286 @@ func Test_set_completion() call assert_equal('"set syntax=' .. getcompletion('a*', 'syntax')->join(), @:) endfunc +" Test handling of expanding individual string option values +func Test_set_completion_string_values() + " + " Test basic enum string options that have well-defined enum names + " + + " call assert_equal(['lastline', 'truncate', 'uhex'], getcompletion('set display=', 'cmdline')) + call assert_equal(['lastline', 'truncate', 'uhex', 'msgsep'], getcompletion('set display=', 'cmdline')) + call assert_equal(['truncate'], getcompletion('set display=t', 'cmdline')) + call assert_equal(['uhex'], getcompletion('set display=*ex*', 'cmdline')) + + " Test that if a value is set, it will populate the results, but only if + " typed value is empty. + set display=uhex,lastline + " call assert_equal(['uhex,lastline', 'lastline', 'truncate', 'uhex'], getcompletion('set display=', 'cmdline')) + call assert_equal(['uhex,lastline', 'lastline', 'truncate', 'uhex', 'msgsep'], getcompletion('set display=', 'cmdline')) + call assert_equal(['uhex'], getcompletion('set display=u', 'cmdline')) + " If the set value is part of the enum list, it will show as the first + " result with no duplicate. + set display=uhex + " call assert_equal(['uhex', 'lastline', 'truncate'], getcompletion('set display=', 'cmdline')) + call assert_equal(['uhex', 'lastline', 'truncate', 'msgsep'], getcompletion('set display=', 'cmdline')) + " If empty value, will just show the normal list without an empty item + set display= + " call assert_equal(['lastline', 'truncate', 'uhex'], getcompletion('set display=', 'cmdline')) + call assert_equal(['lastline', 'truncate', 'uhex', 'msgsep'], getcompletion('set display=', 'cmdline')) + " Test escaping of the values + " call assert_equal('vert:\|,fold:-,eob:~,lastline:@', getcompletion('set fillchars=', 'cmdline')[0]) + call assert_equal('vert:\|,foldsep:\|,fold:-', getcompletion('set fillchars=', 'cmdline')[0]) + + " Test comma-separated lists will expand after a comma. + call assert_equal(['uhex'], getcompletion('set display=truncate,*ex*', 'cmdline')) + " Also test the positioning of the expansion is correct + call feedkeys(":set display=truncate,l\<Tab>\<C-B>\"\<CR>", 'xt') + call assert_equal('"set display=truncate,lastline', @:) + set display& + + " Test single-value options will not expand after a comma + call assert_equal([], getcompletion('set ambw=single,', 'cmdline')) + + " Test the other simple options to make sure they have basic auto-complete, + " but don't exhaustively validate their results. + call assert_equal('single', getcompletion('set ambw=', 'cmdline')[0]) + call assert_match('light\|dark', getcompletion('set bg=', 'cmdline')[1]) + call assert_equal('indent', getcompletion('set backspace=', 'cmdline')[0]) + call assert_equal('yes', getcompletion('set backupcopy=', 'cmdline')[1]) + call assert_equal('backspace', getcompletion('set belloff=', 'cmdline')[1]) + call assert_equal('min:', getcompletion('set briopt=', 'cmdline')[1]) + if exists('+browsedir') + call assert_equal('current', getcompletion('set browsedir=', 'cmdline')[1]) + endif + call assert_equal('unload', getcompletion('set bufhidden=', 'cmdline')[1]) + call assert_equal('nowrite', getcompletion('set buftype=', 'cmdline')[1]) + call assert_equal('internal', getcompletion('set casemap=', 'cmdline')[1]) + if exists('+clipboard') + " call assert_match('unnamed', getcompletion('set clipboard=', 'cmdline')[1]) + call assert_match('unnamed', getcompletion('set clipboard=', 'cmdline')[0]) + endif + call assert_equal('.', getcompletion('set complete=', 'cmdline')[1]) + call assert_equal('menu', getcompletion('set completeopt=', 'cmdline')[1]) + if exists('+completeslash') + call assert_equal('backslash', getcompletion('set completeslash=', 'cmdline')[1]) + endif + if exists('+cryptmethod') + call assert_equal('zip', getcompletion('set cryptmethod=', 'cmdline')[1]) + endif + if exists('+cursorlineopt') + call assert_equal('line', getcompletion('set cursorlineopt=', 'cmdline')[1]) + endif + call assert_equal('throw', getcompletion('set debug=', 'cmdline')[1]) + call assert_equal('ver', getcompletion('set eadirection=', 'cmdline')[1]) + call assert_equal('mac', getcompletion('set fileformat=', 'cmdline')[2]) + if exists('+foldclose') + call assert_equal('all', getcompletion('set foldclose=', 'cmdline')[0]) + endif + if exists('+foldmethod') + call assert_equal('expr', getcompletion('set foldmethod=', 'cmdline')[1]) + endif + if exists('+foldopen') + call assert_equal('all', getcompletion('set foldopen=', 'cmdline')[1]) + endif + call assert_equal('stack', getcompletion('set jumpoptions=', 'cmdline')[0]) + call assert_equal('stopsel', getcompletion('set keymodel=', 'cmdline')[1]) + call assert_equal('expr:1', getcompletion('set lispoptions=', 'cmdline')[1]) + call assert_match('popup', getcompletion('set mousemodel=', 'cmdline')[2]) + call assert_equal('bin', getcompletion('set nrformats=', 'cmdline')[1]) + if exists('+rightleftcmd') + call assert_equal('search', getcompletion('set rightleftcmd=', 'cmdline')[0]) + endif + call assert_equal('ver', getcompletion('set scrollopt=', 'cmdline')[1]) + call assert_equal('exclusive', getcompletion('set selection=', 'cmdline')[1]) + call assert_equal('key', getcompletion('set selectmode=', 'cmdline')[1]) + if exists('+ssop') + call assert_equal('buffers', getcompletion('set ssop=', 'cmdline')[1]) + endif + call assert_equal('statusline', getcompletion('set showcmdloc=', 'cmdline')[1]) + if exists('+signcolumn') + call assert_equal('yes', getcompletion('set signcolumn=', 'cmdline')[1]) + endif + if exists('+spelloptions') + call assert_equal('camel', getcompletion('set spelloptions=', 'cmdline')[0]) + endif + if exists('+spellsuggest') + call assert_equal('best', getcompletion('set spellsuggest+=', 'cmdline')[0]) + endif + call assert_equal('screen', getcompletion('set splitkeep=', 'cmdline')[1]) + " call assert_equal('sync', getcompletion('set swapsync=', 'cmdline')[1]) + call assert_equal('usetab', getcompletion('set switchbuf=', 'cmdline')[1]) + call assert_equal('ignore', getcompletion('set tagcase=', 'cmdline')[1]) + if exists('+termwintype') + call assert_equal('conpty', getcompletion('set termwintype=', 'cmdline')[1]) + endif + if exists('+toolbar') + call assert_equal('text', getcompletion('set toolbar=', 'cmdline')[1]) + endif + if exists('+tbis') + call assert_equal('medium', getcompletion('set tbis=', 'cmdline')[2]) + endif + if exists('+ttymouse') + set ttymouse= + call assert_equal('xterm2', getcompletion('set ttymouse=', 'cmdline')[1]) + set ttymouse& + endif + call assert_equal('insert', getcompletion('set virtualedit=', 'cmdline')[1]) + call assert_equal('longest', getcompletion('set wildmode=', 'cmdline')[1]) + call assert_equal('full', getcompletion('set wildmode=list,longest:', 'cmdline')[0]) + call assert_equal('tagfile', getcompletion('set wildoptions=', 'cmdline')[1]) + if exists('+winaltkeys') + call assert_equal('yes', getcompletion('set winaltkeys=', 'cmdline')[1]) + endif + + " Other string options that queries the system rather than fixed enum names + call assert_equal(['all', 'BufAdd'], getcompletion('set eventignore=', 'cmdline')[0:1]) + call assert_equal('latin1', getcompletion('set fileencodings=', 'cmdline')[1]) + " call assert_equal('top', getcompletion('set printoptions=', 'cmdline')[0]) + " call assert_equal('SpecialKey', getcompletion('set wincolor=', 'cmdline')[0]) + + call assert_equal('eol', getcompletion('set listchars+=', 'cmdline')[0]) + call assert_equal(['multispace', 'leadmultispace'], getcompletion('set listchars+=', 'cmdline')[-2:]) + call assert_equal('eol', getcompletion('setl listchars+=', 'cmdline')[0]) + call assert_equal(['multispace', 'leadmultispace'], getcompletion('setl listchars+=', 'cmdline')[-2:]) + call assert_equal('stl', getcompletion('set fillchars+=', 'cmdline')[0]) + call assert_equal('stl', getcompletion('setl fillchars+=', 'cmdline')[0]) + + " + " Unique string options below + " + + " keyprotocol: only auto-complete when after ':' with known protocol types + " call assert_equal([&keyprotocol], getcompletion('set keyprotocol=', 'cmdline')) + " call feedkeys(":set keyprotocol+=someterm:m\<Tab>\<C-B>\"\<CR>", 'xt') + " call assert_equal('"set keyprotocol+=someterm:mok2', @:) + " set keyprotocol& + + " previewpopup / completepopup + " call assert_equal('height:', getcompletion('set previewpopup=', 'cmdline')[0]) + " call assert_equal('EndOfBuffer', getcompletion('set previewpopup=highlight:End*Buffer', 'cmdline')[0]) + " call feedkeys(":set previewpopup+=border:\<Tab>\<C-B>\"\<CR>", 'xt') + " call assert_equal('"set previewpopup+=border:on', @:) + " call feedkeys(":set completepopup=height:10,align:\<Tab>\<C-B>\"\<CR>", 'xt') + " call assert_equal('"set completepopup=height:10,align:item', @:) + " call assert_equal([], getcompletion('set completepopup=bogusname:', 'cmdline')) + " set previewpopup& completepopup& + + " diffopt: special handling of algorithm:<alg_list> + call assert_equal('filler', getcompletion('set diffopt+=', 'cmdline')[0]) + call assert_equal([], getcompletion('set diffopt+=iblank,foldcolumn:', 'cmdline')) + call assert_equal('patience', getcompletion('set diffopt+=iblank,algorithm:pat*', 'cmdline')[0]) + + " highlight: special parsing, including auto-completing highlight groups + " after ':' + " call assert_equal([&hl, '8'], getcompletion('set hl=', 'cmdline')[0:1]) + " call assert_equal('8', getcompletion('set hl+=', 'cmdline')[0]) + " call assert_equal(['8:', '8b', '8i'], getcompletion('set hl+=8', 'cmdline')[0:2]) + " call assert_equal('8bi', getcompletion('set hl+=8b', 'cmdline')[0]) + " call assert_equal('NonText', getcompletion('set hl+=8:No*ext', 'cmdline')[0]) + " If all the display modes are used up we should be suggesting nothing. Make + " a hl typed option with all the modes which will look like '8bi-nrsuc2d=t', + " and make sure nothing is suggested from that. + " let hl_display_modes = join( + " \ filter(map(getcompletion('set hl+=8', 'cmdline'), + " \ {idx, val -> val[1]}), + " \ {idx, val -> val != ':'}), + " \ '') + " call assert_equal([], getcompletion('set hl+=8'..hl_display_modes, 'cmdline')) + + " + " Test flag lists + " + + " Test set=. Show the original value if nothing is typed after '='. + " Otherwise, the list should avoid showing what's already typed. + set mouse=v + call assert_equal(['v','a','n','i','c','h','r'], getcompletion('set mouse=', 'cmdline')) + set mouse=nvi + call assert_equal(['nvi','a','n','v','i','c','h','r'], getcompletion('set mouse=', 'cmdline')) + call assert_equal(['a','v','i','c','r'], getcompletion('set mouse=hn', 'cmdline')) + + " Test set+=. Never show original value, and it also tries to avoid listing + " flags that's already in the option value. + call assert_equal(['a','c','h','r'], getcompletion('set mouse+=', 'cmdline')) + call assert_equal(['a','c','r'], getcompletion('set mouse+=hn', 'cmdline')) + call assert_equal([], getcompletion('set mouse+=acrhn', 'cmdline')) + + " Test that the position of the expansion is correct (even if there are + " additional values after the current cursor) + call feedkeys(":set mouse=hn\<Left>\<Tab>\<C-B>\"\<CR>", 'xt') + call assert_equal('"set mouse=han', @:) + set mouse& + + " Test that other flag list options have auto-complete, but don't + " exhaustively validate their results. + if exists('+concealcursor') + call assert_equal('n', getcompletion('set cocu=', 'cmdline')[0]) + endif + call assert_equal('a', getcompletion('set cpo=', 'cmdline')[1]) + call assert_equal('t', getcompletion('set fo=', 'cmdline')[1]) + if exists('+guioptions') + call assert_equal('!', getcompletion('set go=', 'cmdline')[1]) + endif + call assert_equal('r', getcompletion('set shortmess=', 'cmdline')[1]) + call assert_equal('b', getcompletion('set whichwrap=', 'cmdline')[1]) + + " + "Test set-= + " + + " Normal single-value option just shows the existing value + set ambiwidth=double + call assert_equal(['double'], getcompletion('set ambw-=', 'cmdline')) + set ambiwidth& + + " Works on numbers and term options as well + call assert_equal([string(&laststatus)], getcompletion('set laststatus-=', 'cmdline')) + set t_Ce=testCe + " call assert_equal(['testCe'], getcompletion('set t_Ce-=', 'cmdline')) + set t_Ce& + + " Comma-separated lists should present each option + set diffopt=context:123,,,,,iblank,iwhiteall + call assert_equal(['context:123', 'iblank', 'iwhiteall'], getcompletion('set diffopt-=', 'cmdline')) + call assert_equal(['context:123', 'iblank'], getcompletion('set diffopt-=*n*', 'cmdline')) + call assert_equal(['iblank', 'iwhiteall'], getcompletion('set diffopt-=i', 'cmdline')) + " Don't present more than one option as it doesn't make sense in set-= + call assert_equal([], getcompletion('set diffopt-=iblank,', 'cmdline')) + " Test empty option + set diffopt= + call assert_equal([], getcompletion('set diffopt-=', 'cmdline')) + set diffopt& + + " Test escaping output + call assert_equal('vert:\|', getcompletion('set fillchars-=', 'cmdline')[0]) + + " Test files with commas in name are being parsed and escaped properly + set path=has\\\ space,file\\,with\\,comma,normal_file + if exists('+completeslash') + call assert_equal(['has\\\ space', 'file\,with\,comma', 'normal_file'], getcompletion('set path-=', 'cmdline')) + else + call assert_equal(['has\\\ space', 'file\\,with\\,comma', 'normal_file'], getcompletion('set path-=', 'cmdline')) + endif + set path& + + " Flag list should present orig value, then individual flags + set mouse=v + call assert_equal(['v'], getcompletion('set mouse-=', 'cmdline')) + set mouse=avn + call assert_equal(['avn','a','v','n'], getcompletion('set mouse-=', 'cmdline')) + " Don't auto-complete when we have at least one flags already + call assert_equal([], getcompletion('set mouse-=n', 'cmdline')) + " Test empty option + set mouse= + call assert_equal([], getcompletion('set mouse-=', 'cmdline')) + set mouse& + + " 'whichwrap' is an odd case where it's both flag list and comma-separated + set ww=b,h + call assert_equal(['b','h'], getcompletion('set ww-=', 'cmdline')) + set ww& +endfunc + func Test_set_option_errors() call assert_fails('set scroll=-1', 'E49:') call assert_fails('set backupcopy=', 'E474:') @@ -1433,7 +1719,7 @@ func Test_opt_cdhome() set cdhome& endfunc -func Test_set_completion_2() +func Test_set_completion_fuzzy() CheckOption termguicolors " Test default option completion diff --git a/test/old/testdir/test_scroll_opt.vim b/test/old/testdir/test_scroll_opt.vim index f60c0ddb59..80f73ba5d9 100644 --- a/test/old/testdir/test_scroll_opt.vim +++ b/test/old/testdir/test_scroll_opt.vim @@ -1,4 +1,4 @@ -" Test for reset 'scroll' and 'smoothscroll' +" Test for 'scroll', 'scrolloff', 'smoothscroll', etc. source check.vim source screendump.vim @@ -39,20 +39,74 @@ func Test_reset_scroll() endfunc func Test_scolloff_even_line_count() - new - resize 6 - setlocal scrolloff=3 - call setline(1, range(20)) - normal 2j - call assert_equal(1, getwininfo(win_getid())[0].topline) - normal j - call assert_equal(1, getwininfo(win_getid())[0].topline) - normal j - call assert_equal(2, getwininfo(win_getid())[0].topline) - normal j - call assert_equal(3, getwininfo(win_getid())[0].topline) - - bwipe! + new + resize 6 + setlocal scrolloff=3 + call setline(1, range(20)) + normal 2j + call assert_equal(1, getwininfo(win_getid())[0].topline) + normal j + call assert_equal(1, getwininfo(win_getid())[0].topline) + normal j + call assert_equal(2, getwininfo(win_getid())[0].topline) + normal j + call assert_equal(3, getwininfo(win_getid())[0].topline) + + bwipe! +endfunc + +func Test_mouse_scroll_inactive_with_cursorbind() + for scb in [0, 1] + for so in [0, 1, 2] + let msg = $'scb={scb} so={so}' + + new | only + let w1 = win_getid() + setlocal cursorbind + let &l:scb = scb + let &l:so = so + call setline(1, range(101, 109)) + rightbelow vnew + let w2 = win_getid() + setlocal cursorbind + let &l:scb = scb + let &l:so = so + call setline(1, range(101, 109)) + + normal! $ + call assert_equal(3, col('.', w1), msg) + call assert_equal(3, col('.', w2), msg) + call Ntest_setmouse(1, 1) + call feedkeys("\<ScrollWheelDown>", 'xt') + call assert_equal(4, line('w0', w1), msg) + call assert_equal(4 + so, line('.', w1), msg) + call assert_equal(1, line('w0', w2), msg) + call assert_equal(1, line('.', w2), msg) + call feedkeys("\<ScrollWheelDown>", 'xt') + call assert_equal(7, line('w0', w1), msg) + call assert_equal(7 + so, line('.', w1), msg) + call assert_equal(1, line('w0', w2), msg) + call assert_equal(1, line('.', w2), msg) + call feedkeys("\<ScrollWheelUp>", 'xt') + call assert_equal(4, line('w0', w1), msg) + call assert_equal(7 + so, line('.', w1), msg) + call assert_equal(1, line('w0', w2), msg) + call assert_equal(1, line('.', w2), msg) + call feedkeys("\<ScrollWheelUp>", 'xt') + call assert_equal(1, line('w0', w1), msg) + call assert_equal(7 + so, line('.', w1), msg) + call assert_equal(1, line('w0', w2), msg) + call assert_equal(1, line('.', w2), msg) + normal! 0 + call assert_equal(1, line('.', w1), msg) + call assert_equal(1, col('.', w1), msg) + call assert_equal(1, line('.', w2), msg) + call assert_equal(1, col('.', w2), msg) + + bwipe! + bwipe! + endfor + endfor endfunc func Test_CtrlE_CtrlY_stop_at_end() |