To: vim_dev@googlegroups.com Subject: Patch 8.1.0393 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.1.0393 Solution: Add "iblank", "iwhiteall" and "iwhiteeol" to 'diffopt'. Files: src/diff.c, src/testdir/test_diffmode.vim, src/testdir/dumps/Test_diff_17.dump, src/testdir/dumps/Test_diff_18.dump, src/testdir/dumps/Test_diff_19.dump, src/testdir/dumps/Test_diff_20.dump *** ../vim-8.1.0392/src/diff.c 2018-09-13 15:33:39.601712271 +0200 --- src/diff.c 2018-09-15 18:52:00.815797976 +0200 *************** *** 24,36 **** static int diff_busy = FALSE; /* ex_diffgetput() is busy */ /* flags obtained from the 'diffopt' option */ ! #define DIFF_FILLER 1 // display filler lines ! #define DIFF_ICASE 2 // ignore case ! #define DIFF_IWHITE 4 // ignore change in white space ! #define DIFF_HORIZONTAL 8 // horizontal splits ! #define DIFF_VERTICAL 16 // vertical splits ! #define DIFF_HIDDEN_OFF 32 // diffoff when hidden ! #define DIFF_INTERNAL 64 // use internal xdiff algorithm static int diff_flags = DIFF_INTERNAL | DIFF_FILLER; static long diff_algorithm = 0; --- 24,40 ---- static int diff_busy = FALSE; /* ex_diffgetput() is busy */ /* flags obtained from the 'diffopt' option */ ! #define DIFF_FILLER 0x001 // display filler lines ! #define DIFF_IBLANK 0x002 // ignore empty lines ! #define DIFF_ICASE 0x004 // ignore case ! #define DIFF_IWHITE 0x008 // ignore change in white space ! #define DIFF_IWHITEALL 0x010 // ignore all white space changes ! #define DIFF_IWHITEEOL 0x020 // ignore change in white space at EOL ! #define DIFF_HORIZONTAL 0x040 // horizontal splits ! #define DIFF_VERTICAL 0x080 // vertical splits ! #define DIFF_HIDDEN_OFF 0x100 // diffoff when hidden ! #define DIFF_INTERNAL 0x200 // use internal xdiff algorithm ! #define ALL_WHITE_DIFF (DIFF_IWHITE | DIFF_IWHITEALL | DIFF_IWHITEEOL) static int diff_flags = DIFF_INTERNAL | DIFF_FILLER; static long diff_algorithm = 0; *************** *** 1050,1055 **** --- 1054,1065 ---- if (diff_flags & DIFF_IWHITE) param.flags |= XDF_IGNORE_WHITESPACE_CHANGE; + if (diff_flags & DIFF_IWHITEALL) + param.flags |= XDF_IGNORE_WHITESPACE; + if (diff_flags & DIFF_IWHITEEOL) + param.flags |= XDF_IGNORE_WHITESPACE_AT_EOL; + if (diff_flags & DIFF_IBLANK) + param.flags |= XDF_IGNORE_BLANK_LINES; emit_cfg.ctxlen = 0; // don't need any diff_context here emit_cb.priv = &diffio->dio_diff; *************** *** 1106,1112 **** // Build the diff command and execute it. Always use -a, binary // differences are of no use. Ignore errors, diff returns // non-zero when differences have been found. ! vim_snprintf((char *)cmd, len, "diff %s%s%s%s%s %s", diff_a_works == FALSE ? "" : "-a ", #if defined(MSWIN) diff_bin_works == TRUE ? "--binary " : "", --- 1116,1122 ---- // Build the diff command and execute it. Always use -a, binary // differences are of no use. Ignore errors, diff returns // non-zero when differences have been found. ! vim_snprintf((char *)cmd, len, "diff %s%s%s%s%s%s%s%s %s", diff_a_works == FALSE ? "" : "-a ", #if defined(MSWIN) diff_bin_works == TRUE ? "--binary " : "", *************** *** 1114,1119 **** --- 1124,1132 ---- "", #endif (diff_flags & DIFF_IWHITE) ? "-b " : "", + (diff_flags & DIFF_IWHITEALL) ? "-w " : "", + (diff_flags & DIFF_IWHITEEOL) ? "-Z " : "", + (diff_flags & DIFF_IBLANK) ? "-B " : "", (diff_flags & DIFF_ICASE) ? "-i " : "", tmp_orig, tmp_new); append_redir(cmd, (int)len, p_srr, tmp_diff); *************** *** 1946,1962 **** char_u *p1, *p2; int l; ! if ((diff_flags & (DIFF_ICASE | DIFF_IWHITE)) == 0) return STRCMP(s1, s2); ! if ((diff_flags & DIFF_ICASE) && !(diff_flags & DIFF_IWHITE)) return MB_STRICMP(s1, s2); - /* Ignore white space changes and possibly ignore case. */ p1 = s1; p2 = s2; while (*p1 != NUL && *p2 != NUL) { ! if (VIM_ISWHITE(*p1) && VIM_ISWHITE(*p2)) { p1 = skipwhite(p1); p2 = skipwhite(p2); --- 1959,1983 ---- char_u *p1, *p2; int l; ! if ((diff_flags & DIFF_IBLANK) ! && (*skipwhite(s1) == NUL || *skipwhite(s2) == NUL)) ! return 0; ! ! if ((diff_flags & (DIFF_ICASE | ALL_WHITE_DIFF)) == 0) return STRCMP(s1, s2); ! if ((diff_flags & DIFF_ICASE) && !(diff_flags & ALL_WHITE_DIFF)) return MB_STRICMP(s1, s2); p1 = s1; p2 = s2; + + // Ignore white space changes and possibly ignore case. while (*p1 != NUL && *p2 != NUL) { ! if (((diff_flags & DIFF_IWHITE) ! && VIM_ISWHITE(*p1) && VIM_ISWHITE(*p2)) ! || ((diff_flags & DIFF_IWHITEALL) ! && (VIM_ISWHITE(*p1) || VIM_ISWHITE(*p2)))) { p1 = skipwhite(p1); p2 = skipwhite(p2); *************** *** 1970,1976 **** } } ! /* Ignore trailing white space. */ p1 = skipwhite(p1); p2 = skipwhite(p2); if (*p1 != NUL || *p2 != NUL) --- 1991,1997 ---- } } ! // Ignore trailing white space. p1 = skipwhite(p1); p2 = skipwhite(p2); if (*p1 != NUL || *p2 != NUL) *************** *** 2142,2152 **** --- 2163,2188 ---- p += 8; diff_context_new = getdigits(&p); } + else if (STRNCMP(p, "iblank", 6) == 0) + { + p += 6; + diff_flags_new |= DIFF_IBLANK; + } else if (STRNCMP(p, "icase", 5) == 0) { p += 5; diff_flags_new |= DIFF_ICASE; } + else if (STRNCMP(p, "iwhiteall", 9) == 0) + { + p += 9; + diff_flags_new |= DIFF_IWHITEALL; + } + else if (STRNCMP(p, "iwhiteeol", 9) == 0) + { + p += 9; + diff_flags_new |= DIFF_IWHITEEOL; + } else if (STRNCMP(p, "iwhite", 6) == 0) { p += 6; *************** *** 2315,2323 **** si_org = si_new = 0; while (line_org[si_org] != NUL) { ! if ((diff_flags & DIFF_IWHITE) ! && VIM_ISWHITE(line_org[si_org]) ! && VIM_ISWHITE(line_new[si_new])) { si_org = (int)(skipwhite(line_org + si_org) - line_org); si_new = (int)(skipwhite(line_new + si_new) - line_new); --- 2351,2362 ---- si_org = si_new = 0; while (line_org[si_org] != NUL) { ! if (((diff_flags & DIFF_IWHITE) ! && VIM_ISWHITE(line_org[si_org]) ! && VIM_ISWHITE(line_new[si_new])) ! || ((diff_flags & DIFF_IWHITEALL) ! && (VIM_ISWHITE(line_org[si_org]) ! || VIM_ISWHITE(line_new[si_new])))) { si_org = (int)(skipwhite(line_org + si_org) - line_org); si_new = (int)(skipwhite(line_new + si_new) - line_new); *************** *** 2351,2359 **** while (ei_org >= *startp && ei_new >= si_new && ei_org >= 0 && ei_new >= 0) { ! if ((diff_flags & DIFF_IWHITE) ! && VIM_ISWHITE(line_org[ei_org]) ! && VIM_ISWHITE(line_new[ei_new])) { while (ei_org >= *startp && VIM_ISWHITE(line_org[ei_org])) --- 2390,2401 ---- while (ei_org >= *startp && ei_new >= si_new && ei_org >= 0 && ei_new >= 0) { ! if (((diff_flags & DIFF_IWHITE) ! && VIM_ISWHITE(line_org[ei_org]) ! && VIM_ISWHITE(line_new[ei_new])) ! || ((diff_flags & DIFF_IWHITEALL) ! && (VIM_ISWHITE(line_org[ei_org]) ! || VIM_ISWHITE(line_new[ei_new])))) { while (ei_org >= *startp && VIM_ISWHITE(line_org[ei_org])) *** ../vim-8.1.0392/src/testdir/test_diffmode.vim 2018-09-13 13:03:08.228724142 +0200 --- src/testdir/test_diffmode.vim 2018-09-15 19:02:43.814040268 +0200 *************** *** 671,686 **** bwipe! endfunc ! func WriteDiffFiles(list1, list2) call writefile(a:list1, 'Xfile1') call writefile(a:list2, 'Xfile2') endfunc ! " Verify a screendump with both the external and external diff. func VerifyBoth(buf, dumpfile, extra) - call term_sendkeys(a:buf, ":diffupdate!\") " trailing : for leaving the cursor on the command line ! for cmd in [":set diffopt=filler" . a:extra . "\:", ":set diffopt+=internal\:"] call term_sendkeys(a:buf, cmd) if VerifyScreenDump(a:buf, a:dumpfile, {}, cmd =~ 'internal' ? 'internal' : 'external') break " don't let the next iteration overwrite the "failed" file. --- 671,688 ---- bwipe! endfunc ! func WriteDiffFiles(buf, list1, list2) call writefile(a:list1, 'Xfile1') call writefile(a:list2, 'Xfile2') + if a:buf + call term_sendkeys(a:buf, ":checktime\") + endif endfunc ! " Verify a screendump with both the internal and external diff. func VerifyBoth(buf, dumpfile, extra) " trailing : for leaving the cursor on the command line ! for cmd in [":set diffopt=filler" . a:extra . "\:", ":set diffopt+=internal\:"] call term_sendkeys(a:buf, cmd) if VerifyScreenDump(a:buf, a:dumpfile, {}, cmd =~ 'internal' ? 'internal' : 'external') break " don't let the next iteration overwrite the "failed" file. *************** *** 688,693 **** --- 690,703 ---- endfor endfunc + " Verify a screendump with the internal diff only. + func VerifyInternal(buf, dumpfile, extra) + call term_sendkeys(a:buf, ":diffupdate!\") + " trailing : for leaving the cursor on the command line + call term_sendkeys(a:buf, ":set diffopt=internal,filler" . a:extra . "\:") + call VerifyScreenDump(a:buf, a:dumpfile, {}) + endfunc + func Test_diff_screen() if !CanRunVimInTerminal() || !has('menu') return *************** *** 697,732 **** call delete('.Xfile2.swp') " Test 1: Add a line in beginning of file 2 ! call WriteDiffFiles([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) let buf = RunVimInTerminal('-d Xfile1 Xfile2', {}) " Set autoread mode, ,so that Vim won't complain once we re-write the test " files ! call term_sendkeys(buf, ":set autoread\\w:set autoread\\w") call VerifyBoth(buf, 'Test_diff_01', '') " Test 2: Add a line in beginning of file 1 ! call WriteDiffFiles([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) call VerifyBoth(buf, 'Test_diff_02', '') " Test 3: Add a line at the end of file 2 ! call WriteDiffFiles([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) call VerifyBoth(buf, 'Test_diff_03', '') " Test 4: Add a line at the end of file 1 ! call WriteDiffFiles([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) call VerifyBoth(buf, 'Test_diff_04', '') " Test 5: Add a line in the middle of file 2, remove on at the end of file 1 ! call WriteDiffFiles([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10]) call VerifyBoth(buf, 'Test_diff_05', '') " Test 6: Add a line in the middle of file 1, remove on at the end of file 2 ! call WriteDiffFiles([1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) call VerifyBoth(buf, 'Test_diff_06', '') " Test 7 - 9: Test normal/patience/histogram diff algorithm ! call WriteDiffFiles(['#include ', '', '// 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)', --- 707,742 ---- call delete('.Xfile2.swp') " Test 1: Add a line in beginning of file 2 ! call WriteDiffFiles(0, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) let buf = RunVimInTerminal('-d Xfile1 Xfile2', {}) " Set autoread mode, ,so that Vim won't complain once we re-write the test " files ! call term_sendkeys(buf, ":set autoread\\w:set autoread\\w") call VerifyBoth(buf, 'Test_diff_01', '') " Test 2: Add a line in beginning of file 1 ! call WriteDiffFiles(buf, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) call VerifyBoth(buf, 'Test_diff_02', '') " Test 3: Add a line at the end of file 2 ! call WriteDiffFiles(buf, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) call VerifyBoth(buf, 'Test_diff_03', '') " Test 4: Add a line at the end of file 1 ! call WriteDiffFiles(buf, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) call VerifyBoth(buf, 'Test_diff_04', '') " Test 5: Add a line in the middle of file 2, remove on at the end of file 1 ! call WriteDiffFiles(buf, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10]) call VerifyBoth(buf, 'Test_diff_05', '') " Test 6: Add a line in the middle of file 1, remove on at the end of file 2 ! call WriteDiffFiles(buf, [1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) call VerifyBoth(buf, 'Test_diff_06', '') " Test 7 - 9: Test normal/patience/histogram diff algorithm ! call WriteDiffFiles(buf, ['#include ', '', '// 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)', *************** *** 748,754 **** " Test 10-11: normal/indent-heuristic call term_sendkeys(buf, ":set diffopt&vim\") ! call WriteDiffFiles(['', ' def finalize(values)', '', ' values.each do |v|', ' v.finalize', ' end'], \ ['', ' def finalize(values)', '', ' values.each do |v|', ' v.prepare', ' end', '', \ ' values.each do |v|', ' v.finalize', ' end']) call term_sendkeys(buf, ":diffupdate!\") --- 758,764 ---- " Test 10-11: normal/indent-heuristic call term_sendkeys(buf, ":set diffopt&vim\") ! call WriteDiffFiles(buf, ['', ' def finalize(values)', '', ' values.each do |v|', ' v.finalize', ' end'], \ ['', ' def finalize(values)', '', ' values.each do |v|', ' v.prepare', ' end', '', \ ' values.each do |v|', ' v.finalize', ' end']) call term_sendkeys(buf, ":diffupdate!\") *************** *** 759,777 **** call VerifyScreenDump(buf, 'Test_diff_11', {}) " Test 12: diff the same file ! call WriteDiffFiles([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) call VerifyBoth(buf, 'Test_diff_12', '') " Test 13: diff an empty file ! call WriteDiffFiles([], []) call VerifyBoth(buf, 'Test_diff_13', '') " Test 14: test diffopt+=icase ! call WriteDiffFiles(['a', 'b', 'cd'], ['A', 'b', 'cDe']) call VerifyBoth(buf, 'Test_diff_14', " diffopt+=filler diffopt+=icase") " Test 15-16: test diffopt+=iwhite ! call WriteDiffFiles(['int main()', '{', ' printf("Hello, World!");', ' return 0;', '}'], \ ['int main()', '{', ' if (0)', ' {', ' printf("Hello, World!");', ' return 0;', ' }', '}']) call term_sendkeys(buf, ":diffupdate!\") call term_sendkeys(buf, ":set diffopt&vim diffopt+=filler diffopt+=iwhite\") --- 769,787 ---- call VerifyScreenDump(buf, 'Test_diff_11', {}) " Test 12: diff the same file ! call WriteDiffFiles(buf, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) call VerifyBoth(buf, 'Test_diff_12', '') " Test 13: diff an empty file ! call WriteDiffFiles(buf, [], []) call VerifyBoth(buf, 'Test_diff_13', '') " Test 14: test diffopt+=icase ! call WriteDiffFiles(buf, ['a', 'b', 'cd'], ['A', 'b', 'cDe']) call VerifyBoth(buf, 'Test_diff_14', " diffopt+=filler diffopt+=icase") " Test 15-16: test diffopt+=iwhite ! call WriteDiffFiles(buf, ['int main()', '{', ' printf("Hello, World!");', ' return 0;', '}'], \ ['int main()', '{', ' if (0)', ' {', ' printf("Hello, World!");', ' return 0;', ' }', '}']) call term_sendkeys(buf, ":diffupdate!\") call term_sendkeys(buf, ":set diffopt&vim diffopt+=filler diffopt+=iwhite\") *************** *** 779,784 **** --- 789,810 ---- call term_sendkeys(buf, ":set diffopt+=internal\") call VerifyScreenDump(buf, 'Test_diff_16', {}) + " Test 17: test diffopt+=iblank + call WriteDiffFiles(buf, ['a', ' ', 'cd', 'ef', 'xxx'], ['a', 'cd', '', 'ef', 'yyy']) + call VerifyInternal(buf, 'Test_diff_17', " diffopt+=iblank") + + " Test 18: test diffopt+=iblank,iwhite / iwhiteall / iwhiteeol + call VerifyInternal(buf, 'Test_diff_18', " diffopt+=iblank,iwhite") + call VerifyInternal(buf, 'Test_diff_18', " diffopt+=iblank,iwhiteall") + call VerifyInternal(buf, 'Test_diff_18', " diffopt+=iblank,iwhiteeol") + + " Test 19: test diffopt+=iwhiteeol + call WriteDiffFiles(buf, ['a ', 'x', 'cd', 'ef', 'xx xx', 'foo', 'bar'], ['a', 'x', 'c d', ' ef', 'xx xx', 'foo', '', 'bar']) + call VerifyInternal(buf, 'Test_diff_19', " diffopt+=iwhiteeol") + + " Test 19: test diffopt+=iwhiteall + call VerifyInternal(buf, 'Test_diff_20', " diffopt+=iwhiteall") + " clean up call StopVimInTerminal(buf) call delete('Xfile1') *** ../vim-8.1.0392/src/testdir/dumps/Test_diff_17.dump 2018-09-15 19:15:54.443272696 +0200 --- src/testdir/dumps/Test_diff_17.dump 2018-09-15 17:55:58.742090613 +0200 *************** *** 0 **** --- 1,20 ---- + | +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33 + | +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@34||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34 + | +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0|d| @32||+1&&| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0|d| @32 + | +0#0000e05#a8a8a8255@1|e+0#0000000#ffffff0|f| @32||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34 + | +0#0000e05#a8a8a8255@1|x+2#0000000#ff404010@2| +0&#ffd7ff255@31||+1&#ffffff0| +0#0000e05#a8a8a8255@1|e+0#0000000#ffffff0|f| @32 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|y+2#0000000#ff404010@2| +0&#ffd7ff255@31 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + |X+3#0000000&|f|i|l|e|1| @12|1|,|1| @11|A|l@1| |X+1&&|f|i|l|e|2| @12|1|,|1| @11|A|l@1 + |:+0&&> @73 *** ../vim-8.1.0392/src/testdir/dumps/Test_diff_18.dump 2018-09-15 19:15:54.447272663 +0200 --- src/testdir/dumps/Test_diff_18.dump 2018-09-15 18:52:17.627640956 +0200 *************** *** 0 **** --- 1,20 ---- + | +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33 + | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34||+1&&| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0|d| @32 + | +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0|d| @32||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@34 + | +0#0000e05#a8a8a8255@1|e+0#0000000#ffffff0|f| @32||+1&&| +0#0000e05#a8a8a8255@1|e+0#0000000#ffffff0|f| @32 + | +0#0000e05#a8a8a8255@1|x+2#0000000#ff404010@2| +0&#ffd7ff255@31||+1&#ffffff0| +0#0000e05#a8a8a8255@1|y+2#0000000#ff404010@2| +0&#ffd7ff255@31 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + |X+3#0000000&|f|i|l|e|1| @12|1|,|1| @11|A|l@1| |X+1&&|f|i|l|e|2| @12|1|,|1| @11|A|l@1 + |:+0&&> @73 *** ../vim-8.1.0392/src/testdir/dumps/Test_diff_19.dump 2018-09-15 19:15:54.451272630 +0200 --- src/testdir/dumps/Test_diff_19.dump 2018-09-15 19:02:49.693989182 +0200 *************** *** 0 **** --- 1,20 ---- + | +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|c+0#0000000#ffd7ff255|d| @32||+1&#ffffff0| +0#0000e05#a8a8a8255@1|c+0#0000000#ffd7ff255| +2&#ff404010|d+0&#ffd7ff255| @31 + | +0#0000e05#a8a8a8255@1|e+0#0000000#ffd7ff255|f| @32||+1&#ffffff0| +0#0000e05#a8a8a8255@1| +2#0000000#ff404010|e+0&#ffd7ff255|f| @31 + | +0#0000e05#a8a8a8255@1|x+0#0000000#ffd7ff255@1| | +2&#ff404010|x+0&#ffd7ff255@1| @28||+1&#ffffff0| +0#0000e05#a8a8a8255@1|x+0#0000000#ffd7ff255@1| |x@1| @29 + | +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31||+1&&| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31 + | +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@34 + | +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0|a|r| @31||+1&&| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0|a|r| @31 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + |X+3#0000000&|f|i|l|e|1| @12|1|,|1| @11|A|l@1| |X+1&&|f|i|l|e|2| @12|1|,|1| @11|A|l@1 + |:+0&&> @73 *** ../vim-8.1.0392/src/testdir/dumps/Test_diff_20.dump 2018-09-15 19:15:54.455272594 +0200 --- src/testdir/dumps/Test_diff_20.dump 2018-09-15 19:02:50.741980079 +0200 *************** *** 0 **** --- 1,20 ---- + | +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0| @33||+1&&| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0|d| @32||+1&&| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0| |d| @31 + | +0#0000e05#a8a8a8255@1|e+0#0000000#ffffff0|f| @32||+1&&| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0|e|f| @31 + | +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@1| @1|x@1| @28||+1&&| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@1| |x@1| @29 + | +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31||+1&&| +0#0000e05#a8a8a8255@1|f+0#0000000#ffffff0|o@1| @31 + | +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1| +0#0000000#5fd7ff255@34 + | +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0|a|r| @31||+1&&| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0|a|r| @31 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + | +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33 + |X+3#0000000&|f|i|l|e|1| @12|1|,|1| @11|A|l@1| |X+1&&|f|i|l|e|2| @12|1|,|1| @11|A|l@1 + |:+0&&> @73 *** ../vim-8.1.0392/src/version.c 2018-09-15 15:42:36.501547749 +0200 --- src/version.c 2018-09-15 19:05:26.212635237 +0200 *************** *** 796,797 **** --- 796,799 ---- { /* Add new patch number below this line */ + /**/ + 393, /**/ -- I'm trying to be an optimist, but I don't think it'll work. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///