configure method

void configure({
  1. bool? showLineNumbers,
  2. bool? wrapLines,
  3. bool? zeroPadLineNumbers,
  4. DiffViewMode? viewMode,
  5. DiffStyles? styles,
  6. List<DiffCommentLineHighlight>? commentHighlights,
})

Configures display options.

When rendering-relevant options change (viewMode, showLineNumbers, wrapLines, zeroPadLineNumbers, styles), the diff lines are re-rendered automatically.

Implementation

void configure({
  bool? showLineNumbers,
  bool? wrapLines,
  bool? zeroPadLineNumbers,
  DiffViewMode? viewMode,
  DiffStyles? styles,
  List<DiffCommentLineHighlight>? commentHighlights,
}) {
  if (TuiTrace.enabled) {
    TuiTrace.event(
      'git_diff.configure',
      tag: TraceTag.general,
      fields: <String, Object?>{
        'showLineNumbers': showLineNumbers,
        'wrapLines': wrapLines,
        'zeroPadLineNumbers': zeroPadLineNumbers,
        'viewMode': viewMode?.name,
        'stylesChanged': styles != null,
        'commentHighlights': commentHighlights?.length,
      },
    );
  }

  final needsRerender =
      (viewMode != null && viewMode != _model.viewMode) ||
      (showLineNumbers != null &&
          showLineNumbers != _model.showLineNumbers) ||
      (wrapLines != null && wrapLines != _model.wrapLines) ||
      (zeroPadLineNumbers != null &&
          zeroPadLineNumbers != _model.zeroPadLineNumbers) ||
      (styles != null && styles != _model.styles) ||
      (commentHighlights != null &&
          !_sameCommentHighlights(
            commentHighlights,
            _model.commentHighlights,
          ));

  if (!needsRerender) return;

  _model = _model.copyWith(
    showLineNumbers: showLineNumbers,
    wrapLines: wrapLines,
    zeroPadLineNumbers: zeroPadLineNumbers,
    viewMode: viewMode,
    styles: styles,
    commentHighlights: commentHighlights,
  );

  _model = _model.rerender();
  _notifyListeners();
}