in lib/src/highlighter.dart [361:409]
void _writeIndicator(
_Line line, _Highlight highlight, List<_Highlight?> highlightsByColumn) {
final color = highlight.isPrimary ? _primaryColor : _secondaryColor;
if (!isMultiline(highlight.span)) {
_writeSidebar();
_buffer.write(' ');
_writeMultilineHighlights(line, highlightsByColumn, current: highlight);
if (highlightsByColumn.isNotEmpty) _buffer.write(' ');
_colorize(() {
_writeUnderline(line, highlight.span,
highlight.isPrimary ? '^' : glyph.horizontalLineBold);
_writeLabel(highlight.label);
}, color: color);
_buffer.writeln();
} else if (highlight.span.start.line == line.number) {
if (highlightsByColumn.contains(highlight)) return;
replaceFirstNull(highlightsByColumn, highlight);
_writeSidebar();
_buffer.write(' ');
_writeMultilineHighlights(line, highlightsByColumn, current: highlight);
_colorize(() => _writeArrow(line, highlight.span.start.column),
color: color);
_buffer.writeln();
} else if (highlight.span.end.line == line.number) {
final coversWholeLine = highlight.span.end.column == line.text.length;
if (coversWholeLine && highlight.label == null) {
replaceWithNull(highlightsByColumn, highlight);
return;
}
_writeSidebar();
_buffer.write(' ');
_writeMultilineHighlights(line, highlightsByColumn, current: highlight);
_colorize(() {
if (coversWholeLine) {
_buffer.write(glyph.horizontalLine * 3);
} else {
_writeArrow(line, math.max(highlight.span.end.column - 1, 0),
beginning: false);
}
_writeLabel(highlight.label);
}, color: color);
_buffer.writeln();
replaceWithNull(highlightsByColumn, highlight);
}
}