getCurrentWordPrefixAt method

String getCurrentWordPrefixAt(
  1. int offset
)

Implementation

String getCurrentWordPrefixAt(int offset) {
  final safeOffset = offset.clamp(0, length);
  if (safeOffset == 0) return '';

  final lineIndex = _rope.getLineAtOffset(safeOffset);
  final lineStart = _rope.getLineStartOffset(lineIndex);
  final lineText = _bufferLineIndex == lineIndex && _bufferDirty
      ? _bufferLineText!
      : _rope.getLineText(lineIndex);

  final col = (safeOffset - lineStart).clamp(0, lineText.length);
  if (col <= 0) return '';

  int i = col - 1;
  while (i >= 0) {
    final code = lineText.codeUnitAt(i);
    if (!_isIdentChar(code)) break;
    i--;
  }

  final start = i + 1;
  if (start >= col) return '';
  final firstCode = lineText.codeUnitAt(start);
  if (!_isIdentStartChar(firstCode)) return '';
  return lineText.substring(start, col);
}