From c65646c2474d22948c604168a68f6626a645d1d2 Mon Sep 17 00:00:00 2001 From: Lewis Russell Date: Thu, 26 Sep 2024 16:10:11 +0100 Subject: fix(diff): use mmfile_t in linematch Problem: Linematch used to use strchr to navigate a string, however strchr does not supoprt embedded NULs. Solution: Use `mmfile_t` instead of `char *` in linematch and introduce `strnchr()`. Also remove heap allocations from `matching_char_iwhite()` Fixes: #30505 --- runtime/doc/lua.txt | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'runtime/doc') diff --git a/runtime/doc/lua.txt b/runtime/doc/lua.txt index 29b35d69a0..cbe283065d 100644 --- a/runtime/doc/lua.txt +++ b/runtime/doc/lua.txt @@ -713,8 +713,8 @@ vim.diff({a}, {b}, {opts}) *vim.diff()* Parameters: ~ • {a} (`string`) First string to compare • {b} (`string`) Second string to compare - • {opts} (`table`) Optional parameters: - • {on_hunk} + • {opts} (`table?`) Optional parameters: + • {on_hunk}? (`fun(start_a: integer, count_a: integer, start_b: integer, count_b: integer): integer`) Invoked for each hunk in the diff. Return a negative number to cancel the callback for any remaining hunks. Arguments: @@ -722,33 +722,33 @@ vim.diff({a}, {b}, {opts}) *vim.diff()* • `count_a` (`integer`): Hunk size in {a}. • `start_b` (`integer`): Start line of hunk in {b}. • `count_b` (`integer`): Hunk size in {b}. - • {result_type} (`'unified'|'indices'`, default: `'unified'`) + • {result_type}? (`'unified'|'indices'`, default: `'unified'`) Form of the returned diff: • `unified`: String in unified format. • `indices`: Array of hunk locations. Note: This option is ignored if `on_hunk` is used. - • {linematch} (`boolean|integer`) Run linematch on the + • {linematch}? (`boolean|integer`) Run linematch on the resulting hunks from xdiff. When integer, only hunks upto this size in lines are run through linematch. Requires `result_type = indices`, ignored otherwise. - • {algorithm} (`'myers'|'minimal'|'patience'|'histogram'`, + • {algorithm}? (`'myers'|'minimal'|'patience'|'histogram'`, default: `'myers'`) Diff algorithm to use. Values: • `myers`: the default algorithm • `minimal`: spend extra time to generate the smallest possible diff • `patience`: patience diff algorithm • `histogram`: histogram diff algorithm - • {ctxlen} (`integer`) Context length - • {interhunkctxlen} (`integer`) Inter hunk context length - • {ignore_whitespace} (`boolean`) Ignore whitespace - • {ignore_whitespace_change} (`boolean`) Ignore whitespace + • {ctxlen}? (`integer`) Context length + • {interhunkctxlen}? (`integer`) Inter hunk context length + • {ignore_whitespace}? (`boolean`) Ignore whitespace + • {ignore_whitespace_change}? (`boolean`) Ignore whitespace change - • {ignore_whitespace_change_at_eol} (`boolean`) Ignore + • {ignore_whitespace_change_at_eol}? (`boolean`) Ignore whitespace change at end-of-line. - • {ignore_cr_at_eol} (`boolean`) Ignore carriage return at + • {ignore_cr_at_eol}? (`boolean`) Ignore carriage return at end-of-line - • {ignore_blank_lines} (`boolean`) Ignore blank lines - • {indent_heuristic} (`boolean`) Use the indent heuristic for + • {ignore_blank_lines}? (`boolean`) Ignore blank lines + • {indent_heuristic}? (`boolean`) Use the indent heuristic for the internal diff library. Return: ~ -- cgit From 0fb5299e53cc0d7a5c03c333b1ed79262a0db3f9 Mon Sep 17 00:00:00 2001 From: Lewis Russell Date: Sun, 29 Sep 2024 11:20:18 +0100 Subject: test: refactor exec_lua in xdiff_spec --- runtime/doc/lua.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'runtime/doc') diff --git a/runtime/doc/lua.txt b/runtime/doc/lua.txt index cbe283065d..e793a97fe1 100644 --- a/runtime/doc/lua.txt +++ b/runtime/doc/lua.txt @@ -715,7 +715,7 @@ vim.diff({a}, {b}, {opts}) *vim.diff()* • {b} (`string`) Second string to compare • {opts} (`table?`) Optional parameters: • {on_hunk}? - (`fun(start_a: integer, count_a: integer, start_b: integer, count_b: integer): integer`) + (`fun(start_a: integer, count_a: integer, start_b: integer, count_b: integer): integer?`) Invoked for each hunk in the diff. Return a negative number to cancel the callback for any remaining hunks. Arguments: • `start_a` (`integer`): Start line of hunk in {a}. -- cgit