getCachedLineSpan method
Obtains a cached span only. Unlike getLineSpan, this never invokes
re_highlight, so it is safe to call from a render object's paint pass.
Implementation
TextSpan? getCachedLineSpan(int lineIndex, String lineText) {
final mergedCache = _mergedCache[lineIndex];
if (mergedCache != null &&
mergedCache.version == _version &&
mergedCache.text == lineText) {
return mergedCache.span;
}
final grammarCache = _grammarCache[lineIndex];
final hasGrammar =
grammarCache != null &&
grammarCache.version == _version &&
grammarCache.text == lineText;
final semanticSpans = _lineSemanticSpans[lineIndex];
if (hasGrammar) {
if (_isEditing || semanticSpans == null || semanticSpans.isEmpty) {
return grammarCache.span;
}
final mergedSpan = _mergeGrammarAndSemantic(
lineText,
grammarCache.span,
semanticSpans,
);
_lineSpanCache[lineText] = mergedSpan;
_mergedCache[lineIndex] = HighlightedLine(lineText, mergedSpan, _version);
return mergedSpan;
}
return null;
}