getLineAtOffset method

int getLineAtOffset(
  1. int charOffset
)

Gets the line number (zero-based) for a character offset.

charOffset is the character position in the document. Returns the line index containing that character.

Implementation

int getLineAtOffset(int charOffset) {
  if (_bufferLineIndex != null && _bufferDirty) {
    final bufferStart = _bufferLineRopeStart;
    final bufferEnd = bufferStart + _bufferLineText!.length;
    if (charOffset >= bufferStart && charOffset <= bufferEnd) {
      final localOffset = charOffset - bufferStart;
      final sub = _bufferLineText!.substring(0, localOffset);
      return _bufferLineIndex! + '\n'.allMatches(sub).length;
    } else if (charOffset > bufferEnd) {
      final delta = _bufferLineText!.length - _bufferLineOriginalLength;
      final newLines = '\n'.allMatches(_bufferLineText!).length;
      return _rope.getLineAtOffset(charOffset - delta) + newLines;
    }
  }
  return _rope.getLineAtOffset(charOffset);
}