codeHandlePairBackspace function
TextCommandResult
codeHandlePairBackspace({
- required TextDocument document,
- required TextOffsetStateSnapshot state,
- 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,
);
}