deleteToLineBoundaryAtSelections method
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();
}