14a137b45SBram Moolenaar" Test for 'scrollbind' causing an unexpected scroll of one of the windows. 2*6d91bcb4SBram Moolenaar 34a137b45SBram Moolenaarfunc Test_scrollbind() 44a137b45SBram Moolenaar " We don't want the status line to cause problems: 54a137b45SBram Moolenaar set laststatus=0 64a137b45SBram Moolenaar let totalLines = &lines * 20 74a137b45SBram Moolenaar let middle = totalLines / 2 84a137b45SBram Moolenaar new | only 94a137b45SBram Moolenaar for i in range(1, totalLines) 104a137b45SBram Moolenaar call setline(i, 'LINE ' . i) 114a137b45SBram Moolenaar endfor 124a137b45SBram Moolenaar exe string(middle) 134a137b45SBram Moolenaar normal zt 144a137b45SBram Moolenaar normal M 154a137b45SBram Moolenaar aboveleft vert new 164a137b45SBram Moolenaar for i in range(1, totalLines) 174a137b45SBram Moolenaar call setline(i, 'line ' . i) 184a137b45SBram Moolenaar endfor 194a137b45SBram Moolenaar exe string(middle) 204a137b45SBram Moolenaar normal zt 214a137b45SBram Moolenaar normal M 224a137b45SBram Moolenaar " Execute the following two commands at once to reproduce the problem. 234a137b45SBram Moolenaar setl scb | wincmd p 244a137b45SBram Moolenaar setl scb 254a137b45SBram Moolenaar wincmd w 264a137b45SBram Moolenaar let topLineLeft = line('w0') 274a137b45SBram Moolenaar wincmd p 284a137b45SBram Moolenaar let topLineRight = line('w0') 294a137b45SBram Moolenaar setl noscrollbind 304a137b45SBram Moolenaar wincmd p 314a137b45SBram Moolenaar setl noscrollbind 324a137b45SBram Moolenaar call assert_equal(0, topLineLeft - topLineRight) 334a137b45SBram Moolenaarendfunc 34999dc146SBram Moolenaar 35999dc146SBram Moolenaar" Test for 'scrollbind' 36999dc146SBram Moolenaarfunc Test_scrollbind_opt() 37999dc146SBram Moolenaar new | only 38999dc146SBram Moolenaar set noscrollbind 39999dc146SBram Moolenaar set scrollopt=ver,jump scrolloff=2 nowrap noequalalways splitbelow 40999dc146SBram Moolenaar 41999dc146SBram Moolenaar " Insert the text used for the test 42999dc146SBram Moolenaar append 43999dc146SBram Moolenaar 44999dc146SBram Moolenaar 45999dc146SBram Moolenaarstart of window 1 46999dc146SBram Moolenaar. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01 47999dc146SBram Moolenaar. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02 48999dc146SBram Moolenaar. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03 49999dc146SBram Moolenaar. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04 50999dc146SBram Moolenaar. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05 51999dc146SBram Moolenaar. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06 52999dc146SBram Moolenaar. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07 53999dc146SBram Moolenaar. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08 54999dc146SBram Moolenaar. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09 55999dc146SBram Moolenaar. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10 56999dc146SBram Moolenaar. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11 57999dc146SBram Moolenaar. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12 58999dc146SBram Moolenaar. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13 59999dc146SBram Moolenaar. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14 60999dc146SBram Moolenaar. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15 61999dc146SBram Moolenaarend of window 1 62999dc146SBram Moolenaar 63999dc146SBram Moolenaar 64999dc146SBram Moolenaarstart of window 2 65999dc146SBram Moolenaar. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01 66999dc146SBram Moolenaar. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02 67999dc146SBram Moolenaar. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03 68999dc146SBram Moolenaar. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04 69999dc146SBram Moolenaar. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05 70999dc146SBram Moolenaar. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06 71999dc146SBram Moolenaar. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07 72999dc146SBram Moolenaar. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08 73999dc146SBram Moolenaar. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09 74999dc146SBram Moolenaar. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10 75999dc146SBram Moolenaar. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11 76999dc146SBram Moolenaar. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12 77999dc146SBram Moolenaar. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13 78999dc146SBram Moolenaar. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14 79999dc146SBram Moolenaar. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15 80999dc146SBram Moolenaar. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16 81999dc146SBram Moolenaarend of window 2 82999dc146SBram Moolenaar 83999dc146SBram Moolenaar. 84999dc146SBram Moolenaar 85999dc146SBram Moolenaar " Test using two windows open to one buffer, one extra empty window 86999dc146SBram Moolenaar split 87999dc146SBram Moolenaar new 88999dc146SBram Moolenaar wincmd t 89999dc146SBram Moolenaar resize 8 90999dc146SBram Moolenaar call search('^start of window 1$') 91999dc146SBram Moolenaar normal zt 92999dc146SBram Moolenaar set scrollbind 93999dc146SBram Moolenaar wincmd j 94999dc146SBram Moolenaar resize 7 95999dc146SBram Moolenaar call search('^start of window 2$') 96999dc146SBram Moolenaar normal zt 97999dc146SBram Moolenaar set scrollbind 98999dc146SBram Moolenaar 99999dc146SBram Moolenaar " -- start of tests -- 100999dc146SBram Moolenaar " Test scrolling down 101999dc146SBram Moolenaar normal L5jHyy 102999dc146SBram Moolenaar wincmd b | normal pr0 103999dc146SBram Moolenaar wincmd t | normal Hyy 104999dc146SBram Moolenaar wincmd b | normal pr1 105999dc146SBram Moolenaar wincmd t | normal L6jHyy 106999dc146SBram Moolenaar wincmd b | normal pr2 107999dc146SBram Moolenaar wincmd k | normal Hyy 108999dc146SBram Moolenaar wincmd b | normal pr3 109999dc146SBram Moolenaar 110999dc146SBram Moolenaar " Test scrolling up 111999dc146SBram Moolenaar wincmd t | normal H4k 112999dc146SBram Moolenaar wincmd j | normal H 113999dc146SBram Moolenaar wincmd t | normal Hyy 114999dc146SBram Moolenaar wincmd b | normal pr4 115999dc146SBram Moolenaar wincmd k | normal Hyy 116999dc146SBram Moolenaar wincmd b | normal pr5 117999dc146SBram Moolenaar wincmd k | normal 3k 118999dc146SBram Moolenaar wincmd t | normal H 119999dc146SBram Moolenaar wincmd j | normal Hyy 120999dc146SBram Moolenaar wincmd b | normal pr6 121999dc146SBram Moolenaar wincmd t | normal Hyy 122999dc146SBram Moolenaar wincmd b | normal pr7 123999dc146SBram Moolenaar 124999dc146SBram Moolenaar " Test horizontal scrolling 125999dc146SBram Moolenaar set scrollopt+=hor 126999dc146SBram Moolenaar normal gg"zyyG"zpG 127999dc146SBram Moolenaar wincmd t | normal 015zly$ 128999dc146SBram Moolenaar wincmd b | normal p"zpG 129999dc146SBram Moolenaar wincmd k | normal y$ 130999dc146SBram Moolenaar wincmd b | normal p"zpG 131999dc146SBram Moolenaar wincmd k | normal 10jH7zhg0y$ 132999dc146SBram Moolenaar wincmd b | normal p"zpG 133999dc146SBram Moolenaar wincmd t | normal Hg0y$ 134999dc146SBram Moolenaar wincmd b | normal p"zpG 135999dc146SBram Moolenaar set scrollopt-=hor 136999dc146SBram Moolenaar 137999dc146SBram Moolenaar wincmd b 138999dc146SBram Moolenaar call assert_equal([ 139999dc146SBram Moolenaar \ '', 140999dc146SBram Moolenaar \ '0 line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05', 141999dc146SBram Moolenaar \ '1 line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05', 142999dc146SBram Moolenaar \ '2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11', 143999dc146SBram Moolenaar \ '3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11', 144999dc146SBram Moolenaar \ '4 line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06', 145999dc146SBram Moolenaar \ '5 line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06', 146999dc146SBram Moolenaar \ '6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02', 147999dc146SBram Moolenaar \ '7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02', 148999dc146SBram Moolenaar \ '56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02', 149999dc146SBram Moolenaar \ 'UTSRQPONMLKJIHGREDCBA9876543210 02', 150999dc146SBram Moolenaar \ '. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11', 151999dc146SBram Moolenaar \ '. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11', 152999dc146SBram Moolenaar \ ''], getline(1, '$')) 153999dc146SBram Moolenaar enew! 154999dc146SBram Moolenaar 155999dc146SBram Moolenaar " ****** tests using two different buffers ***** 156999dc146SBram Moolenaar wincmd t | wincmd j | close 157999dc146SBram Moolenaar wincmd t | set noscrollbind 158999dc146SBram Moolenaar /start of window 2$/,/^end of window 2$/y 159999dc146SBram Moolenaar new 160999dc146SBram Moolenaar wincmd t | wincmd j | normal 4"zpGp 161999dc146SBram Moolenaar wincmd t 162999dc146SBram Moolenaar call search('^start of window 1$') 163999dc146SBram Moolenaar normal zt 164999dc146SBram Moolenaar set scrollbind 165999dc146SBram Moolenaar wincmd j 166999dc146SBram Moolenaar call search('^start of window 2$') 167999dc146SBram Moolenaar normal zt 168999dc146SBram Moolenaar set scrollbind 169999dc146SBram Moolenaar 170999dc146SBram Moolenaar " -- start of tests -- 171999dc146SBram Moolenaar " Test scrolling down 172999dc146SBram Moolenaar normal L5jHyy 173999dc146SBram Moolenaar wincmd b | normal pr0 174999dc146SBram Moolenaar wincmd t | normal Hyy 175999dc146SBram Moolenaar wincmd b | normal pr1 176999dc146SBram Moolenaar wincmd t | normal L6jHyy 177999dc146SBram Moolenaar wincmd b | normal pr2 178999dc146SBram Moolenaar wincmd k | normal Hyy 179999dc146SBram Moolenaar wincmd b | normal pr3 180999dc146SBram Moolenaar 181999dc146SBram Moolenaar " Test scrolling up 182999dc146SBram Moolenaar wincmd t | normal H4k 183999dc146SBram Moolenaar wincmd j | normal H 184999dc146SBram Moolenaar wincmd t | normal Hyy 185999dc146SBram Moolenaar wincmd b | normal pr4 186999dc146SBram Moolenaar wincmd k | normal Hyy 187999dc146SBram Moolenaar wincmd b | normal pr5 188999dc146SBram Moolenaar wincmd k | normal 3k 189999dc146SBram Moolenaar wincmd t | normal H 190999dc146SBram Moolenaar wincmd j | normal Hyy 191999dc146SBram Moolenaar wincmd b | normal pr6 192999dc146SBram Moolenaar wincmd t | normal Hyy 193999dc146SBram Moolenaar wincmd b | normal pr7 194999dc146SBram Moolenaar 195999dc146SBram Moolenaar " Test horizontal scrolling 196999dc146SBram Moolenaar set scrollopt+=hor 197999dc146SBram Moolenaar normal gg"zyyG"zpG 198999dc146SBram Moolenaar wincmd t | normal 015zly$ 199999dc146SBram Moolenaar wincmd b | normal p"zpG 200999dc146SBram Moolenaar wincmd k | normal y$ 201999dc146SBram Moolenaar wincmd b | normal p"zpG 202999dc146SBram Moolenaar wincmd k | normal 10jH7zhg0y$ 203999dc146SBram Moolenaar wincmd b | normal p"zpG 204999dc146SBram Moolenaar wincmd t | normal Hg0y$ 205999dc146SBram Moolenaar wincmd b | normal p"zpG 206999dc146SBram Moolenaar set scrollopt-=hor 207999dc146SBram Moolenaar 208999dc146SBram Moolenaar wincmd b 209999dc146SBram Moolenaar call assert_equal([ 210999dc146SBram Moolenaar \ '', 211999dc146SBram Moolenaar \ '0 line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05', 212999dc146SBram Moolenaar \ '1 line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05', 213999dc146SBram Moolenaar \ '2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11', 214999dc146SBram Moolenaar \ '3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11', 215999dc146SBram Moolenaar \ '4 line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06', 216999dc146SBram Moolenaar \ '5 line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06', 217999dc146SBram Moolenaar \ '6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02', 218999dc146SBram Moolenaar \ '7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02', 219999dc146SBram Moolenaar \ '56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02', 220999dc146SBram Moolenaar \ 'UTSRQPONMLKJIHGREDCBA9876543210 02', 221999dc146SBram Moolenaar \ '. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11', 222999dc146SBram Moolenaar \ '. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11', 223999dc146SBram Moolenaar \ ''], getline(1, '$')) 224999dc146SBram Moolenaar enew! 225999dc146SBram Moolenaar 226999dc146SBram Moolenaar " Test 'syncbind' 227999dc146SBram Moolenaar wincmd t | set noscrollbind | normal ggL 228999dc146SBram Moolenaar wincmd j | set noscrollbind | normal ggL 229999dc146SBram Moolenaar set scrollbind 230999dc146SBram Moolenaar wincmd t | set scrollbind | normal G 231999dc146SBram Moolenaar wincmd j | normal G 232999dc146SBram Moolenaar syncbind 233999dc146SBram Moolenaar normal Hk 234999dc146SBram Moolenaar wincmd t | normal H 235999dc146SBram Moolenaar wincmd j | normal Hyy 236999dc146SBram Moolenaar wincmd b | normal p 237999dc146SBram Moolenaar wincmd t | normal yy 238999dc146SBram Moolenaar wincmd b | normal p 239999dc146SBram Moolenaar wincmd t | set noscrollbind | normal ggL 240999dc146SBram Moolenaar wincmd j | set noscrollbind 241999dc146SBram Moolenaar normal ggL 242999dc146SBram Moolenaar set scrollbind 243999dc146SBram Moolenaar wincmd t | set scrollbind 244999dc146SBram Moolenaar wincmd t | normal G 245999dc146SBram Moolenaar wincmd j | normal G 246999dc146SBram Moolenaar wincmd t | syncbind | normal Hk 247999dc146SBram Moolenaar wincmd j | normal H 248999dc146SBram Moolenaar wincmd t | normal Hyy 249999dc146SBram Moolenaar wincmd b | normal p 250999dc146SBram Moolenaar wincmd t | wincmd j | normal yy 251999dc146SBram Moolenaar wincmd b | normal p 252999dc146SBram Moolenaar wincmd t | normal H3k 253999dc146SBram Moolenaar wincmd j | normal H 254999dc146SBram Moolenaar wincmd t | normal Hyy 255999dc146SBram Moolenaar wincmd b | normal p 256999dc146SBram Moolenaar wincmd t | wincmd j | normal yy 257999dc146SBram Moolenaar wincmd b | normal p 258999dc146SBram Moolenaar 259999dc146SBram Moolenaar wincmd b 260999dc146SBram Moolenaar call assert_equal([ 261999dc146SBram Moolenaar \ '', 262999dc146SBram Moolenaar \ '. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16', 263999dc146SBram Moolenaar \ 'start of window 2', 264999dc146SBram Moolenaar \ 'start of window 2', 265999dc146SBram Moolenaar \ '. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16', 266999dc146SBram Moolenaar \ '. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15', 267999dc146SBram Moolenaar \ '. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12', 268999dc146SBram Moolenaar \ ], getline(1, '$')) 269999dc146SBram Moolenaar enew! 270999dc146SBram Moolenaar 271999dc146SBram Moolenaar new | only! 272999dc146SBram Moolenaar set scrollbind& scrollopt& scrolloff& wrap& equalalways& splitbelow& 273999dc146SBram Moolenaarendfunc 274*6d91bcb4SBram Moolenaar 275*6d91bcb4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 276