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