addMultiCursor method

void addMultiCursor(
  1. int line,
  2. int character
)

Adds a secondary cursor at the given line and character position.

The position is clamped to valid bounds. Duplicate positions (including the primary cursor) are ignored.

Implementation

void addMultiCursor(int line, int character) {
  final clampedLine = line.clamp(0, lineCount - 1);
  final lineText = getLineText(clampedLine);
  final clampedChar = character.clamp(0, lineText.length);

  for (final c in _multiCursors) {
    if (c.line == clampedLine && c.character == clampedChar) return;
  }

  final primaryLine = getLineAtOffset(selection.extentOffset);
  final primaryChar =
      selection.extentOffset - getLineStartOffset(primaryLine);
  if (clampedLine == primaryLine && clampedChar == primaryChar) return;

  _multiCursors.add((line: clampedLine, character: clampedChar));
  multiCursorsChanged = true;
  notifyListeners();
}