123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- " 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
|