mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	The new oldtest directory is in test/old/testdir. The reason for this is that many tests have hardcoded the parent directory name to be 'testdir'.
		
			
				
	
	
		
			273 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			273 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
" 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
 |