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 20279a213d6SBram Moolenaar %bwipe! 20379a213d6SBram Moolenaarendfunc 20479a213d6SBram Moolenaar 20579a213d6SBram Moolenaarfunc Test_dp_do_buffer() 20679a213d6SBram Moolenaar e! one 20779a213d6SBram Moolenaar let bn1=bufnr('%') 20879a213d6SBram Moolenaar let l = range(60) 20979a213d6SBram Moolenaar call setline(1, l) 21079a213d6SBram Moolenaar diffthis 21179a213d6SBram Moolenaar 21279a213d6SBram Moolenaar new two 21379a213d6SBram Moolenaar let l[10] = 'one' 21479a213d6SBram Moolenaar let l[20] = 'two' 21579a213d6SBram Moolenaar let l[30] = 'three' 21679a213d6SBram Moolenaar let l[40] = 'four' 21779a213d6SBram Moolenaar let l[50] = 'five' 21879a213d6SBram Moolenaar call setline(1, l) 21979a213d6SBram Moolenaar diffthis 22079a213d6SBram Moolenaar 22179a213d6SBram Moolenaar " dp and do with invalid buffer number. 22279a213d6SBram Moolenaar 11 22379a213d6SBram Moolenaar call assert_fails('norm 99999dp', 'E102:') 22479a213d6SBram Moolenaar call assert_fails('norm 99999do', 'E102:') 22579a213d6SBram Moolenaar call assert_fails('diffput non_existing_buffer', 'E94:') 22679a213d6SBram Moolenaar call assert_fails('diffget non_existing_buffer', 'E94:') 22779a213d6SBram Moolenaar 22879a213d6SBram Moolenaar " dp and do with valid buffer number. 22979a213d6SBram Moolenaar call assert_equal('one', getline('.')) 23079a213d6SBram Moolenaar exe 'norm ' . bn1 . 'do' 23179a213d6SBram Moolenaar call assert_equal('10', getline('.')) 23279a213d6SBram Moolenaar 21 23379a213d6SBram Moolenaar call assert_equal('two', getline('.')) 23479a213d6SBram Moolenaar diffget one 23579a213d6SBram Moolenaar call assert_equal('20', getline('.')) 23679a213d6SBram Moolenaar 23779a213d6SBram Moolenaar 31 23879a213d6SBram Moolenaar exe 'norm ' . bn1 . 'dp' 23979a213d6SBram Moolenaar 41 24079a213d6SBram Moolenaar diffput one 24179a213d6SBram Moolenaar wincmd w 24279a213d6SBram Moolenaar 31 24379a213d6SBram Moolenaar call assert_equal('three', getline('.')) 24479a213d6SBram Moolenaar 41 24579a213d6SBram Moolenaar call assert_equal('four', getline('.')) 24679a213d6SBram Moolenaar 24779a213d6SBram Moolenaar " dp and do with buffer number which is not in diff mode. 24879a213d6SBram Moolenaar new not_in_diff_mode 24979a213d6SBram Moolenaar let bn3=bufnr('%') 25079a213d6SBram Moolenaar wincmd w 25179a213d6SBram Moolenaar 51 25279a213d6SBram Moolenaar call assert_fails('exe "norm" . bn3 . "dp"', 'E103:') 25379a213d6SBram Moolenaar call assert_fails('exe "norm" . bn3 . "do"', 'E103:') 25479a213d6SBram Moolenaar call assert_fails('diffput not_in_diff_mode', 'E94:') 25579a213d6SBram Moolenaar call assert_fails('diffget not_in_diff_mode', 'E94:') 25679a213d6SBram Moolenaar 25779a213d6SBram Moolenaar windo diffoff 25879a213d6SBram Moolenaar %bwipe! 25942093c0eSBram Moolenaarendfunc 260e67d546fSBram Moolenaar 261e67d546fSBram Moolenaarfunc Test_diffoff() 262e67d546fSBram Moolenaar enew! 263e67d546fSBram Moolenaar call setline(1, ['Two', 'Three']) 26479a213d6SBram 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 27979a213d6SBram Moolenaarfunc Test_diffopt_icase() 28079a213d6SBram Moolenaar set diffopt=icase,foldcolumn:0 28179a213d6SBram Moolenaar 28279a213d6SBram Moolenaar e one 283*da22b8ccSBram Moolenaar call setline(1, ['One', 'Two', 'Three', 'Four', 'Fi#ve']) 28479a213d6SBram Moolenaar redraw 28579a213d6SBram Moolenaar let normattr = screenattr(1, 1) 28679a213d6SBram Moolenaar diffthis 28779a213d6SBram Moolenaar 28879a213d6SBram Moolenaar botright vert new two 289*da22b8ccSBram Moolenaar call setline(1, ['one', 'TWO', 'Three ', 'Four', 'fI=VE']) 29079a213d6SBram Moolenaar diffthis 29179a213d6SBram Moolenaar 29279a213d6SBram Moolenaar redraw 29379a213d6SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 29479a213d6SBram Moolenaar call assert_equal(normattr, screenattr(2, 1)) 29579a213d6SBram Moolenaar call assert_notequal(normattr, screenattr(3, 1)) 29679a213d6SBram Moolenaar call assert_equal(normattr, screenattr(4, 1)) 29779a213d6SBram Moolenaar 298*da22b8ccSBram Moolenaar let dtextattr = screenattr(5, 3) 299*da22b8ccSBram Moolenaar call assert_notequal(dtextattr, screenattr(5, 1)) 300*da22b8ccSBram Moolenaar call assert_notequal(dtextattr, screenattr(5, 5)) 301*da22b8ccSBram Moolenaar 30279a213d6SBram Moolenaar diffoff! 30379a213d6SBram Moolenaar %bwipe! 30479a213d6SBram Moolenaar set diffopt& 30579a213d6SBram Moolenaarendfunc 30679a213d6SBram Moolenaar 30779a213d6SBram Moolenaarfunc Test_diffopt_iwhite() 30879a213d6SBram Moolenaar set diffopt=iwhite,foldcolumn:0 30979a213d6SBram Moolenaar 31079a213d6SBram Moolenaar e one 31179a213d6SBram Moolenaar " Difference in trailing spaces should be ignored, 31279a213d6SBram Moolenaar " but not other space differences. 31379a213d6SBram Moolenaar call setline(1, ["One \t", 'Two', 'Three', 'Four']) 31479a213d6SBram Moolenaar redraw 31579a213d6SBram Moolenaar let normattr = screenattr(1, 1) 31679a213d6SBram Moolenaar diffthis 31779a213d6SBram Moolenaar 31879a213d6SBram Moolenaar botright vert new two 31979a213d6SBram Moolenaar call setline(1, ["One\t ", "Two\t ", 'Three', ' Four']) 32079a213d6SBram Moolenaar diffthis 32179a213d6SBram Moolenaar 32279a213d6SBram Moolenaar redraw 32379a213d6SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 32479a213d6SBram Moolenaar call assert_equal(normattr, screenattr(2, 1)) 32579a213d6SBram Moolenaar call assert_equal(normattr, screenattr(3, 1)) 32679a213d6SBram Moolenaar call assert_notequal(normattr, screenattr(4, 1)) 32779a213d6SBram Moolenaar 32879a213d6SBram Moolenaar diffoff! 32979a213d6SBram Moolenaar %bwipe! 33079a213d6SBram Moolenaar set diffopt& 33179a213d6SBram Moolenaarendfunc 33279a213d6SBram Moolenaar 33379a213d6SBram Moolenaarfunc Test_diffopt_context() 33479a213d6SBram Moolenaar enew! 33579a213d6SBram Moolenaar call setline(1, ['1', '2', '3', '4', '5', '6', '7']) 33679a213d6SBram Moolenaar diffthis 33779a213d6SBram Moolenaar new 33879a213d6SBram Moolenaar call setline(1, ['1', '2', '3', '4', '5x', '6', '7']) 33979a213d6SBram Moolenaar diffthis 34079a213d6SBram Moolenaar 34179a213d6SBram Moolenaar set diffopt=context:2 34279a213d6SBram Moolenaar call assert_equal('+-- 2 lines: 1', foldtextresult(1)) 34379a213d6SBram Moolenaar set diffopt=context:1 34479a213d6SBram Moolenaar call assert_equal('+-- 3 lines: 1', foldtextresult(1)) 34579a213d6SBram Moolenaar 34679a213d6SBram Moolenaar diffoff! 34779a213d6SBram Moolenaar %bwipe! 34879a213d6SBram Moolenaar set diffopt& 34979a213d6SBram Moolenaarendfunc 35079a213d6SBram Moolenaar 35179a213d6SBram Moolenaarfunc Test_diffopt_horizontal() 35279a213d6SBram Moolenaar set diffopt=horizontal 35379a213d6SBram Moolenaar diffsplit 35479a213d6SBram Moolenaar 35579a213d6SBram Moolenaar call assert_equal(&columns, winwidth(1)) 35679a213d6SBram Moolenaar call assert_equal(&columns, winwidth(2)) 35779a213d6SBram Moolenaar call assert_equal(&lines, winheight(1) + winheight(2) + 3) 35879a213d6SBram Moolenaar call assert_inrange(0, 1, winheight(1) - winheight(2)) 35979a213d6SBram Moolenaar 36079a213d6SBram Moolenaar set diffopt& 36179a213d6SBram Moolenaar diffoff! 36279a213d6SBram Moolenaar %bwipe 36379a213d6SBram Moolenaarendfunc 36479a213d6SBram Moolenaar 36579a213d6SBram Moolenaarfunc Test_diffopt_vertical() 36679a213d6SBram Moolenaar set diffopt=vertical 36779a213d6SBram Moolenaar diffsplit 36879a213d6SBram Moolenaar 36979a213d6SBram Moolenaar call assert_equal(&lines - 2, winheight(1)) 37079a213d6SBram Moolenaar call assert_equal(&lines - 2, winheight(2)) 37179a213d6SBram Moolenaar call assert_equal(&columns, winwidth(1) + winwidth(2) + 1) 37279a213d6SBram Moolenaar call assert_inrange(0, 1, winwidth(1) - winwidth(2)) 37379a213d6SBram Moolenaar 37479a213d6SBram Moolenaar set diffopt& 37579a213d6SBram Moolenaar diffoff! 37679a213d6SBram Moolenaar %bwipe 37779a213d6SBram Moolenaarendfunc 37879a213d6SBram Moolenaar 37925ea0544SBram Moolenaarfunc Test_diffoff_hidden() 38025ea0544SBram Moolenaar set diffopt=filler,foldcolumn:0 38125ea0544SBram Moolenaar e! one 38225ea0544SBram Moolenaar call setline(1, ['Two', 'Three']) 38379a213d6SBram Moolenaar redraw 38425ea0544SBram Moolenaar let normattr = screenattr(1, 1) 38525ea0544SBram Moolenaar diffthis 38625ea0544SBram Moolenaar botright vert new two 38725ea0544SBram Moolenaar call setline(1, ['One', 'Four']) 38825ea0544SBram Moolenaar diffthis 38925ea0544SBram Moolenaar redraw 39025ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 39125ea0544SBram Moolenaar set hidden 39225ea0544SBram Moolenaar close 39325ea0544SBram Moolenaar redraw 39425ea0544SBram Moolenaar " diffing with hidden buffer two 39525ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 39625ea0544SBram Moolenaar diffoff 39725ea0544SBram Moolenaar redraw 39825ea0544SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 39925ea0544SBram Moolenaar diffthis 40025ea0544SBram Moolenaar redraw 40125ea0544SBram Moolenaar " still diffing with hidden buffer two 40225ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 40325ea0544SBram Moolenaar diffoff! 40425ea0544SBram Moolenaar redraw 40525ea0544SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 40625ea0544SBram Moolenaar diffthis 40725ea0544SBram Moolenaar redraw 40825ea0544SBram Moolenaar " no longer diffing with hidden buffer two 40925ea0544SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 41025ea0544SBram Moolenaar 41125ea0544SBram Moolenaar bwipe! 41225ea0544SBram Moolenaar bwipe! 41325ea0544SBram Moolenaar set hidden& diffopt& 41425ea0544SBram Moolenaarendfunc 41525ea0544SBram Moolenaar 416025e3e0bSBram Moolenaarfunc Test_setting_cursor() 417025e3e0bSBram Moolenaar new Xtest1 418025e3e0bSBram Moolenaar put =range(1,90) 419025e3e0bSBram Moolenaar wq 420025e3e0bSBram Moolenaar new Xtest2 421025e3e0bSBram Moolenaar put =range(1,100) 422025e3e0bSBram Moolenaar wq 423025e3e0bSBram Moolenaar 424025e3e0bSBram Moolenaar tabe Xtest2 425025e3e0bSBram Moolenaar $ 426025e3e0bSBram Moolenaar diffsp Xtest1 427025e3e0bSBram Moolenaar tabclose 428025e3e0bSBram Moolenaar 429025e3e0bSBram Moolenaar call delete('Xtest1') 430025e3e0bSBram Moolenaar call delete('Xtest2') 431025e3e0bSBram Moolenaarendfunc 432aeb661e1SBram Moolenaar 433aeb661e1SBram Moolenaarfunc Test_diff_move_to() 434aeb661e1SBram Moolenaar new 435aeb661e1SBram Moolenaar call setline(1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 436aeb661e1SBram Moolenaar diffthis 437aeb661e1SBram Moolenaar vnew 438aeb661e1SBram Moolenaar call setline(1, [1, '2x', 3, 4, 4, 5, '6x', 7, '8x', 9, '10x']) 439aeb661e1SBram Moolenaar diffthis 440aeb661e1SBram Moolenaar norm ]c 441aeb661e1SBram Moolenaar call assert_equal(2, line('.')) 442aeb661e1SBram Moolenaar norm 3]c 443aeb661e1SBram Moolenaar call assert_equal(9, line('.')) 444aeb661e1SBram Moolenaar norm 10]c 445aeb661e1SBram Moolenaar call assert_equal(11, line('.')) 446aeb661e1SBram Moolenaar norm [c 447aeb661e1SBram Moolenaar call assert_equal(9, line('.')) 448aeb661e1SBram Moolenaar norm 2[c 449aeb661e1SBram Moolenaar call assert_equal(5, line('.')) 450aeb661e1SBram Moolenaar norm 10[c 451aeb661e1SBram Moolenaar call assert_equal(2, line('.')) 452aeb661e1SBram Moolenaar %bwipe! 453aeb661e1SBram Moolenaarendfunc 454aeb661e1SBram Moolenaar 45579a213d6SBram Moolenaarfunc Test_diffexpr() 45679a213d6SBram Moolenaar if !executable('diff') 45779a213d6SBram Moolenaar return 45879a213d6SBram Moolenaar endif 45979a213d6SBram Moolenaar 46079a213d6SBram Moolenaar func DiffExpr() 46179a213d6SBram Moolenaar silent exe '!diff ' . v:fname_in . ' ' . v:fname_new . '>' . v:fname_out 46279a213d6SBram Moolenaar endfunc 46379a213d6SBram Moolenaar set diffexpr=DiffExpr() 46479a213d6SBram Moolenaar set diffopt=foldcolumn:0 46579a213d6SBram Moolenaar 46679a213d6SBram Moolenaar enew! 46779a213d6SBram Moolenaar call setline(1, ['one', 'two', 'three']) 46879a213d6SBram Moolenaar redraw 46979a213d6SBram Moolenaar let normattr = screenattr(1, 1) 47079a213d6SBram Moolenaar diffthis 47179a213d6SBram Moolenaar 47279a213d6SBram Moolenaar botright vert new 47379a213d6SBram Moolenaar call setline(1, ['one', 'two', 'three.']) 47479a213d6SBram Moolenaar diffthis 47579a213d6SBram Moolenaar 47679a213d6SBram Moolenaar redraw 47779a213d6SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 47879a213d6SBram Moolenaar call assert_equal(normattr, screenattr(2, 1)) 47979a213d6SBram Moolenaar call assert_notequal(normattr, screenattr(3, 1)) 48079a213d6SBram Moolenaar 48179a213d6SBram Moolenaar diffoff! 48279a213d6SBram Moolenaar %bwipe! 48379a213d6SBram Moolenaar set diffexpr& diffopt& 48479a213d6SBram Moolenaarendfunc 48579a213d6SBram Moolenaar 486aeb661e1SBram Moolenaarfunc Test_diffpatch() 487aeb661e1SBram Moolenaar " The patch program on MS-Windows may fail or hang. 488aeb661e1SBram Moolenaar if !executable('patch') || !has('unix') 489aeb661e1SBram Moolenaar return 490aeb661e1SBram Moolenaar endif 491aeb661e1SBram Moolenaar new 492aeb661e1SBram Moolenaar insert 493aeb661e1SBram Moolenaar*************** 494aeb661e1SBram Moolenaar*** 1,3 **** 495aeb661e1SBram Moolenaar 1 496aeb661e1SBram Moolenaar! 2 497aeb661e1SBram Moolenaar 3 498aeb661e1SBram Moolenaar--- 1,4 ---- 499aeb661e1SBram Moolenaar 1 500aeb661e1SBram Moolenaar! 2x 501aeb661e1SBram Moolenaar 3 502aeb661e1SBram Moolenaar+ 4 503aeb661e1SBram Moolenaar. 504aeb661e1SBram Moolenaar saveas Xpatch 505aeb661e1SBram Moolenaar bwipe! 506aeb661e1SBram Moolenaar new 507aeb661e1SBram Moolenaar call assert_fails('diffpatch Xpatch', 'E816:') 5081ef73e33SBram Moolenaar 509a95ab321SBram Moolenaar for name in ['Xpatch', 'Xpatch$HOME', 'Xpa''tch'] 510aeb661e1SBram Moolenaar call setline(1, ['1', '2', '3']) 5111ef73e33SBram Moolenaar if name != 'Xpatch' 5121ef73e33SBram Moolenaar call rename('Xpatch', name) 5131ef73e33SBram Moolenaar endif 5141ef73e33SBram Moolenaar exe 'diffpatch ' . escape(name, '$') 515aeb661e1SBram Moolenaar call assert_equal(['1', '2x', '3', '4'], getline(1, '$')) 5161ef73e33SBram Moolenaar if name != 'Xpatch' 5171ef73e33SBram Moolenaar call rename(name, 'Xpatch') 5181ef73e33SBram Moolenaar endif 5191ef73e33SBram Moolenaar bwipe! 5201ef73e33SBram Moolenaar endfor 5211ef73e33SBram Moolenaar 522aeb661e1SBram Moolenaar call delete('Xpatch') 523aeb661e1SBram Moolenaar bwipe! 524aeb661e1SBram Moolenaarendfunc 525aeb661e1SBram Moolenaar 526aeb661e1SBram Moolenaarfunc Test_diff_too_many_buffers() 527aeb661e1SBram Moolenaar for i in range(1, 8) 528aeb661e1SBram Moolenaar exe "new Xtest" . i 529aeb661e1SBram Moolenaar diffthis 530aeb661e1SBram Moolenaar endfor 531aeb661e1SBram Moolenaar new Xtest9 532aeb661e1SBram Moolenaar call assert_fails('diffthis', 'E96:') 533aeb661e1SBram Moolenaar %bwipe! 534aeb661e1SBram Moolenaarendfunc 535aeb661e1SBram Moolenaar 536aeb661e1SBram Moolenaarfunc Test_diff_nomodifiable() 537aeb661e1SBram Moolenaar new 538aeb661e1SBram Moolenaar call setline(1, [1, 2, 3, 4]) 539aeb661e1SBram Moolenaar setl nomodifiable 540aeb661e1SBram Moolenaar diffthis 541aeb661e1SBram Moolenaar vnew 542aeb661e1SBram Moolenaar call setline(1, ['1x', 2, 3, 3, 4]) 543aeb661e1SBram Moolenaar diffthis 544aeb661e1SBram Moolenaar call assert_fails('norm dp', 'E793:') 545aeb661e1SBram Moolenaar setl nomodifiable 546aeb661e1SBram Moolenaar call assert_fails('norm do', 'E21:') 547aeb661e1SBram Moolenaar %bwipe! 548aeb661e1SBram Moolenaarendfunc 549f58a8475SBram Moolenaar 550f58a8475SBram Moolenaarfunc Test_diff_lastline() 551f58a8475SBram Moolenaar enew! 552f58a8475SBram Moolenaar only! 553f58a8475SBram Moolenaar call setline(1, ['This is a ', 'line with five ', 'rows']) 554f58a8475SBram Moolenaar diffthis 555f58a8475SBram Moolenaar botright vert new 556f58a8475SBram Moolenaar call setline(1, ['This is', 'a line with ', 'four rows']) 557f58a8475SBram Moolenaar diffthis 558f58a8475SBram Moolenaar 1 559f58a8475SBram Moolenaar call feedkeys("Je a\<CR>", 'tx') 560f58a8475SBram Moolenaar call feedkeys("Je a\<CR>", 'tx') 561f58a8475SBram Moolenaar let w1lines = winline() 562f58a8475SBram Moolenaar wincmd w 563f58a8475SBram Moolenaar $ 564f58a8475SBram Moolenaar let w2lines = winline() 565f58a8475SBram Moolenaar call assert_equal(w2lines, w1lines) 566f58a8475SBram Moolenaar bwipe! 567f58a8475SBram Moolenaar bwipe! 568f58a8475SBram Moolenaarendfunc 569