codeHandlePairBackspace function

TextCommandResult codeHandlePairBackspace({
  1. required TextDocument document,
  2. required TextOffsetStateSnapshot state,
  3. required CodeLanguageProfile profile,
})

Implementation

TextCommandResult codeHandlePairBackspace({
  required TextDocument document,
  required TextOffsetStateSnapshot state,
  required CodeLanguageProfile profile,
}) {
  if (state.hasSelection) {
    return _unchangedCodeResultFromDocument(document, state);
  }
  final cursorOffset = state.cursorOffset;
  if (cursorOffset <= 0 || cursorOffset >= document.length) {
    return _unchangedCodeResultFromDocument(document, state);
  }

  final opening = document.graphemeAt(cursorOffset - 1);
  final closing = document.graphemeAt(cursorOffset);
  if (profile.autoPairs[opening] != closing) {
    return _unchangedCodeResultFromDocument(document, state);
  }

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