1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173 |
- local t = require('test.testutil')
- local n = require('test.functional.testnvim')()
- local Screen = require('test.functional.ui.screen')
- local feed = n.feed
- local clear = n.clear
- local command = n.command
- local insert = n.insert
- local write_file = t.write_file
- local dedent = t.dedent
- local exec = n.exec
- local eq = t.eq
- local api = n.api
- local function WriteDiffFiles(text1, text2)
- write_file('Xdifile1', text1)
- write_file('Xdifile2', text2)
- command('checktime')
- end
- local function WriteDiffFiles3(text1, text2, text3)
- write_file('Xdifile1', text1)
- write_file('Xdifile2', text2)
- write_file('Xdifile3', text3)
- command('checktime')
- end
- before_each(clear)
- describe('Diff mode screen', function()
- local fname = 'Xtest-functional-diff-screen-1'
- local fname_2 = fname .. '.2'
- local screen
- local reread = function()
- feed(':e<cr><c-w>w:e<cr><c-w>w')
- end
- setup(function()
- os.remove(fname)
- os.remove(fname_2)
- end)
- teardown(function()
- os.remove(fname)
- os.remove(fname_2)
- end)
- before_each(function()
- feed(':e ' .. fname_2 .. '<cr>')
- feed(':vnew ' .. fname .. '<cr>')
- feed(':diffthis<cr>')
- feed('<c-w>w:diffthis<cr><c-w>w')
- screen = Screen.new(40, 16)
- end)
- it('Add a line in beginning of file 2', function()
- write_file(fname, '1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n', false)
- write_file(fname_2, '0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n', false)
- reread()
- feed(':set diffopt=filler<cr>')
- screen:expect([[
- {7: }{23:------------------}│{7: }{22:0 }|
- {7: }^1 │{7: }1 |
- {7: }2 │{7: }2 |
- {7: }3 │{7: }3 |
- {7: }4 │{7: }4 |
- {7: }5 │{7: }5 |
- {7: }6 │{7: }6 |
- {7:+ }{13:+-- 4 lines: 7···}│{7:+ }{13:+-- 4 lines: 7··}|
- {1:~ }│{1:~ }|*6
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=filler |
- ]])
- feed(':set diffopt+=internal<cr>')
- screen:expect([[
- {7: }{23:------------------}│{7: }{22:0 }|
- {7: }^1 │{7: }1 |
- {7: }2 │{7: }2 |
- {7: }3 │{7: }3 |
- {7: }4 │{7: }4 |
- {7: }5 │{7: }5 |
- {7: }6 │{7: }6 |
- {7:+ }{13:+-- 4 lines: 7···}│{7:+ }{13:+-- 4 lines: 7··}|
- {1:~ }│{1:~ }|*6
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt+=internal |
- ]])
- end)
- it('Add a line in beginning of file 1', function()
- write_file(fname, '0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n', false)
- write_file(fname_2, '1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n', false)
- reread()
- feed(':set diffopt=filler<cr>')
- screen:expect([[
- {7: }{22:^0 }│{7: }{23:-----------------}|
- {7: }1 │{7: }1 |
- {7: }2 │{7: }2 |
- {7: }3 │{7: }3 |
- {7: }4 │{7: }4 |
- {7: }5 │{7: }5 |
- {7: }6 │{7: }6 |
- {7:+ }{13:+-- 4 lines: 7···}│{7:+ }{13:+-- 4 lines: 7··}|
- {1:~ }│{1:~ }|*6
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=filler |
- ]])
- feed(':set diffopt+=internal<cr>')
- screen:expect([[
- {7: }{22:^0 }│{7: }{23:-----------------}|
- {7: }1 │{7: }1 |
- {7: }2 │{7: }2 |
- {7: }3 │{7: }3 |
- {7: }4 │{7: }4 |
- {7: }5 │{7: }5 |
- {7: }6 │{7: }6 |
- {7:+ }{13:+-- 4 lines: 7···}│{7:+ }{13:+-- 4 lines: 7··}|
- {1:~ }│{1:~ }|*6
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt+=internal |
- ]])
- end)
- it('Add a line at the end of file 2', function()
- write_file(fname, '1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n', false)
- write_file(fname_2, '1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n', false)
- reread()
- feed(':set diffopt=filler<cr>')
- screen:expect([[
- {7:+ }{13:^+-- 4 lines: 1···}│{7:+ }{13:+-- 4 lines: 1··}|
- {7: }5 │{7: }5 |
- {7: }6 │{7: }6 |
- {7: }7 │{7: }7 |
- {7: }8 │{7: }8 |
- {7: }9 │{7: }9 |
- {7: }10 │{7: }10 |
- {7: }{23:------------------}│{7: }{22:11 }|
- {1:~ }│{1:~ }|*6
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=filler |
- ]])
- feed(':set diffopt+=internal<cr>')
- screen:expect([[
- {7:+ }{13:^+-- 4 lines: 1···}│{7:+ }{13:+-- 4 lines: 1··}|
- {7: }5 │{7: }5 |
- {7: }6 │{7: }6 |
- {7: }7 │{7: }7 |
- {7: }8 │{7: }8 |
- {7: }9 │{7: }9 |
- {7: }10 │{7: }10 |
- {7: }{23:------------------}│{7: }{22:11 }|
- {1:~ }│{1:~ }|*6
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt+=internal |
- ]])
- screen:try_resize(40, 9)
- screen:expect([[
- {7:+ }{13:^+-- 4 lines: 1···}│{7:+ }{13:+-- 4 lines: 1··}|
- {7: }5 │{7: }5 |
- {7: }6 │{7: }6 |
- {7: }7 │{7: }7 |
- {7: }8 │{7: }8 |
- {7: }9 │{7: }9 |
- {7: }10 │{7: }10 |
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- |
- ]])
- end)
- it('Add a line at the end of file 1', function()
- write_file(fname, '1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n', false)
- write_file(fname_2, '1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n', false)
- reread()
- feed(':set diffopt=filler<cr>')
- screen:expect([[
- {7:+ }{13:^+-- 4 lines: 1···}│{7:+ }{13:+-- 4 lines: 1··}|
- {7: }5 │{7: }5 |
- {7: }6 │{7: }6 |
- {7: }7 │{7: }7 |
- {7: }8 │{7: }8 |
- {7: }9 │{7: }9 |
- {7: }10 │{7: }10 |
- {7: }{22:11 }│{7: }{23:-----------------}|
- {1:~ }│{1:~ }|*6
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=filler |
- ]])
- feed(':set diffopt+=internal<cr>')
- screen:expect([[
- {7:+ }{13:^+-- 4 lines: 1···}│{7:+ }{13:+-- 4 lines: 1··}|
- {7: }5 │{7: }5 |
- {7: }6 │{7: }6 |
- {7: }7 │{7: }7 |
- {7: }8 │{7: }8 |
- {7: }9 │{7: }9 |
- {7: }10 │{7: }10 |
- {7: }{22:11 }│{7: }{23:-----------------}|
- {1:~ }│{1:~ }|*6
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt+=internal |
- ]])
- screen:try_resize(40, 9)
- screen:expect([[
- {7:+ }{13:^+-- 4 lines: 1···}│{7:+ }{13:+-- 4 lines: 1··}|
- {7: }5 │{7: }5 |
- {7: }6 │{7: }6 |
- {7: }7 │{7: }7 |
- {7: }8 │{7: }8 |
- {7: }9 │{7: }9 |
- {7: }10 │{7: }10 |
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- |
- ]])
- end)
- it('Add a line in the middle of file 2, remove on at the end of file 1', function()
- write_file(fname, '1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n', false)
- write_file(fname_2, '1\n2\n3\n4\n4\n5\n6\n7\n8\n9\n10\n', false)
- reread()
- feed(':set diffopt=filler<cr>')
- screen:expect([[
- {7: }^1 │{7: }1 |
- {7: }2 │{7: }2 |
- {7: }3 │{7: }3 |
- {7: }4 │{7: }4 |
- {7: }{23:------------------}│{7: }{22:4 }|
- {7: }5 │{7: }5 |
- {7: }6 │{7: }6 |
- {7: }7 │{7: }7 |
- {7: }8 │{7: }8 |
- {7: }9 │{7: }9 |
- {7: }10 │{7: }10 |
- {7: }{22:11 }│{7: }{23:-----------------}|
- {1:~ }│{1:~ }|*2
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=filler |
- ]])
- feed(':set diffopt+=internal<cr>')
- screen:expect([[
- {7: }^1 │{7: }1 |
- {7: }2 │{7: }2 |
- {7: }3 │{7: }3 |
- {7: }4 │{7: }4 |
- {7: }{23:------------------}│{7: }{22:4 }|
- {7: }5 │{7: }5 |
- {7: }6 │{7: }6 |
- {7: }7 │{7: }7 |
- {7: }8 │{7: }8 |
- {7: }9 │{7: }9 |
- {7: }10 │{7: }10 |
- {7: }{22:11 }│{7: }{23:-----------------}|
- {1:~ }│{1:~ }|*2
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt+=internal |
- ]])
- end)
- it('Add a line in the middle of file 1, remove on at the end of file 2', function()
- write_file(fname, '1\n2\n3\n4\n4\n5\n6\n7\n8\n9\n10\n', false)
- write_file(fname_2, '1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n', false)
- reread()
- feed(':set diffopt=filler<cr>')
- screen:expect([[
- {7: }^1 │{7: }1 |
- {7: }2 │{7: }2 |
- {7: }3 │{7: }3 |
- {7: }4 │{7: }4 |
- {7: }{22:4 }│{7: }{23:-----------------}|
- {7: }5 │{7: }5 |
- {7: }6 │{7: }6 |
- {7: }7 │{7: }7 |
- {7: }8 │{7: }8 |
- {7: }9 │{7: }9 |
- {7: }10 │{7: }10 |
- {7: }{23:------------------}│{7: }{22:11 }|
- {1:~ }│{1:~ }|*2
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=filler |
- ]])
- feed(':set diffopt+=internal<cr>')
- screen:expect([[
- {7: }^1 │{7: }1 |
- {7: }2 │{7: }2 |
- {7: }3 │{7: }3 |
- {7: }4 │{7: }4 |
- {7: }{22:4 }│{7: }{23:-----------------}|
- {7: }5 │{7: }5 |
- {7: }6 │{7: }6 |
- {7: }7 │{7: }7 |
- {7: }8 │{7: }8 |
- {7: }9 │{7: }9 |
- {7: }10 │{7: }10 |
- {7: }{23:------------------}│{7: }{22:11 }|
- {1:~ }│{1:~ }|*2
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt+=internal |
- ]])
- end)
- describe('normal/patience/histogram diff algorithm', function()
- setup(function()
- local f1 = [[#include <stdio.h>
- // Frobs foo heartily
- int frobnitz(int foo)
- {
- int i;
- for(i = 0; i < 10; i++)
- {
- printf("Your answer is: ");
- printf("%d\n", foo);
- }
- }
- int fact(int n)
- {
- if(n > 1)
- {
- return fact(n-1) * n;
- }
- return 1;
- }
- int main(int argc, char **argv)
- {
- frobnitz(fact(10));
- }]]
- write_file(fname, f1, false)
- local f2 = [[#include <stdio.h>
- int fib(int n)
- {
- if(n > 2)
- {
- return fib(n-1) + fib(n-2);
- }
- return 1;
- }
- // Frobs foo heartily
- int frobnitz(int foo)
- {
- int i;
- for(i = 0; i < 10; i++)
- {
- printf("%d\n", foo);
- }
- }
- int main(int argc, char **argv)
- {
- frobnitz(fib(10));
- }]]
- write_file(fname_2, f2, false)
- end)
- it('diffopt=+algorithm:myers', function()
- reread()
- feed(':set diffopt=internal,filler<cr>')
- screen:expect([[
- {7: }^#include <stdio.h>│{7: }#include <stdio.h|
- {7: } │{7: } |
- {7: }{27:// Frobs foo heart}│{7: }{27:int fib(int n)}{4: }|
- {7: }{22:int frobnitz(int f}│{7: }{23:-----------------}|
- {7: }{ │{7: }{ |
- {7: }{4: i}{27:nt i;}{4: }│{7: }{4: i}{27:f(n > 2)}{4: }|
- {7: }{22: for(i = 0; i <}│{7: }{23:-----------------}|
- {7: } { │{7: } { |
- {7: }{4: }{27:printf("Yo}│{7: }{4: }{27:return fi}|
- {7: }{22: printf("%d}│{7: }{23:-----------------}|
- {7: } } │{7: } } |
- {7: }{23:------------------}│{7: }{22: return 1; }|
- {7: }} │{7: }} |
- {7: } │{7: } |
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=internal,filler |
- ]])
- feed('G')
- screen:expect([[
- {7: }{23:------------------}│{7: }{22:int frobnitz(int }|
- {7: }{ │{7: }{ |
- {7: }{4: i}{27:f(n > 1)}{4: }│{7: }{4: i}{27:nt i;}{4: }|
- {7: }{23:------------------}│{7: }{22: for(i = 0; i }|
- {7: } { │{7: } { |
- {7: }{4: }{27:return fac}│{7: }{4: }{27:printf("%}|
- {7: } } │{7: } } |
- {7: }{22: return 1; }│{7: }{23:-----------------}|
- {7: }} │{7: }} |
- {7: } │{7: } |
- {7: }int main(int argc,│{7: }int main(int argc|
- {7: }{ │{7: }{ |
- {7: }{4: frobnitz(f}{27:act}{4:(}│{7: }{4: frobnitz(f}{27:ib}{4:(}|
- {7: }^} │{7: }} |
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=internal,filler |
- ]])
- end)
- it('diffopt+=algorithm:patience', function()
- reread()
- feed(':set diffopt=internal,filler,algorithm:patience<cr>')
- screen:expect([[
- {7: }^#include <stdio.h>│{7: }#include <stdio.h|
- {7: } │{7: } |
- {7: }{23:------------------}│{7: }{22:int fib(int n) }|
- {7: }{23:------------------}│{7: }{22:{ }|
- {7: }{23:------------------}│{7: }{22: if(n > 2) }|
- {7: }{23:------------------}│{7: }{22: { }|
- {7: }{23:------------------}│{7: }{22: return fi}|
- {7: }{23:------------------}│{7: }{22: } }|
- {7: }{23:------------------}│{7: }{22: return 1; }|
- {7: }{23:------------------}│{7: }{22:} }|
- {7: }{23:------------------}│{7: }{22: }|
- {7: }// Frobs foo heart│{7: }// Frobs foo hear|
- {7: }int frobnitz(int f│{7: }int frobnitz(int |
- {7: }{ │{7: }{ |
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- |
- ]])
- feed('G')
- screen:expect([[
- {7: } │{7: } |
- {7: }{22:int fact(int n) }│{7: }{23:-----------------}|
- {7: }{22:{ }│{7: }{23:-----------------}|
- {7: }{22: if(n > 1) }│{7: }{23:-----------------}|
- {7: }{22: { }│{7: }{23:-----------------}|
- {7: }{22: return fac}│{7: }{23:-----------------}|
- {7: }{22: } }│{7: }{23:-----------------}|
- {7: }{22: return 1; }│{7: }{23:-----------------}|
- {7: }{22:} }│{7: }{23:-----------------}|
- {7: }{22: }│{7: }{23:-----------------}|
- {7: }int main(int argc,│{7: }int main(int argc|
- {7: }{ │{7: }{ |
- {7: }{4: frobnitz(f}{27:act}{4:(}│{7: }{4: frobnitz(f}{27:ib}{4:(}|
- {7: }^} │{7: }} |
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- |
- ]])
- end)
- it('diffopt+=algorithm:histogram', function()
- reread()
- feed(':set diffopt=internal,filler,algorithm:histogram<cr>')
- screen:expect([[
- {7: }^#include <stdio.h>│{7: }#include <stdio.h|
- {7: } │{7: } |
- {7: }{23:------------------}│{7: }{22:int fib(int n) }|
- {7: }{23:------------------}│{7: }{22:{ }|
- {7: }{23:------------------}│{7: }{22: if(n > 2) }|
- {7: }{23:------------------}│{7: }{22: { }|
- {7: }{23:------------------}│{7: }{22: return fi}|
- {7: }{23:------------------}│{7: }{22: } }|
- {7: }{23:------------------}│{7: }{22: return 1; }|
- {7: }{23:------------------}│{7: }{22:} }|
- {7: }{23:------------------}│{7: }{22: }|
- {7: }// Frobs foo heart│{7: }// Frobs foo hear|
- {7: }int frobnitz(int f│{7: }int frobnitz(int |
- {7: }{ │{7: }{ |
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- |
- ]])
- feed('G')
- screen:expect([[
- {7: } │{7: } |
- {7: }{22:int fact(int n) }│{7: }{23:-----------------}|
- {7: }{22:{ }│{7: }{23:-----------------}|
- {7: }{22: if(n > 1) }│{7: }{23:-----------------}|
- {7: }{22: { }│{7: }{23:-----------------}|
- {7: }{22: return fac}│{7: }{23:-----------------}|
- {7: }{22: } }│{7: }{23:-----------------}|
- {7: }{22: return 1; }│{7: }{23:-----------------}|
- {7: }{22:} }│{7: }{23:-----------------}|
- {7: }{22: }│{7: }{23:-----------------}|
- {7: }int main(int argc,│{7: }int main(int argc|
- {7: }{ │{7: }{ |
- {7: }{4: frobnitz(f}{27:act}{4:(}│{7: }{4: frobnitz(f}{27:ib}{4:(}|
- {7: }^} │{7: }} |
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- |
- ]])
- end)
- end)
- describe('diffopt+=indent-heuristic', function()
- setup(function()
- local f1 = [[
- def finalize(values)
- values.each do |v|
- v.finalize
- end]]
- write_file(fname, f1, false)
- local f2 = [[
- def finalize(values)
- values.each do |v|
- v.prepare
- end
- values.each do |v|
- v.finalize
- end]]
- write_file(fname_2, f2, false)
- feed(':diffupdate!<cr>')
- end)
- it('internal', function()
- reread()
- feed(':set diffopt=internal,filler<cr>')
- screen:expect([[
- {7: }^def finalize(value│{7: }def finalize(valu|
- {7: } │{7: } |
- {7: } values.each do |│{7: } values.each do |
- {7: }{23:------------------}│{7: }{22: v.prepare }|
- {7: }{23:------------------}│{7: }{22: end }|
- {7: }{23:------------------}│{7: }{22: }|
- {7: }{23:------------------}│{7: }{22: values.each do }|
- {7: } v.finalize │{7: } v.finalize |
- {7: } end │{7: } end |
- {1:~ }│{1:~ }|*5
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=internal,filler |
- ]])
- end)
- it('indent-heuristic', function()
- reread()
- feed(':set diffopt=internal,filler,indent-heuristic<cr>')
- screen:expect([[
- {7: }^def finalize(value│{7: }def finalize(valu|
- {7: } │{7: } |
- {7: }{23:------------------}│{7: }{22: values.each do }|
- {7: }{23:------------------}│{7: }{22: v.prepare }|
- {7: }{23:------------------}│{7: }{22: end }|
- {7: }{23:------------------}│{7: }{22: }|
- {7: } values.each do |│{7: } values.each do |
- {7: } v.finalize │{7: } v.finalize |
- {7: } end │{7: } end |
- {1:~ }│{1:~ }|*5
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- |
- ]])
- end)
- it('indent-heuristic random order', function()
- reread()
- feed(':set diffopt=internal,filler,indent-heuristic,algorithm:patience<cr>')
- feed(':<cr>')
- screen:expect([[
- {7: }^def finalize(value│{7: }def finalize(valu|
- {7: } │{7: } |
- {7: }{23:------------------}│{7: }{22: values.each do }|
- {7: }{23:------------------}│{7: }{22: v.prepare }|
- {7: }{23:------------------}│{7: }{22: end }|
- {7: }{23:------------------}│{7: }{22: }|
- {7: } values.each do |│{7: } values.each do |
- {7: } v.finalize │{7: } v.finalize |
- {7: } end │{7: } end |
- {1:~ }│{1:~ }|*5
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- : |
- ]])
- end)
- end)
- it('Diff the same file', function()
- write_file(fname, '1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n', false)
- write_file(fname_2, '1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n', false)
- reread()
- feed(':set diffopt=filler<cr>')
- screen:expect([[
- {7:+ }{13:^+-- 10 lines: 1···}│{7:+ }{13:+-- 10 lines: 1··}|
- {1:~ }│{1:~ }|*13
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=filler |
- ]])
- feed(':set diffopt+=internal<cr>')
- screen:expect([[
- {7:+ }{13:^+-- 10 lines: 1···}│{7:+ }{13:+-- 10 lines: 1··}|
- {1:~ }│{1:~ }|*13
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt+=internal |
- ]])
- end)
- it('Diff an empty file', function()
- write_file(fname, '', false)
- write_file(fname_2, '', false)
- reread()
- feed(':set diffopt=filler<cr>')
- screen:expect([[
- {7:- }^ │{7:- } |
- {1:~ }│{1:~ }|*13
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=filler |
- ]])
- feed(':set diffopt+=internal<cr>')
- screen:expect([[
- {7:- }^ │{7:- } |
- {1:~ }│{1:~ }|*13
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt+=internal |
- ]])
- end)
- it('Diff empty and non-empty file', function()
- write_file(fname, '', false)
- write_file(fname_2, 'foo\nbar\nbaz', false)
- reread()
- feed(':set diffopt=filler<cr>')
- screen:expect([[
- {7: }{23:------------------}│{7: }{22:foo }|
- {7: }{23:------------------}│{7: }{22:bar }|
- {7: }{23:------------------}│{7: }{22:baz }|
- {7: }^ │{1:~ }|
- {1:~ }│{1:~ }|*10
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=filler |
- ]])
- feed(':set diffopt+=internal<cr>')
- screen:expect([[
- {7: }{23:------------------}│{7: }{22:foo }|
- {7: }{23:------------------}│{7: }{22:bar }|
- {7: }{23:------------------}│{7: }{22:baz }|
- {7: }^ │{1:~ }|
- {1:~ }│{1:~ }|*10
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt+=internal |
- ]])
- end)
- it('diffopt+=icase', function()
- write_file(fname, 'a\nb\ncd\n', false)
- write_file(fname_2, 'A\nb\ncDe\n', false)
- reread()
- feed(':set diffopt=filler,icase<cr>')
- screen:expect([[
- {7: }^a │{7: }A |
- {7: }b │{7: }b |
- {7: }{4:cd }│{7: }{4:cD}{27:e}{4: }|
- {1:~ }│{1:~ }|*11
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=filler,icase |
- ]])
- feed(':set diffopt+=internal<cr>')
- screen:expect([[
- {7: }^a │{7: }A |
- {7: }b │{7: }b |
- {7: }{4:cd }│{7: }{4:cD}{27:e}{4: }|
- {1:~ }│{1:~ }|*11
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt+=internal |
- ]])
- end)
- describe('diffopt+=iwhite', function()
- setup(function()
- local f1 = 'int main()\n{\n printf("Hello, World!");\n return 0;\n}\n'
- write_file(fname, f1, false)
- local f2 =
- 'int main()\n{\n if (0)\n {\n printf("Hello, World!");\n return 0;\n }\n}\n'
- write_file(fname_2, f2, false)
- feed(':diffupdate!<cr>')
- end)
- it('external', function()
- reread()
- feed(':set diffopt=filler,iwhite<cr>')
- screen:expect([[
- {7: }^int main() │{7: }int main() |
- {7: }{ │{7: }{ |
- {7: }{23:------------------}│{7: }{22: if (0) }|
- {7: }{23:------------------}│{7: }{22: { }|
- {7: } printf("Hello, │{7: } printf("Hel|
- {7: } return 0; │{7: } return 0; |
- {7: }{23:------------------}│{7: }{22: } }|
- {7: }} │{7: }} |
- {1:~ }│{1:~ }|*6
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=filler,iwhite |
- ]])
- end)
- it('internal', function()
- reread()
- feed(':set diffopt=filler,iwhite,internal<cr>')
- screen:expect([[
- {7: }^int main() │{7: }int main() |
- {7: }{ │{7: }{ |
- {7: }{23:------------------}│{7: }{22: if (0) }|
- {7: }{23:------------------}│{7: }{22: { }|
- {7: } printf("Hello, │{7: } printf("Hel|
- {7: } return 0; │{7: } return 0; |
- {7: }{23:------------------}│{7: }{22: } }|
- {7: }} │{7: }} |
- {1:~ }│{1:~ }|*6
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=filler,iwhite,internal |
- ]])
- end)
- end)
- describe('diffopt+=iblank', function()
- setup(function()
- write_file(fname, 'a\n\n \ncd\nef\nxxx\n', false)
- write_file(fname_2, 'a\ncd\n\nef\nyyy\n', false)
- feed(':diffupdate!<cr>')
- end)
- it('generic', function()
- reread()
- feed(':set diffopt=internal,filler,iblank<cr>')
- screen:expect([[
- {7: }^a │{7: }a |
- {7: }{22: }│{7: }{23:-----------------}|*2
- {7: }cd │{7: }cd |
- {7: }ef │{7: } |
- {7: }{27:xxx}{4: }│{7: }ef |
- {1:~ }│{7: }{27:yyy}{4: }|
- {1:~ }│{1:~ }|*7
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=internal,filler,iblank |
- ]])
- end)
- it('diffopt+=iwhite', function()
- reread()
- feed(':set diffopt=internal,filler,iblank,iwhite<cr>')
- feed(':<cr>')
- screen:expect([[
- {7: }^a │{7: }a |
- {7: } │{7: }cd |
- {7: } │{7: } |
- {7: }cd │{7: }ef |
- {7: }ef │{7: }{27:yyy}{4: }|
- {7: }{27:xxx}{4: }│{1:~ }|
- {1:~ }│{1:~ }|*8
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- : |
- ]])
- end)
- it('diffopt+=iwhiteall', function()
- reread()
- feed(':set diffopt=internal,filler,iblank,iwhiteall<cr>')
- feed(':<cr>')
- screen:expect([[
- {7: }^a │{7: }a |
- {7: } │{7: }cd |
- {7: } │{7: } |
- {7: }cd │{7: }ef |
- {7: }ef │{7: }{27:yyy}{4: }|
- {7: }{27:xxx}{4: }│{1:~ }|
- {1:~ }│{1:~ }|*8
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- : |
- ]])
- end)
- it('diffopt+=iwhiteeol', function()
- reread()
- feed(':set diffopt=internal,filler,iblank,iwhiteeol<cr>')
- feed(':<cr>')
- screen:expect([[
- {7: }^a │{7: }a |
- {7: } │{7: }cd |
- {7: } │{7: } |
- {7: }cd │{7: }ef |
- {7: }ef │{7: }{27:yyy}{4: }|
- {7: }{27:xxx}{4: }│{1:~ }|
- {1:~ }│{1:~ }|*8
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- : |
- ]])
- end)
- end)
- describe('diffopt+=iwhite{eol,all}', function()
- setup(function()
- write_file(fname, 'a \nx\ncd\nef\nxx xx\nfoo\nbar\n', false)
- write_file(fname_2, 'a\nx\nc d\n ef\nxx xx\nfoo\n\nbar\n', false)
- feed(':diffupdate!<cr>')
- end)
- it('diffopt+=iwhiteeol', function()
- reread()
- feed(':set diffopt=internal,filler,iwhiteeol<cr>')
- feed(':<cr>')
- screen:expect([[
- {7: }^a │{7: }a |
- {7: }x │{7: }x |
- {7: }{4:cd }│{7: }{4:c}{27: }{4:d }|
- {7: }{4:ef }│{7: }{27: }{4:ef }|
- {7: }{4:xx }{27: }{4:xx }│{7: }{4:xx xx }|
- {7: }foo │{7: }foo |
- {7: }{23:------------------}│{7: }{22: }|
- {7: }bar │{7: }bar |
- {1:~ }│{1:~ }|*6
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- : |
- ]])
- end)
- it('diffopt+=iwhiteall', function()
- reread()
- feed(':set diffopt=internal,filler,iwhiteall<cr>')
- feed(':<cr>')
- screen:expect([[
- {7: }^a │{7: }a |
- {7: }x │{7: }x |
- {7: }cd │{7: }c d |
- {7: }ef │{7: } ef |
- {7: }xx xx │{7: }xx xx |
- {7: }foo │{7: }foo |
- {7: }{23:------------------}│{7: }{22: }|
- {7: }bar │{7: }bar |
- {1:~ }│{1:~ }|*6
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- : |
- ]])
- end)
- end)
- -- oldtest: Test_diff_scroll()
- -- This was scrolling for 'cursorbind' but 'scrollbind' is more important
- it('scrolling works correctly vim-patch:8.2.5155', function()
- screen:try_resize(40, 12)
- write_file(
- fname,
- dedent([[
- line 1
- line 2
- line 3
- line 4
- // Common block
- // one
- // containing
- // four lines
- // Common block
- // two
- // containing
- // four lines]]),
- false
- )
- write_file(
- fname_2,
- dedent([[
- line 1
- line 2
- line 3
- line 4
- Lorem
- ipsum
- dolor
- sit
- amet,
- consectetur
- adipiscing
- elit.
- Etiam
- luctus
- lectus
- sodales,
- dictum
- // Common block
- // one
- // containing
- // four lines
- Vestibulum
- tincidunt
- aliquet
- nulla.
- // Common block
- // two
- // containing
- // four lines]]),
- false
- )
- reread()
- feed('<C-W><C-W>jjjj')
- screen:expect([[
- {7: }line 1 │{7: }line 1 |
- {7: }line 2 │{7: }line 2 |
- {7: }line 3 │{7: }line 3 |
- {7: }line 4 │{7: }line 4 |
- {7: } │{7: }^ |
- {7: }{23:-----------------}│{7: }{22:Lorem }|
- {7: }{23:-----------------}│{7: }{22:ipsum }|
- {7: }{23:-----------------}│{7: }{22:dolor }|
- {7: }{23:-----------------}│{7: }{22:sit }|
- {7: }{23:-----------------}│{7: }{22:amet, }|
- {2:<nal-diff-screen-1 }{3:<al-diff-screen-1.2 }|
- :e |
- ]])
- feed('j')
- screen:expect([[
- {7: }line 1 │{7: }line 1 |
- {7: }line 2 │{7: }line 2 |
- {7: }line 3 │{7: }line 3 |
- {7: }line 4 │{7: }line 4 |
- {7: } │{7: } |
- {7: }{23:-----------------}│{7: }{22:^Lorem }|
- {7: }{23:-----------------}│{7: }{22:ipsum }|
- {7: }{23:-----------------}│{7: }{22:dolor }|
- {7: }{23:-----------------}│{7: }{22:sit }|
- {7: }{23:-----------------}│{7: }{22:amet, }|
- {2:<nal-diff-screen-1 }{3:<al-diff-screen-1.2 }|
- :e |
- ]])
- end)
- describe('line matching diff algorithm', function()
- setup(function()
- local f1 = [[if __name__ == "__main__":
- import sys
- app = QWidgets.QApplication(sys.args)
- MainWindow = QtWidgets.QMainWindow()
- ui = UI_MainWindow()
- ui.setupUI(MainWindow)
- MainWindow.show()
- sys.exit(app.exec_())]]
- write_file(fname, f1, false)
- local f2 = [[if __name__ == "__main__":
- import sys
- comment these things
- #app = QWidgets.QApplication(sys.args)
- #MainWindow = QtWidgets.QMainWindow()
- add a completely different line here
- #ui = UI_MainWindow()
- add another new line
- ui.setupUI(MainWindow)
- MainWindow.show()
- sys.exit(app.exec_())]]
- write_file(fname_2, f2, false)
- end)
- it('diffopt+=linematch:20', function()
- reread()
- feed(':set diffopt=internal,filler<cr>')
- screen:expect([[
- {7: }^if __name__ == "__│{7: }if __name__ == "_|
- {7: } import sys │{7: } import sys |
- {7: }{4: }{27:app = QWidgets}│{7: }{4: }{27:comment these}|
- {7: }{4: }{27:MainWindow = Q}│{7: }{4: }{27:#app = QWidge}|
- {7: }{4: }{27:ui = UI_}{4:MainWi}│{7: }{4: }{27:#MainWindow =}|
- {7: }{23:------------------}│{7: }{22: add a complet}|
- {7: }{23:------------------}│{7: }{22: #ui = UI_Main}|
- {7: }{23:------------------}│{7: }{22: add another n}|
- {7: } ui.setupUI(Mai│{7: } ui.setupUI(Ma|
- {7: } MainWindow.sho│{7: } MainWindow.sh|
- {7: } sys.exit(app.e│{7: } sys.exit(app.|
- {1:~ }│{1:~ }|*3
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt=internal,filler |
- ]])
- feed('G')
- feed(':set diffopt+=linematch:20<cr>')
- screen:expect([[
- {7: }if __name__ == "__│{7: }if __name__ == "_|
- {7: } import sys │{7: } import sys |
- {7: }{23:------------------}│{7: }{22: comment these}|
- {7: }{4: app = QWidgets}│{7: }{4: }{27:#}{4:app = QWidge}|
- {7: }{4: MainWindow = Q}│{7: }{4: }{27:#}{4:MainWindow =}|
- {7: }{23:------------------}│{7: }{22: add a complet}|
- {7: }{4: ui = UI_MainWi}│{7: }{4: }{27:#}{4:ui = UI_Main}|
- {7: }{23:------------------}│{7: }{22: add another n}|
- {7: } ui.setupUI(Mai│{7: } ui.setupUI(Ma|
- {7: } MainWindow.sho│{7: } MainWindow.sh|
- {7: } ^sys.exit(app.e│{7: } sys.exit(app.|
- {1:~ }│{1:~ }|*3
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt+=linematch:20 |
- ]])
- end)
- end)
- describe('line matching diff algorithm with icase', function()
- setup(function()
- local f1 = [[DDD
- _aa]]
- write_file(fname, f1, false)
- local f2 = [[DDD
- AAA
- ccca]]
- write_file(fname_2, f2, false)
- end)
- it('diffopt+=linematch:20,icase', function()
- reread()
- feed(':set diffopt=internal,filler,linematch:20<cr>')
- screen:expect([[
- {7: }^DDD │{7: }DDD |
- {7: }{23:------------------}│{7: }{22:AAA }|
- {7: }{27:_a}{4:a }│{7: }{27:ccc}{4:a }|
- {1:~ }│{1:~ }|*11
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- |
- ]])
- feed(':set diffopt+=icase<cr>')
- screen:expect([[
- {7: }^DDD │{7: }DDD |
- {7: }{27:_}{4:aa }│{7: }{27:A}{4:AA }|
- {7: }{23:------------------}│{7: }{22:ccca }|
- {1:~ }│{1:~ }|*11
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt+=icase |
- ]])
- end)
- end)
- describe('line matching diff algorithm with iwhiteall', function()
- setup(function()
- local f1 = [[BB
- AAA]]
- write_file(fname, f1, false)
- local f2 = [[BB
- AAB
- AAAB]]
- write_file(fname_2, f2, false)
- end)
- it('diffopt+=linematch:20,iwhiteall', function()
- reread()
- feed(':set diffopt=internal,filler,linematch:20<cr>')
- screen:expect {
- grid = [[
- {7: }^BB │{7: }BB |
- {7: }{4: AA}{27:A}{4: }│{7: }{4: AA}{27:B}{4: }|
- {7: }{23:------------------}│{7: }{22:AAAB }|
- {1:~ }│{1:~ }|*11
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- |
- ]],
- }
- feed(':set diffopt+=iwhiteall<cr>')
- screen:expect {
- grid = [[
- {7: }^BB │{7: }BB |
- {7: }{23:------------------}│{7: }{22: AAB }|
- {7: }{4: AAA }│{7: }{4:AAA}{27:B}{4: }|
- {1:~ }│{1:~ }|*11
- {3:<onal-diff-screen-1 }{2:<l-diff-screen-1.2 }|
- :set diffopt+=iwhiteall |
- ]],
- }
- end)
- end)
- it('redraws with a change to non-current buffer', function()
- write_file(fname, 'aaa\nbbb\nccc\n\nxx', false)
- write_file(fname_2, 'aaa\nbbb\nccc\n\nyy', false)
- reread()
- local buf = api.nvim_get_current_buf()
- command('botright new')
- screen:expect {
- grid = [[
- {7: }aaa │{7: }aaa |
- {7: }bbb │{7: }bbb |
- {7: }ccc │{7: }ccc |
- {7: } │{7: } |
- {7: }{27:xx}{4: }│{7: }{27:yy}{4: }|
- {1:~ }│{1:~ }|
- {2:<onal-diff-screen-1 <l-diff-screen-1.2 }|
- ^ |
- {1:~ }|*6
- {3:[No Name] }|
- :e |
- ]],
- }
- api.nvim_buf_set_lines(buf, 1, 2, true, { 'BBB' })
- screen:expect {
- grid = [[
- {7: }aaa │{7: }aaa |
- {7: }{27:BBB}{4: }│{7: }{27:bbb}{4: }|
- {7: }ccc │{7: }ccc |
- {7: } │{7: } |
- {7: }{27:xx}{4: }│{7: }{27:yy}{4: }|
- {1:~ }│{1:~ }|
- {2:<-diff-screen-1 [+] <l-diff-screen-1.2 }|
- ^ |
- {1:~ }|*6
- {3:[No Name] }|
- :e |
- ]],
- }
- end)
- it('redraws with a change current buffer in another window', function()
- write_file(fname, 'aaa\nbbb\nccc\n\nxx', false)
- write_file(fname_2, 'aaa\nbbb\nccc\n\nyy', false)
- reread()
- local buf = api.nvim_get_current_buf()
- command('botright split | diffoff')
- screen:expect {
- grid = [[
- {7: }aaa │{7: }aaa |
- {7: }bbb │{7: }bbb |
- {7: }ccc │{7: }ccc |
- {7: } │{7: } |
- {7: }{27:xx}{4: }│{7: }{27:yy}{4: }|
- {1:~ }│{1:~ }|
- {2:<onal-diff-screen-1 <l-diff-screen-1.2 }|
- ^aaa |
- bbb |
- ccc |
- |
- xx |
- {1:~ }|*2
- {3:Xtest-functional-diff-screen-1 }|
- :e |
- ]],
- }
- api.nvim_buf_set_lines(buf, 1, 2, true, { 'BBB' })
- screen:expect {
- grid = [[
- {7: }aaa │{7: }aaa |
- {7: }{27:BBB}{4: }│{7: }{27:bbb}{4: }|
- {7: }ccc │{7: }ccc |
- {7: } │{7: } |
- {7: }{27:xx}{4: }│{7: }{27:yy}{4: }|
- {1:~ }│{1:~ }|
- {2:<-diff-screen-1 [+] <l-diff-screen-1.2 }|
- ^aaa |
- BBB |
- ccc |
- |
- xx |
- {1:~ }|*2
- {3:Xtest-functional-diff-screen-1 [+] }|
- :e |
- ]],
- }
- end)
- end)
- it('win_update redraws lines properly', function()
- local screen
- screen = Screen.new(50, 10)
- screen:set_default_attr_ids({
- [1] = { bold = true, foreground = Screen.colors.Blue1 },
- [2] = { foreground = Screen.colors.Grey100, background = Screen.colors.Red },
- [3] = {
- background = Screen.colors.Red,
- foreground = Screen.colors.Grey100,
- special = Screen.colors.Yellow,
- },
- [4] = { bold = true, foreground = Screen.colors.SeaGreen4 },
- [5] = { special = Screen.colors.Yellow },
- [6] = { special = Screen.colors.Yellow, bold = true, foreground = Screen.colors.SeaGreen4 },
- [7] = { foreground = Screen.colors.Grey0, background = Screen.colors.Grey100 },
- [8] = { foreground = Screen.colors.Gray90, background = Screen.colors.Grey100 },
- [9] = { foreground = tonumber('0x00000c'), background = Screen.colors.Grey100 },
- [10] = { background = Screen.colors.Grey100, bold = true, foreground = tonumber('0xe5e5ff') },
- [11] = { background = Screen.colors.Grey100, bold = true, foreground = tonumber('0x2b8452') },
- [12] = { bold = true, reverse = true },
- [13] = { foreground = Screen.colors.DarkBlue, background = Screen.colors.WebGray },
- [14] = { reverse = true },
- [15] = { background = Screen.colors.LightBlue },
- [16] = { background = Screen.colors.LightCyan1, bold = true, foreground = Screen.colors.Blue1 },
- [17] = { bold = true, background = Screen.colors.Red },
- [18] = { background = Screen.colors.LightMagenta },
- })
- insert([[
- 1
- 2
- 1a
- ]])
- command('vnew left')
- insert([[
- 2
- 2a
- 2b
- ]])
- command('windo diffthis')
- command('windo 1')
- screen:expect {
- grid = [[
- {13: }{16:-----------------------}│{13: }{15:^1 }|
- {13: }{16:-----------------------}│{13: }{15: }|*2
- {13: }2 │{13: }2 |
- {13: }{17:2}{18:a }│{13: }{17:1}{18:a }|
- {13: }{15:2b }│{13: }{16:----------------------}|
- {13: } │{13: } |
- {1:~ }│{1:~ }|
- {14:left [+] }{12:[No Name] [+] }|
- |
- ]],
- }
- feed('<C-e>')
- feed('<C-e>')
- feed('<C-y>')
- feed('<C-y>')
- feed('<C-y>')
- screen:expect {
- grid = [[
- {13: }{16:-----------------------}│{13: }{15:1 }|
- {13: }{16:-----------------------}│{13: }{15: }|
- {13: }{16:-----------------------}│{13: }{15:^ }|
- {13: }2 │{13: }2 |
- {13: }{17:2}{18:a }│{13: }{17:1}{18:a }|
- {13: }{15:2b }│{13: }{16:----------------------}|
- {13: } │{13: } |
- {1:~ }│{1:~ }|
- {14:left [+] }{12:[No Name] [+] }|
- |
- ]],
- }
- end)
- -- oldtest: Test_diff_rnu()
- it('diff updates line numbers below filler lines', function()
- local screen = Screen.new(40, 14)
- exec([[
- call setline(1, ['a', 'a', 'a', 'y', 'b', 'b', 'b', 'b', 'b'])
- vnew
- call setline(1, ['a', 'a', 'a', 'x', 'x', 'x', 'b', 'b', 'b', 'b', 'b'])
- windo diffthis
- setlocal number rnu cursorline cursorlineopt=number foldcolumn=0
- ]])
- screen:expect([[
- {7: }a │{15:1 }^a |
- {7: }a │{8: 1 }a |
- {7: }a │{8: 2 }a |
- {7: }{27:x}{4: }│{8: 3 }{27:y}{4: }|
- {7: }{22:x }│{8: }{23:----------------}|*2
- {7: }b │{8: 4 }b |
- {7: }b │{8: 5 }b |
- {7: }b │{8: 6 }b |
- {7: }b │{8: 7 }b |
- {7: }b │{8: 8 }b |
- {1:~ }│{1:~ }|
- {2:[No Name] [+] }{3:[No Name] [+] }|
- |
- ]])
- feed('j')
- screen:expect([[
- {7: }a │{8: 1 }a |
- {7: }a │{15:2 }^a |
- {7: }a │{8: 1 }a |
- {7: }{27:x}{4: }│{8: 2 }{27:y}{4: }|
- {7: }{22:x }│{8: }{23:----------------}|*2
- {7: }b │{8: 3 }b |
- {7: }b │{8: 4 }b |
- {7: }b │{8: 5 }b |
- {7: }b │{8: 6 }b |
- {7: }b │{8: 7 }b |
- {1:~ }│{1:~ }|
- {2:[No Name] [+] }{3:[No Name] [+] }|
- |
- ]])
- feed('j')
- screen:expect([[
- {7: }a │{8: 2 }a |
- {7: }a │{8: 1 }a |
- {7: }a │{15:3 }^a |
- {7: }{27:x}{4: }│{8: 1 }{27:y}{4: }|
- {7: }{22:x }│{8: }{23:----------------}|*2
- {7: }b │{8: 2 }b |
- {7: }b │{8: 3 }b |
- {7: }b │{8: 4 }b |
- {7: }b │{8: 5 }b |
- {7: }b │{8: 6 }b |
- {1:~ }│{1:~ }|
- {2:[No Name] [+] }{3:[No Name] [+] }|
- |
- ]])
- end)
- -- oldtest: Test_diff_with_scroll_and_change()
- it('Align the filler lines when changing text in diff mode', function()
- local screen = Screen.new(40, 20)
- exec([[
- call setline(1, range(1, 15))
- vnew
- call setline(1, range(9, 15))
- windo diffthis
- wincmd h
- exe "normal Gl5\<C-E>"
- ]])
- screen:expect {
- grid = [[
- {7: }{23:------------------}│{7: }{22:6 }|
- {7: }{23:------------------}│{7: }{22:7 }|
- {7: }{23:------------------}│{7: }{22:8 }|
- {7: }9 │{7: }9 |
- {7: }10 │{7: }10 |
- {7: }11 │{7: }11 |
- {7: }12 │{7: }12 |
- {7: }13 │{7: }13 |
- {7: }14 │{7: }14 |
- {7:- }1^5 │{7:- }15 |
- {1:~ }│{1:~ }|*8
- {3:[No Name] [+] }{2:[No Name] [+] }|
- |
- ]],
- }
- feed('ax<Esc>')
- screen:expect {
- grid = [[
- {7: }{23:------------------}│{7: }{22:6 }|
- {7: }{23:------------------}│{7: }{22:7 }|
- {7: }{23:------------------}│{7: }{22:8 }|
- {7: }9 │{7: }9 |
- {7: }10 │{7: }10 |
- {7: }11 │{7: }11 |
- {7: }12 │{7: }12 |
- {7: }13 │{7: }13 |
- {7: }14 │{7: }14 |
- {7: }{4:15}{27:^x}{4: }│{7: }{4:15 }|
- {1:~ }│{1:~ }|*8
- {3:[No Name] [+] }{2:[No Name] [+] }|
- |
- ]],
- }
- feed('<C-W>lay<Esc>')
- screen:expect {
- grid = [[
- {7: }{23:-----------------}│{7: }{22:6 }|
- {7: }{23:-----------------}│{7: }{22:7 }|
- {7: }{23:-----------------}│{7: }{22:8 }|
- {7: }9 │{7: }9 |
- {7: }10 │{7: }10 |
- {7: }11 │{7: }11 |
- {7: }12 │{7: }12 |
- {7: }13 │{7: }13 |
- {7: }14 │{7: }14 |
- {7: }{4:15}{27:x}{4: }│{7: }{4:15}{27:^y}{4: }|
- {1:~ }│{1:~ }|*8
- {2:[No Name] [+] }{3:[No Name] [+] }|
- |
- ]],
- }
- end)
- it("diff mode doesn't restore invalid 'foldcolumn' value #21647", function()
- local screen = Screen.new(60, 6)
- eq('0', api.nvim_get_option_value('foldcolumn', {}))
- command('diffsplit | bd')
- screen:expect([[
- ^ |
- {1:~ }|*4
- |
- ]])
- eq('0', api.nvim_get_option_value('foldcolumn', {}))
- end)
- it("'relativenumber' doesn't draw beyond end of window in diff mode #29403", function()
- local screen = Screen.new(60, 12)
- command('set relativenumber')
- feed('10aa<CR><Esc>gg')
- command('vnew')
- feed('ab<CR><Esc>gg')
- command('windo diffthis')
- command('wincmd |')
- screen:expect([[
- {8: }│{7: }{8: 0 }{27:^a}{4: }|
- {8: }│{7: }{8: 1 }{22:a }|
- {8: }│{7: }{8: 2 }{22:a }|
- {8: }│{7: }{8: 3 }{22:a }|
- {8: }│{7: }{8: 4 }{22:a }|
- {8: }│{7: }{8: 5 }{22:a }|
- {8: }│{7: }{8: 6 }{22:a }|
- {8: }│{7: }{8: 7 }{22:a }|
- {8: }│{7: }{8: 8 }{22:a }|
- {8: }│{7: }{8: 9 }{22:a }|
- {2:< }{3:[No Name] [+] }|
- |
- ]])
- feed('j')
- screen:expect([[
- {8: }│{7: }{8: 1 }{27:a}{4: }|
- {8: }│{7: }{8: 0 }{22:^a }|
- {8: }│{7: }{8: 1 }{22:a }|
- {8: }│{7: }{8: 2 }{22:a }|
- {8: }│{7: }{8: 3 }{22:a }|
- {8: }│{7: }{8: 4 }{22:a }|
- {8: }│{7: }{8: 5 }{22:a }|
- {8: }│{7: }{8: 6 }{22:a }|
- {8: }│{7: }{8: 7 }{22:a }|
- {8: }│{7: }{8: 8 }{22:a }|
- {2:< }{3:[No Name] [+] }|
- |
- ]])
- end)
- -- oldtest: Test_diff_binary()
- it('diff mode works properly if file contains NUL bytes vim-patch:8.2.3925', function()
- local screen = Screen.new(40, 20)
- screen:add_extra_attr_ids {
- [100] = { foreground = Screen.colors.Blue, bold = true, background = Screen.colors.Red },
- }
- exec([[
- call setline(1, ['a', 'b', "c\n", 'd', 'e', 'f', 'g'])
- vnew
- call setline(1, ['A', 'b', 'c', 'd', 'E', 'f', 'g'])
- windo diffthis
- wincmd p
- norm! gg0
- redraw!
- ]])
- -- Test using internal diff
- screen:expect([[
- {7: }{27:^A}{4: }│{7: }{27:a}{4: }|
- {7: }b │{7: }b |
- {7: }{4:c }│{7: }{4:c}{100:^@}{4: }|
- {7: }d │{7: }d |
- {7: }{27:E}{4: }│{7: }{27:e}{4: }|
- {7: }f │{7: }f |
- {7: }g │{7: }g |
- {1:~ }│{1:~ }|*11
- {3:[No Name] [+] }{2:[No Name] [+] }|
- |
- ]])
- -- Test using internal diff and case folding
- command('set diffopt+=icase')
- feed('<C-L>')
- screen:expect([[
- {7: }^A │{7: }a |
- {7: }b │{7: }b |
- {7: }{4:c }│{7: }{4:c}{100:^@}{4: }|
- {7: }d │{7: }d |
- {7: }E │{7: }e |
- {7: }f │{7: }f |
- {7: }g │{7: }g |
- {1:~ }│{1:~ }|*11
- {3:[No Name] [+] }{2:[No Name] [+] }|
- |
- ]])
- -- Test using external diff
- command('set diffopt=filler')
- feed('<C-L>')
- screen:expect([[
- {7: }{27:^A}{4: }│{7: }{27:a}{4: }|
- {7: }b │{7: }b |
- {7: }{4:c }│{7: }{4:c}{100:^@}{4: }|
- {7: }d │{7: }d |
- {7: }{27:E}{4: }│{7: }{27:e}{4: }|
- {7: }f │{7: }f |
- {7: }g │{7: }g |
- {1:~ }│{1:~ }|*11
- {3:[No Name] [+] }{2:[No Name] [+] }|
- |
- ]])
- -- Test using external diff and case folding
- command('set diffopt+=filler,icase')
- feed('<C-L>')
- screen:expect([[
- {7: }^A │{7: }a |
- {7: }b │{7: }b |
- {7: }{4:c }│{7: }{4:c}{100:^@}{4: }|
- {7: }d │{7: }d |
- {7: }E │{7: }e |
- {7: }f │{7: }f |
- {7: }g │{7: }g |
- {1:~ }│{1:~ }|*11
- {3:[No Name] [+] }{2:[No Name] [+] }|
- |
- ]])
- end)
- -- oldtest: Test_diff_breakindent_after_filler()
- it("diff mode draws 'breakindent' correctly after filler lines", function()
- local screen = Screen.new(45, 8)
- exec([[
- set laststatus=0 diffopt+=followwrap breakindent breakindentopt=min:0
- call setline(1, ['a', ' ' .. repeat('c', 50)])
- vnew
- call setline(1, ['a', 'b', ' ' .. repeat('c', 50)])
- windo diffthis
- norm! G$
- ]])
- screen:expect([[
- {7: }a │{7: }a |
- {7: }{22:b }│{7: }{23:--------------------}|
- {7: } cccccccccccccccccc│{7: } cccccccccccccccccc|*2
- {7: } cccccccccccccc │{7: } ccccccccccccc^c |
- {1:~ }│{1:~ }|*2
- |
- ]])
- end)
- -- oldtest: Test_diff_overlapped_diff_blocks_will_be_merged()
- it('diff mode overlapped diff blocks will be merged', function()
- write_file('Xdifile1', '')
- write_file('Xdifile2', '')
- write_file('Xdifile3', '')
- finally(function()
- os.remove('Xdifile1')
- os.remove('Xdifile2')
- os.remove('Xdifile3')
- os.remove('Xdiin1')
- os.remove('Xdinew1')
- os.remove('Xdiout1')
- os.remove('Xdiin2')
- os.remove('Xdinew2')
- os.remove('Xdiout2')
- end)
- exec([[
- func DiffExprStub()
- let txt_in = readfile(v:fname_in)
- let txt_new = readfile(v:fname_new)
- if txt_in == ["line1"] && txt_new == ["line2"]
- call writefile(["1c1"], v:fname_out)
- elseif txt_in == readfile("Xdiin1") && txt_new == readfile("Xdinew1")
- call writefile(readfile("Xdiout1"), v:fname_out)
- elseif txt_in == readfile("Xdiin2") && txt_new == readfile("Xdinew2")
- call writefile(readfile("Xdiout2"), v:fname_out)
- endif
- endfunc
- ]])
- local screen = Screen.new(35, 20)
- command('set winwidth=10 diffopt=filler,internal')
- command('args Xdifile1 Xdifile2 | vert all | windo diffthis')
- WriteDiffFiles('a\nb', 'x\nx')
- write_file('Xdiin1', 'a\nb')
- write_file('Xdinew1', 'x\nx')
- write_file('Xdiout1', '1c1\n2c2')
- command('set diffexpr=DiffExprStub()')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:^x}{4: }|
- {7: }{27:b}{4: }│{7: }{27:x}{4: }|
- {1:~ }│{1:~ }|*16
- {2:Xdifile1 }{3:Xdifile2 }|
- |
- ]])
- command('set diffexpr&')
- WriteDiffFiles('a\nb\nc', 'x\nc')
- write_file('Xdiin1', 'a\nb\nc')
- write_file('Xdinew1', 'x\nc')
- write_file('Xdiout1', '1c1\n2c1')
- command('set diffexpr=DiffExprStub()')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:^x}{4: }|
- {7: }{22:b }│{7: }{23:---------------}|
- {7: }c │{7: }c |
- {1:~ }│{1:~ }|*15
- {2:Xdifile1 }{3:Xdifile2 }|
- |
- ]])
- command('set diffexpr&')
- WriteDiffFiles('a\nc', 'x\nx\nc')
- write_file('Xdiin1', 'a\nc')
- write_file('Xdinew1', 'x\nx\nc')
- write_file('Xdiout1', '1c1\n1a2')
- command('set diffexpr=DiffExprStub()')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:^x}{4: }|
- {7: }{23:---------------}│{7: }{22:x }|
- {7: }c │{7: }c |
- {1:~ }│{1:~ }|*15
- {2:Xdifile1 }{3:Xdifile2 }|
- |
- ]])
- command('set diffexpr&')
- command('args Xdifile1 Xdifile2 Xdifile3 | vert all | windo diffthis')
- WriteDiffFiles3('a\nb\nc', 'a\nx\nc', 'y\nb\nc')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:a}{4: }│{7: }{27:^y}{4: }|
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:b}{4: }|
- {7: }c │{7: }c │{7: }c |
- {1:~ }│{1:~ }│{1:~ }|*15
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'a\nx\nc', 'a\ny\nc')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }c │{7: }c │{7: }c |
- {1:~ }│{1:~ }│{1:~ }|*15
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'a\nx\nc', 'a\nb\ny')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:b}{4: }|
- {7: }{27:c}{4: }│{7: }{27:c}{4: }│{7: }{27:y}{4: }|
- {1:~ }│{1:~ }│{1:~ }|*15
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'a\nx\nc', 'y\ny\nc')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:a}{4: }│{7: }{27:^y}{4: }|
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }c │{7: }c │{7: }c |
- {1:~ }│{1:~ }│{1:~ }|*15
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'a\nx\nc', 'a\ny\ny')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }{27:c}{4: }│{7: }{27:c}{4: }│{7: }{27:y}{4: }|
- {1:~ }│{1:~ }│{1:~ }|*15
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'a\nx\nc', 'y\ny\ny')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:a}{4: }│{7: }{27:^y}{4: }|
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }{27:c}{4: }│{7: }{27:c}{4: }│{7: }{27:y}{4: }|
- {1:~ }│{1:~ }│{1:~ }|*15
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'a\nx\nx', 'y\ny\nc')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:a}{4: }│{7: }{27:^y}{4: }|
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }{27:c}{4: }│{7: }{27:x}{4: }│{7: }{27:c}{4: }|
- {1:~ }│{1:~ }│{1:~ }|*15
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'x\nx\nc', 'a\ny\ny')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:x}{4: }│{7: }{27:^a}{4: }|
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }{27:c}{4: }│{7: }{27:c}{4: }│{7: }{27:y}{4: }|
- {1:~ }│{1:~ }│{1:~ }|*15
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'y\ny\ny\nd\ne')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:a}{4: }│{7: }{27:^y}{4: }|
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }{27:c}{4: }│{7: }{27:c}{4: }│{7: }{27:y}{4: }|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{27:d}{4: }|
- {7: }e │{7: }e │{7: }e |
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'y\ny\ny\ny\ne')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:a}{4: }│{7: }{27:^y}{4: }|
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }{27:c}{4: }│{7: }{27:c}{4: }│{7: }{27:y}{4: }|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }e │{7: }e │{7: }e |
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'y\ny\ny\ny\ny')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:a}{4: }│{7: }{27:^y}{4: }|
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }{27:c}{4: }│{7: }{27:c}{4: }│{7: }{27:y}{4: }|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }{27:e}{4: }│{7: }{27:e}{4: }│{7: }{27:y}{4: }|
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'a\ny\ny\nd\ne')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }{27:c}{4: }│{7: }{27:c}{4: }│{7: }{27:y}{4: }|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{27:d}{4: }|
- {7: }e │{7: }e │{7: }e |
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'a\ny\ny\ny\ne')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }{27:c}{4: }│{7: }{27:c}{4: }│{7: }{27:y}{4: }|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }e │{7: }e │{7: }e |
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'a\ny\ny\ny\ny')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }{27:c}{4: }│{7: }{27:c}{4: }│{7: }{27:y}{4: }|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }{27:e}{4: }│{7: }{27:e}{4: }│{7: }{27:y}{4: }|
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'a\nb\ny\nd\ne')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:b}{4: }|
- {7: }{27:c}{4: }│{7: }{27:c}{4: }│{7: }{27:y}{4: }|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{27:d}{4: }|
- {7: }e │{7: }e │{7: }e |
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'a\nb\ny\ny\ne')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:b}{4: }|
- {7: }{27:c}{4: }│{7: }{27:c}{4: }│{7: }{27:y}{4: }|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }e │{7: }e │{7: }e |
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'a\nb\ny\ny\ny')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:b}{4: }|
- {7: }{27:c}{4: }│{7: }{27:c}{4: }│{7: }{27:y}{4: }|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }{27:e}{4: }│{7: }{27:e}{4: }│{7: }{27:y}{4: }|
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb', 'x\nb', 'y\ny')
- write_file('Xdiin1', 'a\nb')
- write_file('Xdinew1', 'x\nb')
- write_file('Xdiout1', '1c1')
- write_file('Xdiin2', 'a\nb')
- write_file('Xdinew2', 'y\ny')
- write_file('Xdiout2', '1c1\n2c2')
- command('set diffexpr=DiffExprStub()')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:x}{4: }│{7: }{27:^y}{4: }|
- {7: }{27:b}{4: }│{7: }{27:b}{4: }│{7: }{27:y}{4: }|
- {1:~ }│{1:~ }│{1:~ }|*16
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- command('set diffexpr&')
- WriteDiffFiles3('a\nb\nc\nd', 'x\nb\nx\nd', 'y\ny\nc\nd')
- write_file('Xdiin1', 'a\nb\nc\nd')
- write_file('Xdinew1', 'x\nb\nx\nd')
- write_file('Xdiout1', '1c1\n3c3')
- write_file('Xdiin2', 'a\nb\nc\nd')
- write_file('Xdinew2', 'y\ny\nc\nd')
- write_file('Xdiout2', '1c1\n2c2')
- command('set diffexpr=DiffExprStub()')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:x}{4: }│{7: }{27:^y}{4: }|
- {7: }{27:b}{4: }│{7: }{27:b}{4: }│{7: }{27:y}{4: }|
- {7: }{27:c}{4: }│{7: }{27:x}{4: }│{7: }{27:c}{4: }|
- {7: }d │{7: }d │{7: }d |
- {1:~ }│{1:~ }│{1:~ }|*14
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- command('set diffexpr&')
- WriteDiffFiles3('a\nb\nc\nd', 'x\nb\nx\nd', 'y\ny\ny\nd')
- write_file('Xdiin1', 'a\nb\nc\nd')
- write_file('Xdinew1', 'x\nb\nx\nd')
- write_file('Xdiout1', '1c1\n3c3')
- write_file('Xdiin2', 'a\nb\nc\nd')
- write_file('Xdinew2', 'y\ny\ny\nd')
- write_file('Xdiout2', '1c1\n2,3c2,3')
- command('set diffexpr=DiffExprStub()')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:x}{4: }│{7: }{27:^y}{4: }|
- {7: }{27:b}{4: }│{7: }{27:b}{4: }│{7: }{27:y}{4: }|
- {7: }{27:c}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }d │{7: }d │{7: }d |
- {1:~ }│{1:~ }│{1:~ }|*14
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- command('set diffexpr&')
- WriteDiffFiles3('a\nb\nc\nd', 'x\nb\nx\nd', 'y\ny\ny\ny')
- write_file('Xdiin1', 'a\nb\nc\nd')
- write_file('Xdinew1', 'x\nb\nx\nd')
- write_file('Xdiout1', '1c1\n3c3')
- write_file('Xdiin2', 'a\nb\nc\nd')
- write_file('Xdinew2', 'y\ny\ny\ny')
- write_file('Xdiout2', '1c1\n2,4c2,4')
- command('set diffexpr=DiffExprStub()')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:x}{4: }│{7: }{27:^y}{4: }|
- {7: }{27:b}{4: }│{7: }{27:b}{4: }│{7: }{27:y}{4: }|
- {7: }{27:c}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }{27:d}{4: }│{7: }{27:d}{4: }│{7: }{27:y}{4: }|
- {1:~ }│{1:~ }│{1:~ }|*14
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- command('set diffexpr&')
- WriteDiffFiles3('a\nb\nc', 'a\nx\nc', 'b\nc')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:a}{4: }│{7: }{27:^b}{4: }|
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }c │{7: }c │{7: }c |
- {1:~ }│{1:~ }│{1:~ }|*15
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'a\nx\nc', 'c')
- screen:expect([[
- {7: }{4:a }│{7: }{4:a }│{7: }{23:---------}|
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }c │{7: }c │{7: }^c |
- {1:~ }│{1:~ }│{1:~ }|*15
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'a\nx\nc', '')
- screen:expect([[
- {7: }{4:a }│{7: }{4:a }│{7: }{23:---------}|
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }{4:c }│{7: }{4:c }│{7: }{23:---------}|
- {1:~ }│{1:~ }│{7: }^ |
- {1:~ }│{1:~ }│{1:~ }|*14
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'a\nx\nc', 'a\nc')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }c │{7: }c │{7: }c |
- {1:~ }│{1:~ }│{1:~ }|*15
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'a\nx\nc', 'a')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }{4:c }│{7: }{4:c }│{7: }{23:---------}|
- {1:~ }│{1:~ }│{1:~ }|*15
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'a\nx\nc', 'b')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:a}{4: }│{7: }{27:^b}{4: }|
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }{4:c }│{7: }{4:c }│{7: }{23:---------}|
- {1:~ }│{1:~ }│{1:~ }|*15
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'd\ne')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:a}{4: }│{7: }{27:^d}{4: }|
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }{4:c }│{7: }{4:c }│{7: }{23:---------}|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }e │{7: }e │{7: }e |
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'e')
- screen:expect([[
- {7: }{4:a }│{7: }{4:a }│{7: }{23:---------}|
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }{4:c }│{7: }{4:c }│{7: }{23:---------}|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }e │{7: }e │{7: }^e |
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'a\nd\ne')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:d}{4: }|
- {7: }{4:c }│{7: }{4:c }│{7: }{23:---------}|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }e │{7: }e │{7: }e |
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'a\ne')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }{4:c }│{7: }{4:c }│{7: }{23:---------}|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }e │{7: }e │{7: }e |
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'a')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }{4:c }│{7: }{4:c }│{7: }{23:---------}|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }{4:e }│{7: }{4:e }│{7: }{23:---------}|
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'a\nb\nd\ne')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:b}{4: }|
- {7: }{27:c}{4: }│{7: }{27:c}{4: }│{7: }{27:d}{4: }|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }e │{7: }e │{7: }e |
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'a\nb\ne')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:b}{4: }|
- {7: }{4:c }│{7: }{4:c }│{7: }{23:---------}|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }e │{7: }e │{7: }e |
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc\nd\ne', 'a\nx\nc\nx\ne', 'a\nb')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:b}{4: }|
- {7: }{4:c }│{7: }{4:c }│{7: }{23:---------}|
- {7: }{27:d}{4: }│{7: }{27:x}{4: }│{7: }{23:---------}|
- {7: }{4:e }│{7: }{4:e }│{7: }{23:---------}|
- {1:~ }│{1:~ }│{1:~ }|*13
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'a\nx\nc', 'a\ny\nb\nc')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:y}{4: }|
- {7: }{23:---------}│{7: }{23:---------}│{7: }{22:b }|
- {7: }c │{7: }c │{7: }c |
- {1:~ }│{1:~ }│{1:~ }|*14
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'a\nx\nc', 'a\nb\ny\nc')
- screen:expect([[
- {7: }a │{7: }a │{7: }^a |
- {7: }{27:b}{4: }│{7: }{27:x}{4: }│{7: }{27:b}{4: }|
- {7: }{23:---------}│{7: }{23:---------}│{7: }{22:y }|
- {7: }c │{7: }c │{7: }c |
- {1:~ }│{1:~ }│{1:~ }|*14
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'd\ne', 'b\nf')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:d}{4: }│{7: }{27:^b}{4: }|
- {7: }{27:b}{4: }│{7: }{27:e}{4: }│{7: }{27:f}{4: }|
- {7: }{22:c }│{7: }{23:---------}│{7: }{23:---------}|
- {1:~ }│{1:~ }│{1:~ }|*15
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- WriteDiffFiles3('a\nb\nc', 'd\ne', 'b')
- screen:expect([[
- {7: }{27:a}{4: }│{7: }{27:d}{4: }│{7: }{27:^b}{4: }|
- {7: }{27:b}{4: }│{7: }{27:e}{4: }│{7: }{23:---------}|
- {7: }{22:c }│{7: }{23:---------}│{7: }{23:---------}|
- {1:~ }│{1:~ }│{1:~ }|*15
- {2:Xdifile1 Xdifile2 }{3:Xdifile3 }|
- |
- ]])
- end)
- -- oldtest: Test_diff_topline_noscroll()
- it('diff mode does not scroll with line("w0")', function()
- local screen = Screen.new(45, 20)
- exec([[
- set scrolloff=5
- call setline(1, range(1,60))
- vnew
- call setline(1, range(1,10) + range(50,60))
- windo diffthis
- norm! G
- exe "norm! 30\<C-y>"
- ]])
- screen:expect([[
- {7: }9 │{7: }9 |
- {7: }10 │{7: }10 |
- {7: }{23:--------------------}│{7: }{22:11 }|
- {7: }{23:--------------------}│{7: }{22:12 }|
- {7: }{23:--------------------}│{7: }{22:13 }|
- {7: }{23:--------------------}│{7: }{22:14 }|
- {7: }{23:--------------------}│{7: }{22:15 }|
- {7: }{23:--------------------}│{7: }{22:16 }|
- {7: }{23:--------------------}│{7: }{22:17 }|
- {7: }{23:--------------------}│{7: }{22:18 }|
- {7: }{23:--------------------}│{7: }{22:19 }|
- {7: }{23:--------------------}│{7: }{22:20 }|
- {7: }{23:--------------------}│{7: }{22:^21 }|
- {7: }{23:--------------------}│{7: }{22:22 }|
- {7: }{23:--------------------}│{7: }{22:23 }|
- {7: }{23:--------------------}│{7: }{22:24 }|
- {7: }{23:--------------------}│{7: }{22:25 }|
- {7: }{23:--------------------}│{7: }{22:26 }|
- {2:[No Name] [+] }{3:[No Name] [+] }|
- |
- ]])
- command([[echo line('w0', 1001)]])
- screen:expect([[
- {7: }9 │{7: }9 |
- {7: }10 │{7: }10 |
- {7: }{23:--------------------}│{7: }{22:11 }|
- {7: }{23:--------------------}│{7: }{22:12 }|
- {7: }{23:--------------------}│{7: }{22:13 }|
- {7: }{23:--------------------}│{7: }{22:14 }|
- {7: }{23:--------------------}│{7: }{22:15 }|
- {7: }{23:--------------------}│{7: }{22:16 }|
- {7: }{23:--------------------}│{7: }{22:17 }|
- {7: }{23:--------------------}│{7: }{22:18 }|
- {7: }{23:--------------------}│{7: }{22:19 }|
- {7: }{23:--------------------}│{7: }{22:20 }|
- {7: }{23:--------------------}│{7: }{22:^21 }|
- {7: }{23:--------------------}│{7: }{22:22 }|
- {7: }{23:--------------------}│{7: }{22:23 }|
- {7: }{23:--------------------}│{7: }{22:24 }|
- {7: }{23:--------------------}│{7: }{22:25 }|
- {7: }{23:--------------------}│{7: }{22:26 }|
- {2:[No Name] [+] }{3:[No Name] [+] }|
- 9 |
- ]])
- feed('<C-W>p')
- screen:expect([[
- {7: }{23:--------------------}│{7: }{22:39 }|
- {7: }{23:--------------------}│{7: }{22:40 }|
- {7: }{23:--------------------}│{7: }{22:41 }|
- {7: }{23:--------------------}│{7: }{22:42 }|
- {7: }{23:--------------------}│{7: }{22:43 }|
- {7: }{23:--------------------}│{7: }{22:44 }|
- {7: }{23:--------------------}│{7: }{22:45 }|
- {7: }{23:--------------------}│{7: }{22:46 }|
- {7: }{23:--------------------}│{7: }{22:47 }|
- {7: }{23:--------------------}│{7: }{22:48 }|
- {7: }{23:--------------------}│{7: }{22:49 }|
- {7: }^50 │{7: }50 |
- {7: }51 │{7: }51 |
- {7: }52 │{7: }52 |
- {7: }53 │{7: }53 |
- {7: }54 │{7: }54 |
- {7: }55 │{7: }55 |
- {7:+ }{13:+-- 5 lines: 56····}│{7:+ }{13:+-- 5 lines: 56····}|
- {3:[No Name] [+] }{2:[No Name] [+] }|
- 9 |
- ]])
- feed('<C-W>p')
- screen:expect([[
- {7: }{23:--------------------}│{7: }{22:39 }|
- {7: }{23:--------------------}│{7: }{22:40 }|
- {7: }{23:--------------------}│{7: }{22:41 }|
- {7: }{23:--------------------}│{7: }{22:42 }|
- {7: }{23:--------------------}│{7: }{22:43 }|
- {7: }{23:--------------------}│{7: }{22:^44 }|
- {7: }{23:--------------------}│{7: }{22:45 }|
- {7: }{23:--------------------}│{7: }{22:46 }|
- {7: }{23:--------------------}│{7: }{22:47 }|
- {7: }{23:--------------------}│{7: }{22:48 }|
- {7: }{23:--------------------}│{7: }{22:49 }|
- {7: }50 │{7: }50 |
- {7: }51 │{7: }51 |
- {7: }52 │{7: }52 |
- {7: }53 │{7: }53 |
- {7: }54 │{7: }54 |
- {7: }55 │{7: }55 |
- {7:+ }{13:+-- 5 lines: 56····}│{7:+ }{13:+-- 5 lines: 56····}|
- {2:[No Name] [+] }{3:[No Name] [+] }|
- 9 |
- ]])
- end)
|