142093c0eSBram Moolenaar" Tests for diff mode 2c3c766eaSBram Moolenaarset belloff=all 342093c0eSBram Moolenaar 442093c0eSBram Moolenaarfunc Test_diff_fold_sync() 542093c0eSBram Moolenaar enew! 642093c0eSBram Moolenaar let l = range(50) 742093c0eSBram Moolenaar call setline(1, l) 842093c0eSBram Moolenaar diffthis 942093c0eSBram Moolenaar let winone = win_getid() 1042093c0eSBram Moolenaar new 1142093c0eSBram Moolenaar let l[25] = 'diff' 1242093c0eSBram Moolenaar call setline(1, l) 1342093c0eSBram Moolenaar diffthis 1442093c0eSBram Moolenaar let wintwo = win_getid() 1542093c0eSBram Moolenaar " line 15 is inside the closed fold 1642093c0eSBram Moolenaar call assert_equal(19, foldclosedend(10)) 1742093c0eSBram Moolenaar call win_gotoid(winone) 1842093c0eSBram Moolenaar call assert_equal(19, foldclosedend(10)) 1942093c0eSBram Moolenaar " open the fold 2042093c0eSBram Moolenaar normal zv 2142093c0eSBram Moolenaar call assert_equal(-1, foldclosedend(10)) 2242093c0eSBram Moolenaar " fold in other window must have opened too 2342093c0eSBram Moolenaar call win_gotoid(wintwo) 2442093c0eSBram Moolenaar call assert_equal(-1, foldclosedend(10)) 2542093c0eSBram Moolenaar 2642093c0eSBram Moolenaar " cursor position is in sync 2742093c0eSBram Moolenaar normal 23G 2842093c0eSBram Moolenaar call win_gotoid(winone) 2942093c0eSBram Moolenaar call assert_equal(23, getcurpos()[1]) 3042093c0eSBram Moolenaar 3142093c0eSBram Moolenaar windo diffoff 3242093c0eSBram Moolenaar close! 3342093c0eSBram Moolenaar set nomodified 3442093c0eSBram Moolenaarendfunc 3542093c0eSBram Moolenaar 3642093c0eSBram Moolenaarfunc Test_vert_split() 3742093c0eSBram Moolenaar " Disable the title to avoid xterm keeping the wrong one. 3842093c0eSBram Moolenaar set notitle noicon 3942093c0eSBram Moolenaar new 4042093c0eSBram Moolenaar let l = ['1 aa', '2 bb', '3 cc', '4 dd', '5 ee'] 4142093c0eSBram Moolenaar call setline(1, l) 4242093c0eSBram Moolenaar w! Xtest 4342093c0eSBram Moolenaar normal dd 4442093c0eSBram Moolenaar $ 4542093c0eSBram Moolenaar put 4642093c0eSBram Moolenaar normal kkrXoxxx 4742093c0eSBram Moolenaar w! Xtest2 4842093c0eSBram Moolenaar file Nop 4942093c0eSBram Moolenaar normal ggoyyyjjjozzzz 5042093c0eSBram Moolenaar set foldmethod=marker foldcolumn=4 5142093c0eSBram Moolenaar call assert_equal(0, &diff) 5242093c0eSBram Moolenaar call assert_equal('marker', &foldmethod) 5342093c0eSBram Moolenaar call assert_equal(4, &foldcolumn) 5442093c0eSBram Moolenaar call assert_equal(0, &scrollbind) 5542093c0eSBram Moolenaar call assert_equal(0, &cursorbind) 5642093c0eSBram Moolenaar call assert_equal(1, &wrap) 5742093c0eSBram Moolenaar 5842093c0eSBram Moolenaar vert diffsplit Xtest 5942093c0eSBram Moolenaar vert diffsplit Xtest2 6042093c0eSBram Moolenaar call assert_equal(1, &diff) 6142093c0eSBram Moolenaar call assert_equal('diff', &foldmethod) 6242093c0eSBram Moolenaar call assert_equal(2, &foldcolumn) 6342093c0eSBram Moolenaar call assert_equal(1, &scrollbind) 6442093c0eSBram Moolenaar call assert_equal(1, &cursorbind) 6542093c0eSBram Moolenaar call assert_equal(0, &wrap) 6642093c0eSBram Moolenaar 6742093c0eSBram Moolenaar let diff_fdm = &fdm 6842093c0eSBram Moolenaar let diff_fdc = &fdc 6942093c0eSBram Moolenaar " repeat entering diff mode here to see if this saves the wrong settings 7042093c0eSBram Moolenaar diffthis 7142093c0eSBram Moolenaar " jump to second window for a moment to have filler line appear at start of 7242093c0eSBram Moolenaar " first window 7342093c0eSBram Moolenaar wincmd w 7442093c0eSBram Moolenaar normal gg 7542093c0eSBram Moolenaar wincmd p 7642093c0eSBram Moolenaar normal gg 7742093c0eSBram Moolenaar call assert_equal(2, winline()) 7842093c0eSBram Moolenaar normal j 7942093c0eSBram Moolenaar call assert_equal(4, winline()) 8042093c0eSBram Moolenaar normal j 8142093c0eSBram Moolenaar call assert_equal(5, winline()) 8242093c0eSBram Moolenaar normal j 8342093c0eSBram Moolenaar call assert_equal(6, winline()) 8442093c0eSBram Moolenaar normal j 8542093c0eSBram Moolenaar call assert_equal(8, winline()) 8642093c0eSBram Moolenaar normal j 8742093c0eSBram Moolenaar call assert_equal(9, winline()) 8842093c0eSBram Moolenaar 8942093c0eSBram Moolenaar wincmd w 9042093c0eSBram Moolenaar normal gg 9142093c0eSBram Moolenaar call assert_equal(1, winline()) 9242093c0eSBram Moolenaar normal j 9342093c0eSBram Moolenaar call assert_equal(2, winline()) 9442093c0eSBram Moolenaar normal j 9542093c0eSBram Moolenaar call assert_equal(4, winline()) 9642093c0eSBram Moolenaar normal j 9742093c0eSBram Moolenaar call assert_equal(5, winline()) 9842093c0eSBram Moolenaar normal j 9942093c0eSBram Moolenaar call assert_equal(8, winline()) 10042093c0eSBram Moolenaar 10142093c0eSBram Moolenaar wincmd w 10242093c0eSBram Moolenaar normal gg 10342093c0eSBram Moolenaar call assert_equal(2, winline()) 10442093c0eSBram Moolenaar normal j 10542093c0eSBram Moolenaar call assert_equal(3, winline()) 10642093c0eSBram Moolenaar normal j 10742093c0eSBram Moolenaar call assert_equal(4, winline()) 10842093c0eSBram Moolenaar normal j 10942093c0eSBram Moolenaar call assert_equal(5, winline()) 11042093c0eSBram Moolenaar normal j 11142093c0eSBram Moolenaar call assert_equal(6, winline()) 11242093c0eSBram Moolenaar normal j 11342093c0eSBram Moolenaar call assert_equal(7, winline()) 11442093c0eSBram Moolenaar normal j 11542093c0eSBram Moolenaar call assert_equal(8, winline()) 11642093c0eSBram Moolenaar 11742093c0eSBram Moolenaar " Test diffoff 11842093c0eSBram Moolenaar diffoff! 11942093c0eSBram Moolenaar 1wincmd 2 12042093c0eSBram Moolenaar let &diff = 1 12142093c0eSBram Moolenaar let &fdm = diff_fdm 12242093c0eSBram Moolenaar let &fdc = diff_fdc 12342093c0eSBram Moolenaar 4wincmd w 12442093c0eSBram Moolenaar diffoff! 12542093c0eSBram Moolenaar 1wincmd w 12642093c0eSBram Moolenaar call assert_equal(0, &diff) 12742093c0eSBram Moolenaar call assert_equal('marker', &foldmethod) 12842093c0eSBram Moolenaar call assert_equal(4, &foldcolumn) 12942093c0eSBram Moolenaar call assert_equal(0, &scrollbind) 13042093c0eSBram Moolenaar call assert_equal(0, &cursorbind) 13142093c0eSBram Moolenaar call assert_equal(1, &wrap) 13242093c0eSBram Moolenaar 13342093c0eSBram Moolenaar wincmd w 13442093c0eSBram Moolenaar call assert_equal(0, &diff) 13542093c0eSBram Moolenaar call assert_equal('marker', &foldmethod) 13642093c0eSBram Moolenaar call assert_equal(4, &foldcolumn) 13742093c0eSBram Moolenaar call assert_equal(0, &scrollbind) 13842093c0eSBram Moolenaar call assert_equal(0, &cursorbind) 13942093c0eSBram Moolenaar call assert_equal(1, &wrap) 14042093c0eSBram Moolenaar 14142093c0eSBram Moolenaar wincmd w 14242093c0eSBram Moolenaar call assert_equal(0, &diff) 14342093c0eSBram Moolenaar call assert_equal('marker', &foldmethod) 14442093c0eSBram Moolenaar call assert_equal(4, &foldcolumn) 14542093c0eSBram Moolenaar call assert_equal(0, &scrollbind) 14642093c0eSBram Moolenaar call assert_equal(0, &cursorbind) 14742093c0eSBram Moolenaar call assert_equal(1, &wrap) 14842093c0eSBram Moolenaar 149623cf88fSBram Moolenaar call delete('Xtest') 150623cf88fSBram Moolenaar call delete('Xtest2') 15142093c0eSBram Moolenaar windo bw! 15242093c0eSBram Moolenaarendfunc 15342093c0eSBram Moolenaar 15442093c0eSBram Moolenaarfunc Test_filler_lines() 15542093c0eSBram Moolenaar " Test that diffing shows correct filler lines 15642093c0eSBram Moolenaar enew! 15742093c0eSBram Moolenaar put =range(4,10) 15842093c0eSBram Moolenaar 1d _ 15942093c0eSBram Moolenaar vnew 16042093c0eSBram Moolenaar put =range(1,10) 16142093c0eSBram Moolenaar 1d _ 16242093c0eSBram Moolenaar windo diffthis 16342093c0eSBram Moolenaar wincmd h 16442093c0eSBram Moolenaar call assert_equal(1, line('w0')) 16542093c0eSBram Moolenaar unlet! diff_fdm diff_fdc 16690d121faSBram Moolenaar windo diffoff 16790d121faSBram Moolenaar bwipe! 16890d121faSBram Moolenaar enew! 16990d121faSBram Moolenaarendfunc 17042093c0eSBram Moolenaar 17190d121faSBram Moolenaarfunc Test_diffget_diffput() 17290d121faSBram Moolenaar enew! 17390d121faSBram Moolenaar let l = range(50) 17490d121faSBram Moolenaar call setline(1, l) 17590d121faSBram Moolenaar call assert_fails('diffget', 'E99:') 17690d121faSBram Moolenaar diffthis 17790d121faSBram Moolenaar call assert_fails('diffget', 'E100:') 17890d121faSBram Moolenaar new 17990d121faSBram Moolenaar let l[10] = 'one' 18090d121faSBram Moolenaar let l[20] = 'two' 18190d121faSBram Moolenaar let l[30] = 'three' 18290d121faSBram Moolenaar let l[40] = 'four' 18390d121faSBram Moolenaar call setline(1, l) 18490d121faSBram Moolenaar diffthis 18590d121faSBram Moolenaar call assert_equal('one', getline(11)) 18690d121faSBram Moolenaar 11diffget 18790d121faSBram Moolenaar call assert_equal('10', getline(11)) 18890d121faSBram Moolenaar 21diffput 18990d121faSBram Moolenaar wincmd w 19090d121faSBram Moolenaar call assert_equal('two', getline(21)) 19190d121faSBram Moolenaar normal 31Gdo 19290d121faSBram Moolenaar call assert_equal('three', getline(31)) 19390d121faSBram Moolenaar call assert_equal('40', getline(41)) 19490d121faSBram Moolenaar normal 41Gdp 19590d121faSBram Moolenaar wincmd w 19690d121faSBram Moolenaar call assert_equal('40', getline(41)) 19790d121faSBram Moolenaar new 19890d121faSBram Moolenaar diffthis 19990d121faSBram Moolenaar call assert_fails('diffget', 'E101:') 20090d121faSBram Moolenaar 20190d121faSBram Moolenaar windo diffoff 202*79a213d6SBram Moolenaar %bwipe! 203*79a213d6SBram Moolenaarendfunc 204*79a213d6SBram Moolenaar 205*79a213d6SBram Moolenaarfunc Test_dp_do_buffer() 206*79a213d6SBram Moolenaar e! one 207*79a213d6SBram Moolenaar let bn1=bufnr('%') 208*79a213d6SBram Moolenaar let l = range(60) 209*79a213d6SBram Moolenaar call setline(1, l) 210*79a213d6SBram Moolenaar diffthis 211*79a213d6SBram Moolenaar 212*79a213d6SBram Moolenaar new two 213*79a213d6SBram Moolenaar let l[10] = 'one' 214*79a213d6SBram Moolenaar let l[20] = 'two' 215*79a213d6SBram Moolenaar let l[30] = 'three' 216*79a213d6SBram Moolenaar let l[40] = 'four' 217*79a213d6SBram Moolenaar let l[50] = 'five' 218*79a213d6SBram Moolenaar call setline(1, l) 219*79a213d6SBram Moolenaar diffthis 220*79a213d6SBram Moolenaar 221*79a213d6SBram Moolenaar " dp and do with invalid buffer number. 222*79a213d6SBram Moolenaar 11 223*79a213d6SBram Moolenaar call assert_fails('norm 99999dp', 'E102:') 224*79a213d6SBram Moolenaar call assert_fails('norm 99999do', 'E102:') 225*79a213d6SBram Moolenaar call assert_fails('diffput non_existing_buffer', 'E94:') 226*79a213d6SBram Moolenaar call assert_fails('diffget non_existing_buffer', 'E94:') 227*79a213d6SBram Moolenaar 228*79a213d6SBram Moolenaar " dp and do with valid buffer number. 229*79a213d6SBram Moolenaar call assert_equal('one', getline('.')) 230*79a213d6SBram Moolenaar exe 'norm ' . bn1 . 'do' 231*79a213d6SBram Moolenaar call assert_equal('10', getline('.')) 232*79a213d6SBram Moolenaar 21 233*79a213d6SBram Moolenaar call assert_equal('two', getline('.')) 234*79a213d6SBram Moolenaar diffget one 235*79a213d6SBram Moolenaar call assert_equal('20', getline('.')) 236*79a213d6SBram Moolenaar 237*79a213d6SBram Moolenaar 31 238*79a213d6SBram Moolenaar exe 'norm ' . bn1 . 'dp' 239*79a213d6SBram Moolenaar 41 240*79a213d6SBram Moolenaar diffput one 241*79a213d6SBram Moolenaar wincmd w 242*79a213d6SBram Moolenaar 31 243*79a213d6SBram Moolenaar call assert_equal('three', getline('.')) 244*79a213d6SBram Moolenaar 41 245*79a213d6SBram Moolenaar call assert_equal('four', getline('.')) 246*79a213d6SBram Moolenaar 247*79a213d6SBram Moolenaar " dp and do with buffer number which is not in diff mode. 248*79a213d6SBram Moolenaar new not_in_diff_mode 249*79a213d6SBram Moolenaar let bn3=bufnr('%') 250*79a213d6SBram Moolenaar wincmd w 251*79a213d6SBram Moolenaar 51 252*79a213d6SBram Moolenaar call assert_fails('exe "norm" . bn3 . "dp"', 'E103:') 253*79a213d6SBram Moolenaar call assert_fails('exe "norm" . bn3 . "do"', 'E103:') 254*79a213d6SBram Moolenaar call assert_fails('diffput not_in_diff_mode', 'E94:') 255*79a213d6SBram Moolenaar call assert_fails('diffget not_in_diff_mode', 'E94:') 256*79a213d6SBram Moolenaar 257*79a213d6SBram Moolenaar windo diffoff 258*79a213d6SBram Moolenaar %bwipe! 25942093c0eSBram Moolenaarendfunc 260e67d546fSBram Moolenaar 261e67d546fSBram Moolenaarfunc Test_diffoff() 262e67d546fSBram Moolenaar enew! 263e67d546fSBram Moolenaar call setline(1, ['Two', 'Three']) 264*79a213d6SBram Moolenaar redraw 265e67d546fSBram Moolenaar let normattr = screenattr(1, 1) 266e67d546fSBram Moolenaar diffthis 267e67d546fSBram Moolenaar botright vert new 268e67d546fSBram Moolenaar call setline(1, ['One', '', 'Two', 'Three']) 269e67d546fSBram Moolenaar diffthis 270e67d546fSBram Moolenaar redraw 27125ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 272e67d546fSBram Moolenaar diffoff! 273e67d546fSBram Moolenaar redraw 274e67d546fSBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 275e67d546fSBram Moolenaar bwipe! 276e67d546fSBram Moolenaar bwipe! 277e67d546fSBram Moolenaarendfunc 278025e3e0bSBram Moolenaar 279*79a213d6SBram Moolenaarfunc Test_diffopt_icase() 280*79a213d6SBram Moolenaar set diffopt=icase,foldcolumn:0 281*79a213d6SBram Moolenaar 282*79a213d6SBram Moolenaar e one 283*79a213d6SBram Moolenaar call setline(1, ['One', 'Two', 'Three', 'Four']) 284*79a213d6SBram Moolenaar redraw 285*79a213d6SBram Moolenaar let normattr = screenattr(1, 1) 286*79a213d6SBram Moolenaar diffthis 287*79a213d6SBram Moolenaar 288*79a213d6SBram Moolenaar botright vert new two 289*79a213d6SBram Moolenaar call setline(1, ['one', 'TWO', 'Three ', 'Four']) 290*79a213d6SBram Moolenaar diffthis 291*79a213d6SBram Moolenaar 292*79a213d6SBram Moolenaar redraw 293*79a213d6SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 294*79a213d6SBram Moolenaar call assert_equal(normattr, screenattr(2, 1)) 295*79a213d6SBram Moolenaar call assert_notequal(normattr, screenattr(3, 1)) 296*79a213d6SBram Moolenaar call assert_equal(normattr, screenattr(4, 1)) 297*79a213d6SBram Moolenaar 298*79a213d6SBram Moolenaar diffoff! 299*79a213d6SBram Moolenaar %bwipe! 300*79a213d6SBram Moolenaar set diffopt& 301*79a213d6SBram Moolenaarendfunc 302*79a213d6SBram Moolenaar 303*79a213d6SBram Moolenaarfunc Test_diffopt_iwhite() 304*79a213d6SBram Moolenaar set diffopt=iwhite,foldcolumn:0 305*79a213d6SBram Moolenaar 306*79a213d6SBram Moolenaar e one 307*79a213d6SBram Moolenaar " Difference in trailing spaces should be ignored, 308*79a213d6SBram Moolenaar " but not other space differences. 309*79a213d6SBram Moolenaar call setline(1, ["One \t", 'Two', 'Three', 'Four']) 310*79a213d6SBram Moolenaar redraw 311*79a213d6SBram Moolenaar let normattr = screenattr(1, 1) 312*79a213d6SBram Moolenaar diffthis 313*79a213d6SBram Moolenaar 314*79a213d6SBram Moolenaar botright vert new two 315*79a213d6SBram Moolenaar call setline(1, ["One\t ", "Two\t ", 'Three', ' Four']) 316*79a213d6SBram Moolenaar diffthis 317*79a213d6SBram Moolenaar 318*79a213d6SBram Moolenaar redraw 319*79a213d6SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 320*79a213d6SBram Moolenaar call assert_equal(normattr, screenattr(2, 1)) 321*79a213d6SBram Moolenaar call assert_equal(normattr, screenattr(3, 1)) 322*79a213d6SBram Moolenaar call assert_notequal(normattr, screenattr(4, 1)) 323*79a213d6SBram Moolenaar 324*79a213d6SBram Moolenaar diffoff! 325*79a213d6SBram Moolenaar %bwipe! 326*79a213d6SBram Moolenaar set diffopt& 327*79a213d6SBram Moolenaarendfunc 328*79a213d6SBram Moolenaar 329*79a213d6SBram Moolenaarfunc Test_diffopt_context() 330*79a213d6SBram Moolenaar enew! 331*79a213d6SBram Moolenaar call setline(1, ['1', '2', '3', '4', '5', '6', '7']) 332*79a213d6SBram Moolenaar diffthis 333*79a213d6SBram Moolenaar new 334*79a213d6SBram Moolenaar call setline(1, ['1', '2', '3', '4', '5x', '6', '7']) 335*79a213d6SBram Moolenaar diffthis 336*79a213d6SBram Moolenaar 337*79a213d6SBram Moolenaar set diffopt=context:2 338*79a213d6SBram Moolenaar call assert_equal('+-- 2 lines: 1', foldtextresult(1)) 339*79a213d6SBram Moolenaar set diffopt=context:1 340*79a213d6SBram Moolenaar call assert_equal('+-- 3 lines: 1', foldtextresult(1)) 341*79a213d6SBram Moolenaar 342*79a213d6SBram Moolenaar diffoff! 343*79a213d6SBram Moolenaar %bwipe! 344*79a213d6SBram Moolenaar set diffopt& 345*79a213d6SBram Moolenaarendfunc 346*79a213d6SBram Moolenaar 347*79a213d6SBram Moolenaarfunc Test_diffopt_horizontal() 348*79a213d6SBram Moolenaar set diffopt=horizontal 349*79a213d6SBram Moolenaar diffsplit 350*79a213d6SBram Moolenaar 351*79a213d6SBram Moolenaar call assert_equal(&columns, winwidth(1)) 352*79a213d6SBram Moolenaar call assert_equal(&columns, winwidth(2)) 353*79a213d6SBram Moolenaar call assert_equal(&lines, winheight(1) + winheight(2) + 3) 354*79a213d6SBram Moolenaar call assert_inrange(0, 1, winheight(1) - winheight(2)) 355*79a213d6SBram Moolenaar 356*79a213d6SBram Moolenaar set diffopt& 357*79a213d6SBram Moolenaar diffoff! 358*79a213d6SBram Moolenaar %bwipe 359*79a213d6SBram Moolenaarendfunc 360*79a213d6SBram Moolenaar 361*79a213d6SBram Moolenaarfunc Test_diffopt_vertical() 362*79a213d6SBram Moolenaar set diffopt=vertical 363*79a213d6SBram Moolenaar diffsplit 364*79a213d6SBram Moolenaar 365*79a213d6SBram Moolenaar call assert_equal(&lines - 2, winheight(1)) 366*79a213d6SBram Moolenaar call assert_equal(&lines - 2, winheight(2)) 367*79a213d6SBram Moolenaar call assert_equal(&columns, winwidth(1) + winwidth(2) + 1) 368*79a213d6SBram Moolenaar call assert_inrange(0, 1, winwidth(1) - winwidth(2)) 369*79a213d6SBram Moolenaar 370*79a213d6SBram Moolenaar set diffopt& 371*79a213d6SBram Moolenaar diffoff! 372*79a213d6SBram Moolenaar %bwipe 373*79a213d6SBram Moolenaarendfunc 374*79a213d6SBram Moolenaar 37525ea0544SBram Moolenaarfunc Test_diffoff_hidden() 37625ea0544SBram Moolenaar set diffopt=filler,foldcolumn:0 37725ea0544SBram Moolenaar e! one 37825ea0544SBram Moolenaar call setline(1, ['Two', 'Three']) 379*79a213d6SBram Moolenaar redraw 38025ea0544SBram Moolenaar let normattr = screenattr(1, 1) 38125ea0544SBram Moolenaar diffthis 38225ea0544SBram Moolenaar botright vert new two 38325ea0544SBram Moolenaar call setline(1, ['One', 'Four']) 38425ea0544SBram Moolenaar diffthis 38525ea0544SBram Moolenaar redraw 38625ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 38725ea0544SBram Moolenaar set hidden 38825ea0544SBram Moolenaar close 38925ea0544SBram Moolenaar redraw 39025ea0544SBram Moolenaar " diffing with hidden buffer two 39125ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 39225ea0544SBram Moolenaar diffoff 39325ea0544SBram Moolenaar redraw 39425ea0544SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 39525ea0544SBram Moolenaar diffthis 39625ea0544SBram Moolenaar redraw 39725ea0544SBram Moolenaar " still diffing with hidden buffer two 39825ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 39925ea0544SBram Moolenaar diffoff! 40025ea0544SBram Moolenaar redraw 40125ea0544SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 40225ea0544SBram Moolenaar diffthis 40325ea0544SBram Moolenaar redraw 40425ea0544SBram Moolenaar " no longer diffing with hidden buffer two 40525ea0544SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 40625ea0544SBram Moolenaar 40725ea0544SBram Moolenaar bwipe! 40825ea0544SBram Moolenaar bwipe! 40925ea0544SBram Moolenaar set hidden& diffopt& 41025ea0544SBram Moolenaarendfunc 41125ea0544SBram Moolenaar 412025e3e0bSBram Moolenaarfunc Test_setting_cursor() 413025e3e0bSBram Moolenaar new Xtest1 414025e3e0bSBram Moolenaar put =range(1,90) 415025e3e0bSBram Moolenaar wq 416025e3e0bSBram Moolenaar new Xtest2 417025e3e0bSBram Moolenaar put =range(1,100) 418025e3e0bSBram Moolenaar wq 419025e3e0bSBram Moolenaar 420025e3e0bSBram Moolenaar tabe Xtest2 421025e3e0bSBram Moolenaar $ 422025e3e0bSBram Moolenaar diffsp Xtest1 423025e3e0bSBram Moolenaar tabclose 424025e3e0bSBram Moolenaar 425025e3e0bSBram Moolenaar call delete('Xtest1') 426025e3e0bSBram Moolenaar call delete('Xtest2') 427025e3e0bSBram Moolenaarendfunc 428aeb661e1SBram Moolenaar 429aeb661e1SBram Moolenaarfunc Test_diff_move_to() 430aeb661e1SBram Moolenaar new 431aeb661e1SBram Moolenaar call setline(1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 432aeb661e1SBram Moolenaar diffthis 433aeb661e1SBram Moolenaar vnew 434aeb661e1SBram Moolenaar call setline(1, [1, '2x', 3, 4, 4, 5, '6x', 7, '8x', 9, '10x']) 435aeb661e1SBram Moolenaar diffthis 436aeb661e1SBram Moolenaar norm ]c 437aeb661e1SBram Moolenaar call assert_equal(2, line('.')) 438aeb661e1SBram Moolenaar norm 3]c 439aeb661e1SBram Moolenaar call assert_equal(9, line('.')) 440aeb661e1SBram Moolenaar norm 10]c 441aeb661e1SBram Moolenaar call assert_equal(11, line('.')) 442aeb661e1SBram Moolenaar norm [c 443aeb661e1SBram Moolenaar call assert_equal(9, line('.')) 444aeb661e1SBram Moolenaar norm 2[c 445aeb661e1SBram Moolenaar call assert_equal(5, line('.')) 446aeb661e1SBram Moolenaar norm 10[c 447aeb661e1SBram Moolenaar call assert_equal(2, line('.')) 448aeb661e1SBram Moolenaar %bwipe! 449aeb661e1SBram Moolenaarendfunc 450aeb661e1SBram Moolenaar 451*79a213d6SBram Moolenaarfunc Test_diffexpr() 452*79a213d6SBram Moolenaar if !executable('diff') 453*79a213d6SBram Moolenaar return 454*79a213d6SBram Moolenaar endif 455*79a213d6SBram Moolenaar 456*79a213d6SBram Moolenaar func DiffExpr() 457*79a213d6SBram Moolenaar silent exe '!diff ' . v:fname_in . ' ' . v:fname_new . '>' . v:fname_out 458*79a213d6SBram Moolenaar endfunc 459*79a213d6SBram Moolenaar set diffexpr=DiffExpr() 460*79a213d6SBram Moolenaar set diffopt=foldcolumn:0 461*79a213d6SBram Moolenaar 462*79a213d6SBram Moolenaar enew! 463*79a213d6SBram Moolenaar call setline(1, ['one', 'two', 'three']) 464*79a213d6SBram Moolenaar redraw 465*79a213d6SBram Moolenaar let normattr = screenattr(1, 1) 466*79a213d6SBram Moolenaar diffthis 467*79a213d6SBram Moolenaar 468*79a213d6SBram Moolenaar botright vert new 469*79a213d6SBram Moolenaar call setline(1, ['one', 'two', 'three.']) 470*79a213d6SBram Moolenaar diffthis 471*79a213d6SBram Moolenaar 472*79a213d6SBram Moolenaar redraw 473*79a213d6SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 474*79a213d6SBram Moolenaar call assert_equal(normattr, screenattr(2, 1)) 475*79a213d6SBram Moolenaar call assert_notequal(normattr, screenattr(3, 1)) 476*79a213d6SBram Moolenaar 477*79a213d6SBram Moolenaar diffoff! 478*79a213d6SBram Moolenaar %bwipe! 479*79a213d6SBram Moolenaar set diffexpr& diffopt& 480*79a213d6SBram Moolenaarendfunc 481*79a213d6SBram Moolenaar 482aeb661e1SBram Moolenaarfunc Test_diffpatch() 483aeb661e1SBram Moolenaar " The patch program on MS-Windows may fail or hang. 484aeb661e1SBram Moolenaar if !executable('patch') || !has('unix') 485aeb661e1SBram Moolenaar return 486aeb661e1SBram Moolenaar endif 487aeb661e1SBram Moolenaar new 488aeb661e1SBram Moolenaar insert 489aeb661e1SBram Moolenaar*************** 490aeb661e1SBram Moolenaar*** 1,3 **** 491aeb661e1SBram Moolenaar 1 492aeb661e1SBram Moolenaar! 2 493aeb661e1SBram Moolenaar 3 494aeb661e1SBram Moolenaar--- 1,4 ---- 495aeb661e1SBram Moolenaar 1 496aeb661e1SBram Moolenaar! 2x 497aeb661e1SBram Moolenaar 3 498aeb661e1SBram Moolenaar+ 4 499aeb661e1SBram Moolenaar. 500aeb661e1SBram Moolenaar saveas Xpatch 501aeb661e1SBram Moolenaar bwipe! 502aeb661e1SBram Moolenaar new 503aeb661e1SBram Moolenaar call assert_fails('diffpatch Xpatch', 'E816:') 5041ef73e33SBram Moolenaar 505a95ab321SBram Moolenaar for name in ['Xpatch', 'Xpatch$HOME', 'Xpa''tch'] 506aeb661e1SBram Moolenaar call setline(1, ['1', '2', '3']) 5071ef73e33SBram Moolenaar if name != 'Xpatch' 5081ef73e33SBram Moolenaar call rename('Xpatch', name) 5091ef73e33SBram Moolenaar endif 5101ef73e33SBram Moolenaar exe 'diffpatch ' . escape(name, '$') 511aeb661e1SBram Moolenaar call assert_equal(['1', '2x', '3', '4'], getline(1, '$')) 5121ef73e33SBram Moolenaar if name != 'Xpatch' 5131ef73e33SBram Moolenaar call rename(name, 'Xpatch') 5141ef73e33SBram Moolenaar endif 5151ef73e33SBram Moolenaar bwipe! 5161ef73e33SBram Moolenaar endfor 5171ef73e33SBram Moolenaar 518aeb661e1SBram Moolenaar call delete('Xpatch') 519aeb661e1SBram Moolenaar bwipe! 520aeb661e1SBram Moolenaarendfunc 521aeb661e1SBram Moolenaar 522aeb661e1SBram Moolenaarfunc Test_diff_too_many_buffers() 523aeb661e1SBram Moolenaar for i in range(1, 8) 524aeb661e1SBram Moolenaar exe "new Xtest" . i 525aeb661e1SBram Moolenaar diffthis 526aeb661e1SBram Moolenaar endfor 527aeb661e1SBram Moolenaar new Xtest9 528aeb661e1SBram Moolenaar call assert_fails('diffthis', 'E96:') 529aeb661e1SBram Moolenaar %bwipe! 530aeb661e1SBram Moolenaarendfunc 531aeb661e1SBram Moolenaar 532aeb661e1SBram Moolenaarfunc Test_diff_nomodifiable() 533aeb661e1SBram Moolenaar new 534aeb661e1SBram Moolenaar call setline(1, [1, 2, 3, 4]) 535aeb661e1SBram Moolenaar setl nomodifiable 536aeb661e1SBram Moolenaar diffthis 537aeb661e1SBram Moolenaar vnew 538aeb661e1SBram Moolenaar call setline(1, ['1x', 2, 3, 3, 4]) 539aeb661e1SBram Moolenaar diffthis 540aeb661e1SBram Moolenaar call assert_fails('norm dp', 'E793:') 541aeb661e1SBram Moolenaar setl nomodifiable 542aeb661e1SBram Moolenaar call assert_fails('norm do', 'E21:') 543aeb661e1SBram Moolenaar %bwipe! 544aeb661e1SBram Moolenaarendfunc 545f58a8475SBram Moolenaar 546f58a8475SBram Moolenaarfunc Test_diff_lastline() 547f58a8475SBram Moolenaar enew! 548f58a8475SBram Moolenaar only! 549f58a8475SBram Moolenaar call setline(1, ['This is a ', 'line with five ', 'rows']) 550f58a8475SBram Moolenaar diffthis 551f58a8475SBram Moolenaar botright vert new 552f58a8475SBram Moolenaar call setline(1, ['This is', 'a line with ', 'four rows']) 553f58a8475SBram Moolenaar diffthis 554f58a8475SBram Moolenaar 1 555f58a8475SBram Moolenaar call feedkeys("Je a\<CR>", 'tx') 556f58a8475SBram Moolenaar call feedkeys("Je a\<CR>", 'tx') 557f58a8475SBram Moolenaar let w1lines = winline() 558f58a8475SBram Moolenaar wincmd w 559f58a8475SBram Moolenaar $ 560f58a8475SBram Moolenaar let w2lines = winline() 561f58a8475SBram Moolenaar call assert_equal(w2lines, w1lines) 562f58a8475SBram Moolenaar bwipe! 563f58a8475SBram Moolenaar bwipe! 564f58a8475SBram Moolenaarendfunc 565