getLineStartOffset method
Gets the character offset where a line starts.
lineIndex is zero-based (0 for the first line).
Implementation
int getLineStartOffset(int lineIndex) {
if (_bufferLineIndex != null && _bufferDirty) {
final newLines = '\n'.allMatches(_bufferLineText!).length;
if (newLines > 0) {
if (lineIndex == _bufferLineIndex!) {
return _bufferLineRopeStart;
} else if (lineIndex > _bufferLineIndex! &&
lineIndex <= _bufferLineIndex! + newLines) {
final lines = _bufferLineText!.split('\n');
int offset = _bufferLineRopeStart;
for (int i = 0; i < lineIndex - _bufferLineIndex!; i++) {
offset += lines[i].length + 1;
}
return offset;
} else if (lineIndex > _bufferLineIndex! + newLines) {
final delta = _bufferLineText!.length - _bufferLineOriginalLength;
return _rope.getLineStartOffset(lineIndex - newLines) + delta;
}
} else {
if (lineIndex == _bufferLineIndex!) return _bufferLineRopeStart;
if (lineIndex > _bufferLineIndex!) {
final delta = _bufferLineText!.length - _bufferLineOriginalLength;
return _rope.getLineStartOffset(lineIndex) + delta;
}
}
}
return _rope.getLineStartOffset(lineIndex);
}