mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| ---@meta
 | |
| 
 | |
| --- Optional parameters:
 | |
| --- @class vim.diff.Opts
 | |
| --- @inlinedoc
 | |
| ---
 | |
| --- 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}.
 | |
| ---   - `count_a` (`integer`): Hunk size in {a}.
 | |
| ---   - `start_b` (`integer`): Start line of hunk in {b}.
 | |
| ---   - `count_b` (`integer`): Hunk size in {b}.
 | |
| --- @field on_hunk? fun(start_a: integer, count_a: integer, start_b: integer, count_b: integer): integer?
 | |
| ---
 | |
| --- 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.
 | |
| --- (default: `'unified'`)
 | |
| --- @field result_type? 'unified'|'indices'
 | |
| ---
 | |
| --- 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.
 | |
| --- @field linematch? boolean|integer
 | |
| ---
 | |
| --- 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
 | |
| --- (default: `'myers'`)
 | |
| --- @field algorithm? 'myers'|'minimal'|'patience'|'histogram'
 | |
| --- @field ctxlen? integer Context length
 | |
| --- @field interhunkctxlen? integer Inter hunk context length
 | |
| --- @field ignore_whitespace? boolean Ignore whitespace
 | |
| --- @field ignore_whitespace_change? boolean Ignore whitespace change
 | |
| --- @field ignore_whitespace_change_at_eol? boolean Ignore whitespace change at end-of-line.
 | |
| --- @field ignore_cr_at_eol? boolean Ignore carriage return at end-of-line
 | |
| --- @field ignore_blank_lines? boolean Ignore blank lines
 | |
| --- @field indent_heuristic? boolean Use the indent heuristic for the internal diff library.
 | |
| 
 | |
| -- 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? vim.diff.Opts
 | |
| ---@return string|integer[][]?
 | |
| ---     See {opts.result_type}. `nil` if {opts.on_hunk} is given.
 | |
| function vim.diff(a, b, opts) end
 | 
