pub struct HunkRenderOptions<'a, 'h> {Show 13 fields
pub context: usize,
pub interhunk: usize,
pub heading: Option<&'a mut HeadingFn<'h>>,
pub colors: Option<RenderColors<'a>>,
pub word_diff: Option<&'a mut dyn HunkWordDiff>,
pub ws_error: Option<WsErrorHighlight>,
pub ws_ignore: WsIgnore,
pub algorithm: DiffAlgorithm,
pub indent_heuristic: bool,
pub change_ignore: Option<&'a ChangeIgnore<'a>>,
pub line_ranges: Option<&'a [LineRange]>,
pub color_moved: Option<ColorMoved>,
pub anchors: &'a [Vec<u8>],
}Expand description
Hunk-shaping and styling options for render_hunks.
Lifetimes are split so the funcname / word-diff hooks can be borrowed
mutably while colors is borrowed shared.
Fields§
§context: usizeLines of context around each change (-U<n>, default
DEFAULT_CONTEXT).
interhunk: usizeExtra inter-hunk merging distance (--inter-hunk-context).
heading: Option<&'a mut HeadingFn<'h>>Per-line section-heading classifier; None emits headerless hunks.
colors: Option<RenderColors<'a>>ANSI palette when color output is enabled.
word_diff: Option<&'a mut dyn HunkWordDiff>Word-diff body hook (replaces the +/- line bodies of each hunk).
ws_error: Option<WsErrorHighlight>--ws-error-highlight configuration: when set and colors are on, the
renderer paints whitespace errors on the selected line kinds with
colors.whitespace (git’s emit_line_ws_markup). None disables it.
ws_ignore: WsIgnoreWhitespace-ignore flags (-w, -b, --ignore-space-at-eol,
--ignore-cr-at-eol): applied to the line-level comparison so
whitespace-only changes do not appear as diffs (git’s
XDF_WHITESPACE_FLAGS).
algorithm: DiffAlgorithmThe line-diff algorithm to use (Myers / patience / histogram).
indent_heuristic: boolIndent heuristic (--indent-heuristic / diff.indentHeuristic): when
set, change groups that can slide within surrounding identical lines are
shifted to the most readable boundary (git’s XDF_INDENT_HEURISTIC
scoring in xdl_change_compact). The base change compaction — sliding
groups as far down as possible and aligning add/delete pairs — always
runs; this flag only enables the indent-based slider scoring. Defaults to
true to match git’s diff.indentHeuristic default.
change_ignore: Option<&'a ChangeIgnore<'a>>Change-group suppression (--ignore-blank-lines, -I<regex>): when
set, change groups all of whose old and new lines are blank (and/or
match a -I regex) are dropped from hunk emission, mirroring git’s
xdl_mark_ignorable_lines / xdl_mark_ignorable_regex + xdl_get_hunk.
line_ranges: Option<&'a [LineRange]>log -L: restrict the emitted hunks to the new-side (post-image) line
ranges. Each range is 0-based, [start, end). When set, the renderer
inflates context to the widest range span (so every change inside a
range merges into one xdiff hunk), then clips the emitted lines back to
the range boundaries — a port of diff.c’s line_range_* callbacks.
Ranges must be sorted and disjoint. None disables the filter (every
non-line-log caller).
color_moved: Option<ColorMoved>--color-moved: classify moved +/- lines and paint them with the
moved-color slots. None disables moved-code coloring.
anchors: &'a [Vec<u8>]--anchored=<text> prefixes (git’s patience anchors). Only consulted when
algorithm is DiffAlgorithm::Patience; empty (the default) is plain
patience. Forces the matching unique lines to stay aligned.