textTransformWordOrAdjacent function

TextCommandResult textTransformWordOrAdjacent({
  1. required TextDocument document,
  2. required TextOffsetStateSnapshot state,
  3. required String transform(
    1. String text
    ),
})

Implementation

TextCommandResult textTransformWordOrAdjacent({
  required TextDocument document,
  required TextOffsetStateSnapshot state,
  required String Function(String text) transform,
}) {
  final range = nav.wordRangeForTransformFromReader(
    document.length,
    state.cursorOffset,
    isWord: _isWordGrapheme,
    graphemeAt: document.graphemeAt,
  );
  if (range == null || range.start == range.end) {
    return _unchangedDocumentCommandResult(document, state);
  }

  final original = document.textInRange(
    startOffset: range.start,
    endOffset: range.end,
  );
  final transformed = transform(original);
  if (transformed == original) {
    return _unchangedDocumentCommandResult(document, state);
  }

  final working = document.copy();
  final result = edit_ops.replaceDocumentTextRange(
    working,
    start: range.start,
    end: range.end,
    replacement: transformed,
  );
  return _documentCommandResult(
    working,
    cursorOffset: result.change.newEndOffset,
    documentChange: result.change,
    changed: result.changed,
  );
}