1*4a137b45SBram Moolenaar" Test for 'scrollbind' causing an unexpected scroll of one of the windows.
2*4a137b45SBram Moolenaarfunc Test_scrollbind()
3*4a137b45SBram Moolenaar  " We don't want the status line to cause problems:
4*4a137b45SBram Moolenaar  set laststatus=0
5*4a137b45SBram Moolenaar  let totalLines = &lines * 20
6*4a137b45SBram Moolenaar  let middle = totalLines / 2
7*4a137b45SBram Moolenaar  new | only
8*4a137b45SBram Moolenaar  for i in range(1, totalLines)
9*4a137b45SBram Moolenaar      call setline(i, 'LINE ' . i)
10*4a137b45SBram Moolenaar  endfor
11*4a137b45SBram Moolenaar  exe string(middle)
12*4a137b45SBram Moolenaar  normal zt
13*4a137b45SBram Moolenaar  normal M
14*4a137b45SBram Moolenaar  aboveleft vert new
15*4a137b45SBram Moolenaar  for i in range(1, totalLines)
16*4a137b45SBram Moolenaar      call setline(i, 'line ' . i)
17*4a137b45SBram Moolenaar  endfor
18*4a137b45SBram Moolenaar  exe string(middle)
19*4a137b45SBram Moolenaar  normal zt
20*4a137b45SBram Moolenaar  normal M
21*4a137b45SBram Moolenaar  " Execute the following two commands at once to reproduce the problem.
22*4a137b45SBram Moolenaar  setl scb | wincmd p
23*4a137b45SBram Moolenaar  setl scb
24*4a137b45SBram Moolenaar  wincmd w
25*4a137b45SBram Moolenaar  let topLineLeft = line('w0')
26*4a137b45SBram Moolenaar  wincmd p
27*4a137b45SBram Moolenaar  let topLineRight = line('w0')
28*4a137b45SBram Moolenaar  setl noscrollbind
29*4a137b45SBram Moolenaar  wincmd p
30*4a137b45SBram Moolenaar  setl noscrollbind
31*4a137b45SBram Moolenaar  call assert_equal(0, topLineLeft - topLineRight)
32*4a137b45SBram Moolenaarendfunc
33