Two-way file comparison for Textadept.
Install this module by copying it into your ~/.textadept/modules/ directory or Textadept's modules/ directory, and then putting the following in your ~/.textadept/init.lua:
require('file_diff')
Releases include binaries, so building this modules should not be necessary. If you want to build manually, use CMake. For example:
cmake -S . -B build_dir
cmake --build build_dir --target diff
cmake --install build_dir
A sample workflow is this:
Note: merging can be performed wherever the caret is placed when jumping between changes, even if one buffer has a change and the other does not (additions or deletions).
Windows and Linux | macOS | Terminal | Command |
---|---|---|---|
Tools | |||
F6 | F6 | None | Compare files... |
Shift+F6 | ⇧F6 | None | Compare the buffers in two split views |
Ctrl+F6 | ⌘F6 | None | Stop comparing |
Ctrl+Alt+. | ^⌘. | None | Goto next difference |
Ctrl+Alt+, | ^⌘, | None | Goto previous difference |
Ctrl+Alt+< | ^⌘< | None | Merge left |
Ctrl+Alt+> | ^⌘> | None | Merge right |
file_diff
file_diff.INDIC_ADDITION
The indicator number for text added within lines.
file_diff.INDIC_DELETION
The indicator number for text deleted within lines.
file_diff.MARK_ADDITION
The marker for line additions.
file_diff.MARK_DELETION
The marker for line deletions.
file_diff.MARK_MODIFICATION
The marker for line modifications.
file_diff.addition_color_name
The name of the theme color used to mark additions. The default value is 'green'. If your theme does not define that color, set this field to your theme's equivalent.
file_diff.deletion_color_name
The name of the theme color used to mark deletions. The default value is 'red'. If your theme does not define that color, set this field to your theme's equivalent.
file_diff.modification_color_name
The name of the theme color used to mark modifications. The default value is 'yellow'. If your theme does not define that color, set this field to your theme's equivalent.
file_diff
_G.diff
(text1, text2)Returns a list that represents the differences between strings text1 and text2. Each consecutive pair of elements in the returned list represents a "diff". The first element is an integer: 0 for a deletion, 1 for an insertion, and 2 for equality. The second element is the associated diff text.
Parameters:
Usage:
diffs = diff(text1, text2) for i = 1, #diffs, 2 do print(diffs[i], diffs[i + 1]) end
Return:
file_diff.goto_change
(next)Jumps to the next or previous difference between the two files depending on boolean next.
file_diff.start()
must have been called previously.
Parameters:
file_diff.merge
(left)Merges a change from one buffer to another, depending on the change under the caret and the merge direction.
Parameters:
file_diff.start
(file1, file2, horizontal)Highlight differences between files file1 and file2, or the user-selected files.
Parameters:
-
, uses the current buffer. If nil
,
the user is prompted for a file.-
, uses the current buffer. If nil
,
the user is prompted for a file.false
, comparing the two files side-by-side.