difft - Man Page
a structural diff tool that understands syntax
Examples (TL;DR)
- Compare two files or directories:
difft path/to/file_or_directory1 path/to/file_or_directory2
- Only report the presence of differences between the files:
difft --check-only path/to/file1 path/to/file2
- Specify the display mode (default is
side-by-side
):difft --display side-by-side|side-by-side-show-both|inline|json path/to/file1 path/to/file2
- Ignore comments when comparing:
difft --ignore-comments path/to/file1 path/to/file2
- Enable/Disable syntax highlighting of source code (default is
on
):difft --syntax-highlight on|off path/to/file1 path/to/file2
- Do not output anything at all if there are no differences between files:
difft --skip-unchanged path/to/file_or_directory1 path/to/file_or_directory2
- Print all programming languages supported by the tool, along with their extensions:
difft --list-languages
Synopsis
difft [Options] OLD-PATH NEW-PATH
difft [Options] DIRECTORY-ONE DIRECTORY-TWO
difft [Options] FILE-WITH-CONFLICTS
difft --list-languages
difft --help
Description
difftastic (difft) is a CLI diff tool that compares files based on their syntax, not line-by-line. Difftastic produces accurate diffs that are easier for humans to read.
Options
- --background BACKGROUND
Set the background brightness. Difftastic will prefer brighter colours on dark backgrounds.
- --byte-limit LIMIT
Use a text diff if either input file exceeds this size.
- --check-only
Report whether there are any changes, but don’t calculate them. Much faster.
- --color WHEN
When to use color output.
- --context LINES
The number of contextual lines to show around changed lines.
- --display MODE
Display mode for showing results.
side-by-side: Display the before file and the after file in two separate columns, with line numbers aligned according to unchanged content. If a change is exclusively additions or exclusively removals, use a single column.
side-by-side-show-both: The same as side-by-side, but always uses two columns.
inline: A single column display, closer to traditional diff display.
json: Output the results as a machine-readable JSON array with an element per file.
- --exit-code
Set the exit code to 1 if there are syntactic changes in any files. For files where there is no detected language (e.g. unsupported language or binary files), sets the exit code if there are any byte changes.
- --graph-limit LIMIT
Use a text diff if the structural graph exceed this number of nodes in memory.
- -h, --help
Print help information.
- --ignore-comments
Don’t consider comments when diffing.
- --list-languages
Print the all the languages supported by difftastic, along with their extensions.
- --missing-as-empty
Treat paths that don’t exist as equivalent to an empty file. Only applies when diffing files, not directories.
- --override GLOB:NAME
Associate this glob pattern with this language, overriding normal language detection. For example:
$ difft --override=’*.c:C++’ old.c new.c
See --list-languages for the list of language names. Language names are matched case insensitively. Overrides may also specify the language “text” to treat a file as plain text.
This argument may be given more than once. For example:
$ difft --override=`CustomFile:json' --override=’*.c:text’ old.c new.c
To configure multiple overrides using environment variables, difftastic also accepts DFT_OVERRIDE_1 up to DFT_OVERRIDE_9.
$ export DFT_OVERRIDE=`CustomFile:json' $ export DFT_OVERRIDE_1=`.c:text’ $ export DFT_OVERRIDE_2=’.js:javascript jsx'
When multiple overrides are specified, the first matching override wins.
- --parse-error-limit LIMIT
Use a text diff if the number of parse errors exceeds this value.
- --skip-unchanged
Don’t display anything if a file is unchanged.
- --sort-paths
When diffing a directory, output the results sorted by path. This is slower.
- --strip-cr
Remove any carriage return characters before diffing. This can be helpful when dealing with files on Windows that contain CRLF, i.e. ***.
- --syntax-highlight on/off
Enable or disable syntax highlighting.
- --tab-width NUMSPACES
Treat a tab as this many spaces.
- -V, --version
Print version information.
- --width COLUMNS
Use this many columns when calculating line wrapping. If not specified, difftastic will detect the terminal width.
Debug Options
- --dump-syntax PATH
Parse a single file with tree-sitter and display the difftastic syntax tree.
- --dump-ts PATH
Parse a single file with tree-sitter and display the tree-sitter parse tree.
Manual
A full HTML manual is available at https://difftastic.wilfred.me.uk/introduction\c.
Bugs
See GitHub issues at https://github.com/Wilfred/difftastic/issues\c.
Author
Wilfred Hughes me@wilfred.me.uk\c