textDeleteWordBackward function

TextCommandResult textDeleteWordBackward({
  1. required TextDocument document,
  2. required TextOffsetStateSnapshot state,
  3. GraphemePredicate isWord = _isWordGrapheme,
})

Implementation

TextCommandResult textDeleteWordBackward({
  required TextDocument document,
  required TextOffsetStateSnapshot state,
  nav.GraphemePredicate isWord = _isWordGrapheme,
}) {
  if (state.cursorOffset <= 0) {
    return _unchangedDocumentCommandResult(document, state);
  }

  final range = nav.deleteWordBackwardRangeFromReader(
    document.length,
    state.cursorOffset,
    isWord: isWord,
    graphemeAt: document.graphemeAt,
  );
  if (range.start >= state.cursorOffset) {
    return _unchangedDocumentCommandResult(document, state);
  }

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