Mercurial > vim
view src/testdir/test_scrollbind.vim @ 34780:54890be01c00 v9.1.0265
patch 9.1.0265: console dialog cannot save unnamed buffers
Commit: https://github.com/vim/vim/commit/df46115fc839c8912ed60646e86a412e5180ba1d
Author: glepnir <glephunter@gmail.com>
Date: Thu Apr 4 22:23:29 2024 +0200
patch 9.1.0265: console dialog cannot save unnamed buffers
Problem: console dialog cannot save unnamed buffers
Solution: set bufname before save (glepnir). Define dialog_con_gui
to test for GUI+Console dialog support, use it to skip
the test when the GUI feature has been defined.
Note: The dialog_changed() function will also try to call the
browse_save_fname() function, when FEAT_BROWSE is defined (which is only
defined in a GUI build of Vim). This will eventually lead to a call of
do_browse(), which causes an error message if a GUI is not currently
running (see the TODO: in do_browse()) and will then lead to a failure
in Test_goto_buf_with_onfirm().
Therefore, we must disable the Test_goto_buf_with_onfirm(), when the
dialog_con_gui feature is enabled (which basically means dialog feature
for GUI and Console builds, in contrast to the dialog_con and dialog_gui
feature).
(Previously this wasn't a problem, because the test aborted in the YES
case for the :confirm :b XgotoConf case and did therefore not run into
the browse function call)
closes: #14398
Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 04 Apr 2024 23:45:02 +0200 |
parents | d8fdafc4b390 |
children |
line wrap: on
line source
" Test for 'scrollbind' causing an unexpected scroll of one of the windows. func Test_scrollbind() " We don't want the status line to cause problems: set laststatus=0 let totalLines = &lines * 20 let middle = totalLines / 2 new | only for i in range(1, totalLines) call setline(i, 'LINE ' . i) endfor exe string(middle) normal zt normal M aboveleft vert new for i in range(1, totalLines) call setline(i, 'line ' . i) endfor exe string(middle) normal zt normal M " Execute the following two commands at once to reproduce the problem. setl scb | wincmd p setl scb wincmd w let topLineLeft = line('w0') wincmd p let topLineRight = line('w0') setl noscrollbind wincmd p setl noscrollbind call assert_equal(0, topLineLeft - topLineRight) endfunc " Test for 'scrollbind' func Test_scrollbind_opt() new | only set noscrollbind set scrollopt=ver,jump scrolloff=2 nowrap noequalalways splitbelow " Insert the text used for the test append start of window 1 . line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01 . line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02 . line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03 . line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04 . line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05 . line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06 . line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07 . line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08 . line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09 . line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10 . line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11 . line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12 . line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13 . line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14 . line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15 end of window 1 start of window 2 . line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01 . line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02 . line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03 . line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04 . line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05 . line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06 . line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07 . line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08 . line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09 . line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10 . line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11 . line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12 . line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13 . line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14 . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15 . line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16 end of window 2 . " Test using two windows open to one buffer, one extra empty window split new wincmd t resize 8 call search('^start of window 1$') normal zt set scrollbind wincmd j resize 7 call search('^start of window 2$') normal zt set scrollbind " -- start of tests -- " Test scrolling down normal L5jHyy wincmd b | normal pr0 wincmd t | normal Hyy wincmd b | normal pr1 wincmd t | normal L6jHyy wincmd b | normal pr2 wincmd k | normal Hyy wincmd b | normal pr3 " Test scrolling up wincmd t | normal H4k wincmd j | normal H wincmd t | normal Hyy wincmd b | normal pr4 wincmd k | normal Hyy wincmd b | normal pr5 wincmd k | normal 3k wincmd t | normal H wincmd j | normal Hyy wincmd b | normal pr6 wincmd t | normal Hyy wincmd b | normal pr7 " Test horizontal scrolling set scrollopt+=hor normal gg"zyyG"zpG wincmd t | normal 015zly$ wincmd b | normal p"zpG wincmd k | normal y$ wincmd b | normal p"zpG wincmd k | normal 10jH7zhg0y$ wincmd b | normal p"zpG wincmd t | normal Hg0y$ wincmd b | normal p"zpG set scrollopt-=hor wincmd b call assert_equal([ \ '', \ '0 line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05', \ '1 line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05', \ '2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11', \ '3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11', \ '4 line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06', \ '5 line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06', \ '6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02', \ '7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02', \ '56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02', \ 'UTSRQPONMLKJIHGREDCBA9876543210 02', \ '. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11', \ '. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11', \ ''], getline(1, '$')) enew! " ****** tests using two different buffers ***** wincmd t | wincmd j | close wincmd t | set noscrollbind /start of window 2$/,/^end of window 2$/y new wincmd t | wincmd j | normal 4"zpGp wincmd t call search('^start of window 1$') normal zt set scrollbind wincmd j call search('^start of window 2$') normal zt set scrollbind " -- start of tests -- " Test scrolling down normal L5jHyy wincmd b | normal pr0 wincmd t | normal Hyy wincmd b | normal pr1 wincmd t | normal L6jHyy wincmd b | normal pr2 wincmd k | normal Hyy wincmd b | normal pr3 " Test scrolling up wincmd t | normal H4k wincmd j | normal H wincmd t | normal Hyy wincmd b | normal pr4 wincmd k | normal Hyy wincmd b | normal pr5 wincmd k | normal 3k wincmd t | normal H wincmd j | normal Hyy wincmd b | normal pr6 wincmd t | normal Hyy wincmd b | normal pr7 " Test horizontal scrolling set scrollopt+=hor normal gg"zyyG"zpG wincmd t | normal 015zly$ wincmd b | normal p"zpG wincmd k | normal y$ wincmd b | normal p"zpG wincmd k | normal 10jH7zhg0y$ wincmd b | normal p"zpG wincmd t | normal Hg0y$ wincmd b | normal p"zpG set scrollopt-=hor wincmd b call assert_equal([ \ '', \ '0 line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05', \ '1 line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05', \ '2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11', \ '3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11', \ '4 line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06', \ '5 line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06', \ '6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02', \ '7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02', \ '56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02', \ 'UTSRQPONMLKJIHGREDCBA9876543210 02', \ '. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10', \ '. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10', \ ''], getline(1, '$')) enew! " Test 'syncbind' wincmd t | set noscrollbind | normal ggL wincmd j | set noscrollbind | normal ggL set scrollbind wincmd t | set scrollbind | normal G wincmd j | normal G syncbind normal Hk wincmd t | normal H wincmd j | normal Hyy wincmd b | normal p wincmd t | normal yy wincmd b | normal p wincmd t | set noscrollbind | normal ggL wincmd j | set noscrollbind normal ggL set scrollbind wincmd t | set scrollbind wincmd t | normal G wincmd j | normal G wincmd t | syncbind | normal Hk wincmd j | normal H wincmd t | normal Hyy wincmd b | normal p wincmd t | wincmd j | normal yy wincmd b | normal p wincmd t | normal H3k wincmd j | normal H wincmd t | normal Hyy wincmd b | normal p wincmd t | wincmd j | normal yy wincmd b | normal p wincmd b call assert_equal([ \ '', \ '. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16', \ 'start of window 2', \ 'start of window 2', \ '. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16', \ '. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15', \ '. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12', \ ], getline(1, '$')) enew! new | only! set scrollbind& scrollopt& scrolloff& wrap& equalalways& splitbelow& endfunc " vim: shiftwidth=2 sts=2 expandtab