textDeleteToLineEnd function

TextCommandResult textDeleteToLineEnd({
  1. required TextDocument document,
  2. required TextOffsetStateSnapshot state,
})

Implementation

TextCommandResult textDeleteToLineEnd({
  required TextDocument document,
  required TextOffsetStateSnapshot state,
}) {
  final cursor = document.positionForOffset(state.cursorOffset);
  final start = state.cursorOffset.clamp(0, document.length);
  final end = document.offsetForPosition(
    TextPosition(line: cursor.line, column: document.lineLength(cursor.line)),
  );
  if (start >= end) {
    return _unchangedDocumentCommandResult(document, state);
  }

  final working = document.copy();
  final result = edit_ops.removeDocumentRange(
    working,
    start: start,
    end: end,
    cursorOffset: start,
  );
  return _documentCommandResult(
    working,
    cursorOffset: result.cursorOffset,
    documentChange: result.change,
    changed: result.changed,
  );
}