Skip to main content

HunkRenderOptions

Struct HunkRenderOptions 

Source
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: usize

Lines of context around each change (-U<n>, default DEFAULT_CONTEXT).

§interhunk: usize

Extra 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: WsIgnore

Whitespace-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: DiffAlgorithm

The line-diff algorithm to use (Myers / patience / histogram).

§indent_heuristic: bool

Indent 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.

Trait Implementations§

Source§

impl Default for HunkRenderOptions<'_, '_>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<'a, 'h> !RefUnwindSafe for HunkRenderOptions<'a, 'h>

§

impl<'a, 'h> !Send for HunkRenderOptions<'a, 'h>

§

impl<'a, 'h> !Sync for HunkRenderOptions<'a, 'h>

§

impl<'a, 'h> !UnwindSafe for HunkRenderOptions<'a, 'h>

§

impl<'a, 'h> Freeze for HunkRenderOptions<'a, 'h>

§

impl<'a, 'h> Unpin for HunkRenderOptions<'a, 'h>

§

impl<'a, 'h> UnsafeUnpin for HunkRenderOptions<'a, 'h>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.