---@meta -- luacheck: no unused args --- Run diff on strings {a} and {b}. Any indices returned by this function, --- either directly or via callback arguments, are 1-based. --- --- Examples: --- --- ```lua --- vim.diff('a\n', 'b\nc\n') --- -- => --- -- @@ -1 +1,2 @@ --- -- -a --- -- +b --- -- +c --- --- vim.diff('a\n', 'b\nc\n', {result_type = 'indices'}) --- -- => --- -- { --- -- {1, 1, 1, 2} --- -- } --- ``` --- ---@param a string First string to compare ---@param b string Second string to compare ---@param opts table Optional parameters: --- - `on_hunk` (callback): --- Invoked for each hunk in the diff. Return a negative number --- to cancel the callback for any remaining hunks. --- Args: --- - `start_a` (integer): Start line of hunk in {a}. --- - `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` (string): Form of the returned diff: --- - "unified": (default) 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 resulting hunks --- from xdiff. When integer, only hunks upto this size in --- lines are run through linematch. Requires `result_type = indices`, --- ignored otherwise. --- - `algorithm` (string): --- 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 change --- - `ignore_whitespace_change_at_eol` (boolean) --- Ignore whitespace change at end-of-line. --- - `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 the internal --- diff library. --- ---@return string|table|nil --- See {opts.result_type}. `nil` if {opts.on_hunk} is given. function vim.diff(a, b, opts) end