sync method
TextSyntaxSnapshot<State>
sync(
- String text, {
- String? language,
- bool force = false,
- TextDocumentChange? change,
Implementation
TextSyntaxSnapshot<State> sync(
String text, {
String? language,
bool force = false,
TextDocumentChange? change,
}) {
final resolvedLanguage = language ?? this.language;
final previous = _snapshot;
if (!force &&
previous != null &&
previous.text == text &&
previous.language == resolvedLanguage &&
(change == null || change.isNoop)) {
return previous;
}
final resolvedChange =
!force && previous != null && previous.language == resolvedLanguage
? (change ?? computeTextDocumentChange(previous.text, text))
: null;
final result = provider.build(
text,
document: null,
language: resolvedLanguage,
previous: resolvedChange == null ? null : previous,
change: resolvedChange,
);
final decorations = result.patch != null && previous != null
? mergeTextSyntaxDecorationPatch(previous.decorations, result.patch!)
: result.decorations;
final snapshot = TextSyntaxSnapshot<State>(
text: text,
decorations: List<TextDecorationRange>.unmodifiable(decorations),
language: resolvedLanguage,
document: null,
state: result.state,
change: resolvedChange,
);
_snapshot = snapshot;
return snapshot;
}