deleteToLineBoundaryAtSelections method

bool deleteToLineBoundaryAtSelections({
  1. required bool forward,
})

Deletes from every cursor to its logical line boundary atomically.

Implementation

bool deleteToLineBoundaryAtSelections({required bool forward}) {
  final active = selections;
  if (active.ranges.isEmpty) return false;
  _refreshDocumentSnapshot();
  final deletionRanges = <TextSelectionRange>[];
  var changed = false;
  for (final range in active.ranges) {
    if (!range.isCollapsed) {
      deletionRanges.add(range);
      changed = true;
      continue;
    }
    final boundary = _lineBoundaryOffset(range.endOffset, forward: forward);
    deletionRanges.add(
      TextSelectionRange(
        startOffset: math.min(boundary, range.endOffset),
        endOffset: math.max(boundary, range.endOffset),
      ),
    );
    changed |= boundary != range.endOffset;
  }
  if (!changed) return false;
  setSelections(
    TextSelectionSet(
      deletionRanges,
      primaryOffset: active.primary!.activeOffset,
    ),
  );
  return deleteSelections();
}