patch 9.1.0099: Not able to use diff() with 'diffexpr'
Problem: Not able to use diff() with 'diffexpr'
(rickhowe, after v9.1.0096)
Solution: Use a default context length of 0, update diff() help text,
add a test for using diff() with 'diffexpr'
(Yegappan Lakshmanan)
closes: #14013
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index 0dca467..0b3d59e 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -1,4 +1,4 @@
-*builtin.txt* For Vim version 9.1. Last change: 2024 Feb 11
+*builtin.txt* For Vim version 9.1. Last change: 2024 Feb 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -2078,8 +2078,7 @@
use. Supported boolean items are
"myers", "minimal", "patience" and
"histogram".
- context unified diff context length. Default
- is 1.
+ context diff context length. Default is 0.
iblank ignore changes where lines are all
blank.
icase ignore changes in case of text.
@@ -2092,6 +2091,10 @@
line.
For more information about these options, refer to 'diffopt'.
+ To compute the unified diff, all the items in {fromlist} are
+ concatenated into a string using a newline separator and the
+ same for {tolist}. The unified diff output uses line numbers.
+
Returns an empty List or String if {fromlist} and {tolist} are
identical.
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index 05dd4a6..e3abbde 100644
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -510,9 +510,14 @@
[{'from_idx': 1, 'from_count': 2, 'to_idx': 1, 'to_count': 0}]
" disjointed changes
- :echo diff(['ab', 'def', 'ghi', 'jkl'], ['abc', 'def', 'ghi', 'jk'], {'output': 'indices'})
+ :echo diff(['ab', 'def', 'ghi', 'jkl'], ['abc', 'def', 'ghi', 'jk'], {'output': 'indices', 'context': 0})
[{'from_idx': 0, 'from_count': 1, 'to_idx': 0, 'to_count': 1},
{'from_idx': 3, 'from_count': 1, 'to_idx': 3, 'to_count': 1}]
+
+ " disjointed changes with context length 1
+ :echo diff(['ab', 'def', 'ghi', 'jkl'], ['abc', 'def', 'ghi', 'jk'], {'output': 'indices', 'context': 1})
+ [{'from_idx': 0, 'from_count': 4, 'to_idx': 0, 'to_count': 4}]
+
<
vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/src/diff.c b/src/diff.c
index a4f3f7e..d2089dc 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -3511,9 +3511,9 @@
}
}
- *diff_ctxlen = dict_get_number_def(d, "context", 1);
+ *diff_ctxlen = dict_get_number_def(d, "context", 0);
if (*diff_ctxlen < 0)
- *diff_ctxlen = 1;
+ *diff_ctxlen = 0;
if (dict_get_bool(d, "iblank", FALSE))
*diffopts |= DIFF_IBLANK;
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 67a1427..d13eb1c 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -1952,7 +1952,7 @@
{"did_filetype", 0, 0, 0, NULL,
ret_number_bool, f_did_filetype},
{"diff", 2, 3, FEARG_1, arg3_diff,
- ret_list_dict_any, f_diff},
+ ret_any, f_diff},
{"diff_filler", 1, 1, FEARG_1, arg1_lnum,
ret_number, f_diff_filler},
{"diff_hlID", 2, 2, FEARG_1, arg2_lnum_number,
diff --git a/src/testdir/dumps/Test_difffunc_diffexpr_1.dump b/src/testdir/dumps/Test_difffunc_diffexpr_1.dump
new file mode 100644
index 0000000..b103cc8
--- /dev/null
+++ b/src/testdir/dumps/Test_difffunc_diffexpr_1.dump
@@ -0,0 +1,12 @@
+| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|z+0#0000000#5fd7ff255|e|r|o| @30
+| +0#0000e05#a8a8a8255@1>o+0#0000000#ffffff0|n|e| @31||+1&&| +0#0000e05#a8a8a8255@1|o+0#0000000#ffffff0|n|e| @31
+| +0#0000e05#a8a8a8255@1|t+0#0000000#ffd7ff255|w|o|x+2&#ff404010| +0&#ffd7ff255@30||+1&#ffffff0| +0#0000e05#a8a8a8255@1|t+0#0000000#ffd7ff255|w|o| @31
+| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|r|e@1| @29||+1&&| +0#0000e05#a8a8a8255@1|t+0#0000000#ffffff0|h|r|e@1| @29
+| +0#0000e05#a8a8a8255@1|f+0#0000000#5fd7ff255|o|u|r| @30||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34
+|~+0&#ffffff0| @35||+1#0000000&|~+0#4040ff13&| @35
+|~| @35||+1#0000000&|~+0#4040ff13&| @35
+|~| @35||+1#0000000&|~+0#4040ff13&| @35
+|~| @35||+1#0000000&|~+0#4040ff13&| @35
+|~| @35||+1#0000000&|~+0#4040ff13&| @35
+|X+3#0000000&|d|i|f@2|u|n|c|2|.|t|x|t| @4|1|,|1| @11|A|l@1| |X+1&&|d|i|f@2|u|n|c|1|.|t|x|t| @4|1|,|1| @11|A|l@1
+|"+0&&|X|d|i|f@2|u|n|c|2|.|t|x|t|"| |4|L|,| |2|0|B| @50
diff --git a/src/testdir/test_diffmode.vim b/src/testdir/test_diffmode.vim
index d37a9a2..8e7d5ce 100644
--- a/src/testdir/test_diffmode.vim
+++ b/src/testdir/test_diffmode.vim
Binary files differ
diff --git a/src/version.c b/src/version.c
index 7fd6982..7a9172a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 99,
+/**/
98,
/**/
97,