142093c0eSBram Moolenaar" Tests for diff mode 242093c0eSBram Moolenaar 342093c0eSBram Moolenaarfunc Test_diff_fold_sync() 442093c0eSBram Moolenaar enew! 542093c0eSBram Moolenaar let l = range(50) 642093c0eSBram Moolenaar call setline(1, l) 742093c0eSBram Moolenaar diffthis 842093c0eSBram Moolenaar let winone = win_getid() 942093c0eSBram Moolenaar new 1042093c0eSBram Moolenaar let l[25] = 'diff' 1142093c0eSBram Moolenaar call setline(1, l) 1242093c0eSBram Moolenaar diffthis 1342093c0eSBram Moolenaar let wintwo = win_getid() 1442093c0eSBram Moolenaar " line 15 is inside the closed fold 1542093c0eSBram Moolenaar call assert_equal(19, foldclosedend(10)) 1642093c0eSBram Moolenaar call win_gotoid(winone) 1742093c0eSBram Moolenaar call assert_equal(19, foldclosedend(10)) 1842093c0eSBram Moolenaar " open the fold 1942093c0eSBram Moolenaar normal zv 2042093c0eSBram Moolenaar call assert_equal(-1, foldclosedend(10)) 2142093c0eSBram Moolenaar " fold in other window must have opened too 2242093c0eSBram Moolenaar call win_gotoid(wintwo) 2342093c0eSBram Moolenaar call assert_equal(-1, foldclosedend(10)) 2442093c0eSBram Moolenaar 2542093c0eSBram Moolenaar " cursor position is in sync 2642093c0eSBram Moolenaar normal 23G 2742093c0eSBram Moolenaar call win_gotoid(winone) 2842093c0eSBram Moolenaar call assert_equal(23, getcurpos()[1]) 2942093c0eSBram Moolenaar 3042093c0eSBram Moolenaar windo diffoff 3142093c0eSBram Moolenaar close! 3242093c0eSBram Moolenaar set nomodified 3342093c0eSBram Moolenaarendfunc 3442093c0eSBram Moolenaar 3542093c0eSBram Moolenaarfunc Test_vert_split() 3642093c0eSBram Moolenaar " Disable the title to avoid xterm keeping the wrong one. 3742093c0eSBram Moolenaar set notitle noicon 3842093c0eSBram Moolenaar new 3942093c0eSBram Moolenaar let l = ['1 aa', '2 bb', '3 cc', '4 dd', '5 ee'] 4042093c0eSBram Moolenaar call setline(1, l) 4142093c0eSBram Moolenaar w! Xtest 4242093c0eSBram Moolenaar normal dd 4342093c0eSBram Moolenaar $ 4442093c0eSBram Moolenaar put 4542093c0eSBram Moolenaar normal kkrXoxxx 4642093c0eSBram Moolenaar w! Xtest2 4742093c0eSBram Moolenaar file Nop 4842093c0eSBram Moolenaar normal ggoyyyjjjozzzz 4942093c0eSBram Moolenaar set foldmethod=marker foldcolumn=4 5042093c0eSBram Moolenaar call assert_equal(0, &diff) 5142093c0eSBram Moolenaar call assert_equal('marker', &foldmethod) 5242093c0eSBram Moolenaar call assert_equal(4, &foldcolumn) 5342093c0eSBram Moolenaar call assert_equal(0, &scrollbind) 5442093c0eSBram Moolenaar call assert_equal(0, &cursorbind) 5542093c0eSBram Moolenaar call assert_equal(1, &wrap) 5642093c0eSBram Moolenaar 5742093c0eSBram Moolenaar vert diffsplit Xtest 5842093c0eSBram Moolenaar vert diffsplit Xtest2 5942093c0eSBram Moolenaar call assert_equal(1, &diff) 6042093c0eSBram Moolenaar call assert_equal('diff', &foldmethod) 6142093c0eSBram Moolenaar call assert_equal(2, &foldcolumn) 6242093c0eSBram Moolenaar call assert_equal(1, &scrollbind) 6342093c0eSBram Moolenaar call assert_equal(1, &cursorbind) 6442093c0eSBram Moolenaar call assert_equal(0, &wrap) 6542093c0eSBram Moolenaar 6642093c0eSBram Moolenaar let diff_fdm = &fdm 6742093c0eSBram Moolenaar let diff_fdc = &fdc 6842093c0eSBram Moolenaar " repeat entering diff mode here to see if this saves the wrong settings 6942093c0eSBram Moolenaar diffthis 7042093c0eSBram Moolenaar " jump to second window for a moment to have filler line appear at start of 7142093c0eSBram Moolenaar " first window 7242093c0eSBram Moolenaar wincmd w 7342093c0eSBram Moolenaar normal gg 7442093c0eSBram Moolenaar wincmd p 7542093c0eSBram Moolenaar normal gg 7642093c0eSBram Moolenaar call assert_equal(2, winline()) 7742093c0eSBram Moolenaar normal j 7842093c0eSBram Moolenaar call assert_equal(4, winline()) 7942093c0eSBram Moolenaar normal j 8042093c0eSBram Moolenaar call assert_equal(5, winline()) 8142093c0eSBram Moolenaar normal j 8242093c0eSBram Moolenaar call assert_equal(6, winline()) 8342093c0eSBram Moolenaar normal j 8442093c0eSBram Moolenaar call assert_equal(8, winline()) 8542093c0eSBram Moolenaar normal j 8642093c0eSBram Moolenaar call assert_equal(9, winline()) 8742093c0eSBram Moolenaar 8842093c0eSBram Moolenaar wincmd w 8942093c0eSBram Moolenaar normal gg 9042093c0eSBram Moolenaar call assert_equal(1, winline()) 9142093c0eSBram Moolenaar normal j 9242093c0eSBram Moolenaar call assert_equal(2, winline()) 9342093c0eSBram Moolenaar normal j 9442093c0eSBram Moolenaar call assert_equal(4, winline()) 9542093c0eSBram Moolenaar normal j 9642093c0eSBram Moolenaar call assert_equal(5, winline()) 9742093c0eSBram Moolenaar normal j 9842093c0eSBram Moolenaar call assert_equal(8, winline()) 9942093c0eSBram Moolenaar 10042093c0eSBram Moolenaar wincmd w 10142093c0eSBram Moolenaar normal gg 10242093c0eSBram Moolenaar call assert_equal(2, winline()) 10342093c0eSBram Moolenaar normal j 10442093c0eSBram Moolenaar call assert_equal(3, winline()) 10542093c0eSBram Moolenaar normal j 10642093c0eSBram Moolenaar call assert_equal(4, winline()) 10742093c0eSBram Moolenaar normal j 10842093c0eSBram Moolenaar call assert_equal(5, winline()) 10942093c0eSBram Moolenaar normal j 11042093c0eSBram Moolenaar call assert_equal(6, winline()) 11142093c0eSBram Moolenaar normal j 11242093c0eSBram Moolenaar call assert_equal(7, winline()) 11342093c0eSBram Moolenaar normal j 11442093c0eSBram Moolenaar call assert_equal(8, winline()) 11542093c0eSBram Moolenaar 11642093c0eSBram Moolenaar " Test diffoff 11742093c0eSBram Moolenaar diffoff! 11842093c0eSBram Moolenaar 1wincmd 2 11942093c0eSBram Moolenaar let &diff = 1 12042093c0eSBram Moolenaar let &fdm = diff_fdm 12142093c0eSBram Moolenaar let &fdc = diff_fdc 12242093c0eSBram Moolenaar 4wincmd w 12342093c0eSBram Moolenaar diffoff! 12442093c0eSBram Moolenaar 1wincmd w 12542093c0eSBram Moolenaar call assert_equal(0, &diff) 12642093c0eSBram Moolenaar call assert_equal('marker', &foldmethod) 12742093c0eSBram Moolenaar call assert_equal(4, &foldcolumn) 12842093c0eSBram Moolenaar call assert_equal(0, &scrollbind) 12942093c0eSBram Moolenaar call assert_equal(0, &cursorbind) 13042093c0eSBram Moolenaar call assert_equal(1, &wrap) 13142093c0eSBram Moolenaar 13242093c0eSBram Moolenaar wincmd w 13342093c0eSBram Moolenaar call assert_equal(0, &diff) 13442093c0eSBram Moolenaar call assert_equal('marker', &foldmethod) 13542093c0eSBram Moolenaar call assert_equal(4, &foldcolumn) 13642093c0eSBram Moolenaar call assert_equal(0, &scrollbind) 13742093c0eSBram Moolenaar call assert_equal(0, &cursorbind) 13842093c0eSBram Moolenaar call assert_equal(1, &wrap) 13942093c0eSBram Moolenaar 14042093c0eSBram Moolenaar wincmd w 14142093c0eSBram Moolenaar call assert_equal(0, &diff) 14242093c0eSBram Moolenaar call assert_equal('marker', &foldmethod) 14342093c0eSBram Moolenaar call assert_equal(4, &foldcolumn) 14442093c0eSBram Moolenaar call assert_equal(0, &scrollbind) 14542093c0eSBram Moolenaar call assert_equal(0, &cursorbind) 14642093c0eSBram Moolenaar call assert_equal(1, &wrap) 14742093c0eSBram Moolenaar 148623cf88fSBram Moolenaar call delete('Xtest') 149623cf88fSBram Moolenaar call delete('Xtest2') 15042093c0eSBram Moolenaar windo bw! 15142093c0eSBram Moolenaarendfunc 15242093c0eSBram Moolenaar 15342093c0eSBram Moolenaarfunc Test_filler_lines() 15442093c0eSBram Moolenaar " Test that diffing shows correct filler lines 15542093c0eSBram Moolenaar enew! 15642093c0eSBram Moolenaar put =range(4,10) 15742093c0eSBram Moolenaar 1d _ 15842093c0eSBram Moolenaar vnew 15942093c0eSBram Moolenaar put =range(1,10) 16042093c0eSBram Moolenaar 1d _ 16142093c0eSBram Moolenaar windo diffthis 16242093c0eSBram Moolenaar wincmd h 16342093c0eSBram Moolenaar call assert_equal(1, line('w0')) 16442093c0eSBram Moolenaar unlet! diff_fdm diff_fdc 16590d121faSBram Moolenaar windo diffoff 16690d121faSBram Moolenaar bwipe! 16790d121faSBram Moolenaar enew! 16890d121faSBram Moolenaarendfunc 16942093c0eSBram Moolenaar 17090d121faSBram Moolenaarfunc Test_diffget_diffput() 17190d121faSBram Moolenaar enew! 17290d121faSBram Moolenaar let l = range(50) 17390d121faSBram Moolenaar call setline(1, l) 17490d121faSBram Moolenaar call assert_fails('diffget', 'E99:') 17590d121faSBram Moolenaar diffthis 17690d121faSBram Moolenaar call assert_fails('diffget', 'E100:') 17790d121faSBram Moolenaar new 17890d121faSBram Moolenaar let l[10] = 'one' 17990d121faSBram Moolenaar let l[20] = 'two' 18090d121faSBram Moolenaar let l[30] = 'three' 18190d121faSBram Moolenaar let l[40] = 'four' 18290d121faSBram Moolenaar call setline(1, l) 18390d121faSBram Moolenaar diffthis 18490d121faSBram Moolenaar call assert_equal('one', getline(11)) 18590d121faSBram Moolenaar 11diffget 18690d121faSBram Moolenaar call assert_equal('10', getline(11)) 18790d121faSBram Moolenaar 21diffput 18890d121faSBram Moolenaar wincmd w 18990d121faSBram Moolenaar call assert_equal('two', getline(21)) 19090d121faSBram Moolenaar normal 31Gdo 19190d121faSBram Moolenaar call assert_equal('three', getline(31)) 19290d121faSBram Moolenaar call assert_equal('40', getline(41)) 19390d121faSBram Moolenaar normal 41Gdp 19490d121faSBram Moolenaar wincmd w 19590d121faSBram Moolenaar call assert_equal('40', getline(41)) 19690d121faSBram Moolenaar new 19790d121faSBram Moolenaar diffthis 19890d121faSBram Moolenaar call assert_fails('diffget', 'E101:') 19990d121faSBram Moolenaar 20090d121faSBram Moolenaar windo diffoff 20179a213d6SBram Moolenaar %bwipe! 20279a213d6SBram Moolenaarendfunc 20379a213d6SBram Moolenaar 20479a213d6SBram Moolenaarfunc Test_dp_do_buffer() 20579a213d6SBram Moolenaar e! one 20679a213d6SBram Moolenaar let bn1=bufnr('%') 20779a213d6SBram Moolenaar let l = range(60) 20879a213d6SBram Moolenaar call setline(1, l) 20979a213d6SBram Moolenaar diffthis 21079a213d6SBram Moolenaar 21179a213d6SBram Moolenaar new two 21279a213d6SBram Moolenaar let l[10] = 'one' 21379a213d6SBram Moolenaar let l[20] = 'two' 21479a213d6SBram Moolenaar let l[30] = 'three' 21579a213d6SBram Moolenaar let l[40] = 'four' 21679a213d6SBram Moolenaar let l[50] = 'five' 21779a213d6SBram Moolenaar call setline(1, l) 21879a213d6SBram Moolenaar diffthis 21979a213d6SBram Moolenaar 22079a213d6SBram Moolenaar " dp and do with invalid buffer number. 22179a213d6SBram Moolenaar 11 22279a213d6SBram Moolenaar call assert_fails('norm 99999dp', 'E102:') 22379a213d6SBram Moolenaar call assert_fails('norm 99999do', 'E102:') 22479a213d6SBram Moolenaar call assert_fails('diffput non_existing_buffer', 'E94:') 22579a213d6SBram Moolenaar call assert_fails('diffget non_existing_buffer', 'E94:') 22679a213d6SBram Moolenaar 22779a213d6SBram Moolenaar " dp and do with valid buffer number. 22879a213d6SBram Moolenaar call assert_equal('one', getline('.')) 22979a213d6SBram Moolenaar exe 'norm ' . bn1 . 'do' 23079a213d6SBram Moolenaar call assert_equal('10', getline('.')) 23179a213d6SBram Moolenaar 21 23279a213d6SBram Moolenaar call assert_equal('two', getline('.')) 23379a213d6SBram Moolenaar diffget one 23479a213d6SBram Moolenaar call assert_equal('20', getline('.')) 23579a213d6SBram Moolenaar 23679a213d6SBram Moolenaar 31 23779a213d6SBram Moolenaar exe 'norm ' . bn1 . 'dp' 23879a213d6SBram Moolenaar 41 23979a213d6SBram Moolenaar diffput one 24079a213d6SBram Moolenaar wincmd w 24179a213d6SBram Moolenaar 31 24279a213d6SBram Moolenaar call assert_equal('three', getline('.')) 24379a213d6SBram Moolenaar 41 24479a213d6SBram Moolenaar call assert_equal('four', getline('.')) 24579a213d6SBram Moolenaar 24679a213d6SBram Moolenaar " dp and do with buffer number which is not in diff mode. 24779a213d6SBram Moolenaar new not_in_diff_mode 24879a213d6SBram Moolenaar let bn3=bufnr('%') 24979a213d6SBram Moolenaar wincmd w 25079a213d6SBram Moolenaar 51 25179a213d6SBram Moolenaar call assert_fails('exe "norm" . bn3 . "dp"', 'E103:') 25279a213d6SBram Moolenaar call assert_fails('exe "norm" . bn3 . "do"', 'E103:') 25379a213d6SBram Moolenaar call assert_fails('diffput not_in_diff_mode', 'E94:') 25479a213d6SBram Moolenaar call assert_fails('diffget not_in_diff_mode', 'E94:') 25579a213d6SBram Moolenaar 25679a213d6SBram Moolenaar windo diffoff 25779a213d6SBram Moolenaar %bwipe! 25842093c0eSBram Moolenaarendfunc 259e67d546fSBram Moolenaar 260e67d546fSBram Moolenaarfunc Test_diffoff() 261e67d546fSBram Moolenaar enew! 262e67d546fSBram Moolenaar call setline(1, ['Two', 'Three']) 26379a213d6SBram Moolenaar redraw 264e67d546fSBram Moolenaar let normattr = screenattr(1, 1) 265e67d546fSBram Moolenaar diffthis 266e67d546fSBram Moolenaar botright vert new 267e67d546fSBram Moolenaar call setline(1, ['One', '', 'Two', 'Three']) 268e67d546fSBram Moolenaar diffthis 269e67d546fSBram Moolenaar redraw 27025ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 271e67d546fSBram Moolenaar diffoff! 272e67d546fSBram Moolenaar redraw 273e67d546fSBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 274e67d546fSBram Moolenaar bwipe! 275e67d546fSBram Moolenaar bwipe! 276e67d546fSBram Moolenaarendfunc 277025e3e0bSBram Moolenaar 27879a213d6SBram Moolenaarfunc Test_diffopt_icase() 27979a213d6SBram Moolenaar set diffopt=icase,foldcolumn:0 28079a213d6SBram Moolenaar 28179a213d6SBram Moolenaar e one 282da22b8ccSBram Moolenaar call setline(1, ['One', 'Two', 'Three', 'Four', 'Fi#ve']) 28379a213d6SBram Moolenaar redraw 28479a213d6SBram Moolenaar let normattr = screenattr(1, 1) 28579a213d6SBram Moolenaar diffthis 28679a213d6SBram Moolenaar 28779a213d6SBram Moolenaar botright vert new two 288da22b8ccSBram Moolenaar call setline(1, ['one', 'TWO', 'Three ', 'Four', 'fI=VE']) 28979a213d6SBram Moolenaar diffthis 29079a213d6SBram Moolenaar 29179a213d6SBram Moolenaar redraw 29279a213d6SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 29379a213d6SBram Moolenaar call assert_equal(normattr, screenattr(2, 1)) 29479a213d6SBram Moolenaar call assert_notequal(normattr, screenattr(3, 1)) 29579a213d6SBram Moolenaar call assert_equal(normattr, screenattr(4, 1)) 29679a213d6SBram Moolenaar 297da22b8ccSBram Moolenaar let dtextattr = screenattr(5, 3) 298da22b8ccSBram Moolenaar call assert_notequal(dtextattr, screenattr(5, 1)) 299da22b8ccSBram Moolenaar call assert_notequal(dtextattr, screenattr(5, 5)) 300da22b8ccSBram Moolenaar 30179a213d6SBram Moolenaar diffoff! 30279a213d6SBram Moolenaar %bwipe! 30379a213d6SBram Moolenaar set diffopt& 30479a213d6SBram Moolenaarendfunc 30579a213d6SBram Moolenaar 30679a213d6SBram Moolenaarfunc Test_diffopt_iwhite() 30779a213d6SBram Moolenaar set diffopt=iwhite,foldcolumn:0 30879a213d6SBram Moolenaar 30979a213d6SBram Moolenaar e one 31079a213d6SBram Moolenaar " Difference in trailing spaces should be ignored, 31179a213d6SBram Moolenaar " but not other space differences. 31279a213d6SBram Moolenaar call setline(1, ["One \t", 'Two', 'Three', 'Four']) 31379a213d6SBram Moolenaar redraw 31479a213d6SBram Moolenaar let normattr = screenattr(1, 1) 31579a213d6SBram Moolenaar diffthis 31679a213d6SBram Moolenaar 31779a213d6SBram Moolenaar botright vert new two 31879a213d6SBram Moolenaar call setline(1, ["One\t ", "Two\t ", 'Three', ' Four']) 31979a213d6SBram Moolenaar diffthis 32079a213d6SBram Moolenaar 32179a213d6SBram Moolenaar redraw 32279a213d6SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 32379a213d6SBram Moolenaar call assert_equal(normattr, screenattr(2, 1)) 32479a213d6SBram Moolenaar call assert_equal(normattr, screenattr(3, 1)) 32579a213d6SBram Moolenaar call assert_notequal(normattr, screenattr(4, 1)) 32679a213d6SBram Moolenaar 32779a213d6SBram Moolenaar diffoff! 32879a213d6SBram Moolenaar %bwipe! 32979a213d6SBram Moolenaar set diffopt& 33079a213d6SBram Moolenaarendfunc 33179a213d6SBram Moolenaar 33279a213d6SBram Moolenaarfunc Test_diffopt_context() 33379a213d6SBram Moolenaar enew! 33479a213d6SBram Moolenaar call setline(1, ['1', '2', '3', '4', '5', '6', '7']) 33579a213d6SBram Moolenaar diffthis 33679a213d6SBram Moolenaar new 33779a213d6SBram Moolenaar call setline(1, ['1', '2', '3', '4', '5x', '6', '7']) 33879a213d6SBram Moolenaar diffthis 33979a213d6SBram Moolenaar 34079a213d6SBram Moolenaar set diffopt=context:2 34179a213d6SBram Moolenaar call assert_equal('+-- 2 lines: 1', foldtextresult(1)) 34279a213d6SBram Moolenaar set diffopt=context:1 34379a213d6SBram Moolenaar call assert_equal('+-- 3 lines: 1', foldtextresult(1)) 34479a213d6SBram Moolenaar 34579a213d6SBram Moolenaar diffoff! 34679a213d6SBram Moolenaar %bwipe! 34779a213d6SBram Moolenaar set diffopt& 34879a213d6SBram Moolenaarendfunc 34979a213d6SBram Moolenaar 35079a213d6SBram Moolenaarfunc Test_diffopt_horizontal() 35179a213d6SBram Moolenaar set diffopt=horizontal 35279a213d6SBram Moolenaar diffsplit 35379a213d6SBram Moolenaar 35479a213d6SBram Moolenaar call assert_equal(&columns, winwidth(1)) 35579a213d6SBram Moolenaar call assert_equal(&columns, winwidth(2)) 35679a213d6SBram Moolenaar call assert_equal(&lines, winheight(1) + winheight(2) + 3) 35779a213d6SBram Moolenaar call assert_inrange(0, 1, winheight(1) - winheight(2)) 35879a213d6SBram Moolenaar 35979a213d6SBram Moolenaar set diffopt& 36079a213d6SBram Moolenaar diffoff! 36179a213d6SBram Moolenaar %bwipe 36279a213d6SBram Moolenaarendfunc 36379a213d6SBram Moolenaar 36479a213d6SBram Moolenaarfunc Test_diffopt_vertical() 36579a213d6SBram Moolenaar set diffopt=vertical 36679a213d6SBram Moolenaar diffsplit 36779a213d6SBram Moolenaar 36879a213d6SBram Moolenaar call assert_equal(&lines - 2, winheight(1)) 36979a213d6SBram Moolenaar call assert_equal(&lines - 2, winheight(2)) 37079a213d6SBram Moolenaar call assert_equal(&columns, winwidth(1) + winwidth(2) + 1) 37179a213d6SBram Moolenaar call assert_inrange(0, 1, winwidth(1) - winwidth(2)) 37279a213d6SBram Moolenaar 37379a213d6SBram Moolenaar set diffopt& 37479a213d6SBram Moolenaar diffoff! 37579a213d6SBram Moolenaar %bwipe 37679a213d6SBram Moolenaarendfunc 37779a213d6SBram Moolenaar 378*97ce4192SBram Moolenaarfunc Test_diffopt_hiddenoff() 379*97ce4192SBram Moolenaar set diffopt=filler,foldcolumn:0,hiddenoff 380*97ce4192SBram Moolenaar e! one 381*97ce4192SBram Moolenaar call setline(1, ['Two', 'Three']) 382*97ce4192SBram Moolenaar redraw 383*97ce4192SBram Moolenaar let normattr = screenattr(1, 1) 384*97ce4192SBram Moolenaar diffthis 385*97ce4192SBram Moolenaar botright vert new two 386*97ce4192SBram Moolenaar call setline(1, ['One', 'Four']) 387*97ce4192SBram Moolenaar diffthis 388*97ce4192SBram Moolenaar redraw 389*97ce4192SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 390*97ce4192SBram Moolenaar set hidden 391*97ce4192SBram Moolenaar close 392*97ce4192SBram Moolenaar redraw 393*97ce4192SBram Moolenaar " should not diffing with hidden buffer two while 'hiddenoff' is enabled 394*97ce4192SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 395*97ce4192SBram Moolenaar 396*97ce4192SBram Moolenaar bwipe! 397*97ce4192SBram Moolenaar bwipe! 398*97ce4192SBram Moolenaar set hidden& diffopt& 399*97ce4192SBram Moolenaarendfunc 400*97ce4192SBram Moolenaar 40125ea0544SBram Moolenaarfunc Test_diffoff_hidden() 40225ea0544SBram Moolenaar set diffopt=filler,foldcolumn:0 40325ea0544SBram Moolenaar e! one 40425ea0544SBram Moolenaar call setline(1, ['Two', 'Three']) 40579a213d6SBram Moolenaar redraw 40625ea0544SBram Moolenaar let normattr = screenattr(1, 1) 40725ea0544SBram Moolenaar diffthis 40825ea0544SBram Moolenaar botright vert new two 40925ea0544SBram Moolenaar call setline(1, ['One', 'Four']) 41025ea0544SBram Moolenaar diffthis 41125ea0544SBram Moolenaar redraw 41225ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 41325ea0544SBram Moolenaar set hidden 41425ea0544SBram Moolenaar close 41525ea0544SBram Moolenaar redraw 41625ea0544SBram Moolenaar " diffing with hidden buffer two 41725ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 41825ea0544SBram Moolenaar diffoff 41925ea0544SBram Moolenaar redraw 42025ea0544SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 42125ea0544SBram Moolenaar diffthis 42225ea0544SBram Moolenaar redraw 42325ea0544SBram Moolenaar " still diffing with hidden buffer two 42425ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 42525ea0544SBram Moolenaar diffoff! 42625ea0544SBram Moolenaar redraw 42725ea0544SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 42825ea0544SBram Moolenaar diffthis 42925ea0544SBram Moolenaar redraw 43025ea0544SBram Moolenaar " no longer diffing with hidden buffer two 43125ea0544SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 43225ea0544SBram Moolenaar 43325ea0544SBram Moolenaar bwipe! 43425ea0544SBram Moolenaar bwipe! 43525ea0544SBram Moolenaar set hidden& diffopt& 43625ea0544SBram Moolenaarendfunc 43725ea0544SBram Moolenaar 438025e3e0bSBram Moolenaarfunc Test_setting_cursor() 439025e3e0bSBram Moolenaar new Xtest1 440025e3e0bSBram Moolenaar put =range(1,90) 441025e3e0bSBram Moolenaar wq 442025e3e0bSBram Moolenaar new Xtest2 443025e3e0bSBram Moolenaar put =range(1,100) 444025e3e0bSBram Moolenaar wq 445025e3e0bSBram Moolenaar 446025e3e0bSBram Moolenaar tabe Xtest2 447025e3e0bSBram Moolenaar $ 448025e3e0bSBram Moolenaar diffsp Xtest1 449025e3e0bSBram Moolenaar tabclose 450025e3e0bSBram Moolenaar 451025e3e0bSBram Moolenaar call delete('Xtest1') 452025e3e0bSBram Moolenaar call delete('Xtest2') 453025e3e0bSBram Moolenaarendfunc 454aeb661e1SBram Moolenaar 455aeb661e1SBram Moolenaarfunc Test_diff_move_to() 456aeb661e1SBram Moolenaar new 457aeb661e1SBram Moolenaar call setline(1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 458aeb661e1SBram Moolenaar diffthis 459aeb661e1SBram Moolenaar vnew 460aeb661e1SBram Moolenaar call setline(1, [1, '2x', 3, 4, 4, 5, '6x', 7, '8x', 9, '10x']) 461aeb661e1SBram Moolenaar diffthis 462aeb661e1SBram Moolenaar norm ]c 463aeb661e1SBram Moolenaar call assert_equal(2, line('.')) 464aeb661e1SBram Moolenaar norm 3]c 465aeb661e1SBram Moolenaar call assert_equal(9, line('.')) 466aeb661e1SBram Moolenaar norm 10]c 467aeb661e1SBram Moolenaar call assert_equal(11, line('.')) 468aeb661e1SBram Moolenaar norm [c 469aeb661e1SBram Moolenaar call assert_equal(9, line('.')) 470aeb661e1SBram Moolenaar norm 2[c 471aeb661e1SBram Moolenaar call assert_equal(5, line('.')) 472aeb661e1SBram Moolenaar norm 10[c 473aeb661e1SBram Moolenaar call assert_equal(2, line('.')) 474aeb661e1SBram Moolenaar %bwipe! 475aeb661e1SBram Moolenaarendfunc 476aeb661e1SBram Moolenaar 47779a213d6SBram Moolenaarfunc Test_diffexpr() 47879a213d6SBram Moolenaar if !executable('diff') 47979a213d6SBram Moolenaar return 48079a213d6SBram Moolenaar endif 48179a213d6SBram Moolenaar 48279a213d6SBram Moolenaar func DiffExpr() 48379a213d6SBram Moolenaar silent exe '!diff ' . v:fname_in . ' ' . v:fname_new . '>' . v:fname_out 48479a213d6SBram Moolenaar endfunc 48579a213d6SBram Moolenaar set diffexpr=DiffExpr() 48679a213d6SBram Moolenaar set diffopt=foldcolumn:0 48779a213d6SBram Moolenaar 48879a213d6SBram Moolenaar enew! 48979a213d6SBram Moolenaar call setline(1, ['one', 'two', 'three']) 49079a213d6SBram Moolenaar redraw 49179a213d6SBram Moolenaar let normattr = screenattr(1, 1) 49279a213d6SBram Moolenaar diffthis 49379a213d6SBram Moolenaar 49479a213d6SBram Moolenaar botright vert new 49579a213d6SBram Moolenaar call setline(1, ['one', 'two', 'three.']) 49679a213d6SBram Moolenaar diffthis 49779a213d6SBram Moolenaar 49879a213d6SBram Moolenaar redraw 49979a213d6SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 50079a213d6SBram Moolenaar call assert_equal(normattr, screenattr(2, 1)) 50179a213d6SBram Moolenaar call assert_notequal(normattr, screenattr(3, 1)) 50279a213d6SBram Moolenaar 50379a213d6SBram Moolenaar diffoff! 50479a213d6SBram Moolenaar %bwipe! 50579a213d6SBram Moolenaar set diffexpr& diffopt& 50679a213d6SBram Moolenaarendfunc 50779a213d6SBram Moolenaar 508aeb661e1SBram Moolenaarfunc Test_diffpatch() 509aeb661e1SBram Moolenaar " The patch program on MS-Windows may fail or hang. 510aeb661e1SBram Moolenaar if !executable('patch') || !has('unix') 511aeb661e1SBram Moolenaar return 512aeb661e1SBram Moolenaar endif 513aeb661e1SBram Moolenaar new 514aeb661e1SBram Moolenaar insert 515aeb661e1SBram Moolenaar*************** 516aeb661e1SBram Moolenaar*** 1,3 **** 517aeb661e1SBram Moolenaar 1 518aeb661e1SBram Moolenaar! 2 519aeb661e1SBram Moolenaar 3 520aeb661e1SBram Moolenaar--- 1,4 ---- 521aeb661e1SBram Moolenaar 1 522aeb661e1SBram Moolenaar! 2x 523aeb661e1SBram Moolenaar 3 524aeb661e1SBram Moolenaar+ 4 525aeb661e1SBram Moolenaar. 52697fbc404SBram Moolenaar saveas! Xpatch 527aeb661e1SBram Moolenaar bwipe! 528aeb661e1SBram Moolenaar new 529aeb661e1SBram Moolenaar call assert_fails('diffpatch Xpatch', 'E816:') 5301ef73e33SBram Moolenaar 531a95ab321SBram Moolenaar for name in ['Xpatch', 'Xpatch$HOME', 'Xpa''tch'] 532aeb661e1SBram Moolenaar call setline(1, ['1', '2', '3']) 5331ef73e33SBram Moolenaar if name != 'Xpatch' 5341ef73e33SBram Moolenaar call rename('Xpatch', name) 5351ef73e33SBram Moolenaar endif 5361ef73e33SBram Moolenaar exe 'diffpatch ' . escape(name, '$') 537aeb661e1SBram Moolenaar call assert_equal(['1', '2x', '3', '4'], getline(1, '$')) 5381ef73e33SBram Moolenaar if name != 'Xpatch' 5391ef73e33SBram Moolenaar call rename(name, 'Xpatch') 5401ef73e33SBram Moolenaar endif 5411ef73e33SBram Moolenaar bwipe! 5421ef73e33SBram Moolenaar endfor 5431ef73e33SBram Moolenaar 544aeb661e1SBram Moolenaar call delete('Xpatch') 545aeb661e1SBram Moolenaar bwipe! 546aeb661e1SBram Moolenaarendfunc 547aeb661e1SBram Moolenaar 548aeb661e1SBram Moolenaarfunc Test_diff_too_many_buffers() 549aeb661e1SBram Moolenaar for i in range(1, 8) 550aeb661e1SBram Moolenaar exe "new Xtest" . i 551aeb661e1SBram Moolenaar diffthis 552aeb661e1SBram Moolenaar endfor 553aeb661e1SBram Moolenaar new Xtest9 554aeb661e1SBram Moolenaar call assert_fails('diffthis', 'E96:') 555aeb661e1SBram Moolenaar %bwipe! 556aeb661e1SBram Moolenaarendfunc 557aeb661e1SBram Moolenaar 558aeb661e1SBram Moolenaarfunc Test_diff_nomodifiable() 559aeb661e1SBram Moolenaar new 560aeb661e1SBram Moolenaar call setline(1, [1, 2, 3, 4]) 561aeb661e1SBram Moolenaar setl nomodifiable 562aeb661e1SBram Moolenaar diffthis 563aeb661e1SBram Moolenaar vnew 564aeb661e1SBram Moolenaar call setline(1, ['1x', 2, 3, 3, 4]) 565aeb661e1SBram Moolenaar diffthis 566aeb661e1SBram Moolenaar call assert_fails('norm dp', 'E793:') 567aeb661e1SBram Moolenaar setl nomodifiable 568aeb661e1SBram Moolenaar call assert_fails('norm do', 'E21:') 569aeb661e1SBram Moolenaar %bwipe! 570aeb661e1SBram Moolenaarendfunc 571f58a8475SBram Moolenaar 57297fbc404SBram Moolenaarfunc Test_diff_hlID() 57397fbc404SBram Moolenaar new 57497fbc404SBram Moolenaar call setline(1, [1, 2, 3]) 57597fbc404SBram Moolenaar diffthis 57697fbc404SBram Moolenaar vnew 57797fbc404SBram Moolenaar call setline(1, ['1x', 2, 'x', 3]) 57897fbc404SBram Moolenaar diffthis 57997fbc404SBram Moolenaar redraw 58097fbc404SBram Moolenaar 58197fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(-1, 1), "name"), "") 58297fbc404SBram Moolenaar 58397fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(1, 1), "name"), "DiffChange") 58497fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(1, 2), "name"), "DiffText") 58597fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(2, 1), "name"), "") 58697fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(3, 1), "name"), "DiffAdd") 58797fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(4, 1), "name"), "") 58897fbc404SBram Moolenaar 58997fbc404SBram Moolenaar wincmd w 59097fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(1, 1), "name"), "DiffChange") 59197fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(2, 1), "name"), "") 59297fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(3, 1), "name"), "") 59397fbc404SBram Moolenaar 59497fbc404SBram Moolenaar %bwipe! 59597fbc404SBram Moolenaarendfunc 59697fbc404SBram Moolenaar 59797fbc404SBram Moolenaarfunc Test_diff_filler() 59897fbc404SBram Moolenaar new 59997fbc404SBram Moolenaar call setline(1, [1, 2, 3, 'x', 4]) 60097fbc404SBram Moolenaar diffthis 60197fbc404SBram Moolenaar vnew 60297fbc404SBram Moolenaar call setline(1, [1, 2, 'y', 'y', 3, 4]) 60397fbc404SBram Moolenaar diffthis 60497fbc404SBram Moolenaar redraw 60597fbc404SBram Moolenaar 60697fbc404SBram Moolenaar call assert_equal([0, 0, 0, 0, 0, 0, 0, 1, 0], map(range(-1, 7), 'diff_filler(v:val)')) 60797fbc404SBram Moolenaar wincmd w 60897fbc404SBram Moolenaar call assert_equal([0, 0, 0, 0, 2, 0, 0, 0], map(range(-1, 6), 'diff_filler(v:val)')) 60997fbc404SBram Moolenaar 61097fbc404SBram Moolenaar %bwipe! 61197fbc404SBram Moolenaarendfunc 61297fbc404SBram Moolenaar 613f58a8475SBram Moolenaarfunc Test_diff_lastline() 614f58a8475SBram Moolenaar enew! 615f58a8475SBram Moolenaar only! 616f58a8475SBram Moolenaar call setline(1, ['This is a ', 'line with five ', 'rows']) 617f58a8475SBram Moolenaar diffthis 618f58a8475SBram Moolenaar botright vert new 619f58a8475SBram Moolenaar call setline(1, ['This is', 'a line with ', 'four rows']) 620f58a8475SBram Moolenaar diffthis 621f58a8475SBram Moolenaar 1 622f58a8475SBram Moolenaar call feedkeys("Je a\<CR>", 'tx') 623f58a8475SBram Moolenaar call feedkeys("Je a\<CR>", 'tx') 624f58a8475SBram Moolenaar let w1lines = winline() 625f58a8475SBram Moolenaar wincmd w 626f58a8475SBram Moolenaar $ 627f58a8475SBram Moolenaar let w2lines = winline() 628f58a8475SBram Moolenaar call assert_equal(w2lines, w1lines) 629f58a8475SBram Moolenaar bwipe! 630f58a8475SBram Moolenaar bwipe! 631f58a8475SBram Moolenaarendfunc 632