deleteSurroundingPair function
Implementation
TextCommandResult deleteSurroundingPair(
List<String> graphemes, {
required int cursorOffset,
int? selectionBaseOffset,
int? selectionExtentOffset,
required Map<String, String> surroundPairs,
}) {
final selection = normalizedSelectionRange(
selectionBaseOffset,
selectionExtentOffset,
);
if (selection != null && selection.start != selection.end) {
return _unchangedResult(
graphemes,
cursorOffset: cursorOffset,
selectionBaseOffset: selectionBaseOffset,
selectionExtentOffset: selectionExtentOffset,
);
}
if (cursorOffset <= 0 || cursorOffset >= graphemes.length) {
return _unchangedResult(
graphemes,
cursorOffset: cursorOffset,
selectionBaseOffset: selectionBaseOffset,
selectionExtentOffset: selectionExtentOffset,
);
}
final opening = graphemes[cursorOffset - 1];
final closing = graphemes[cursorOffset];
if (surroundPairs[opening] != closing) {
return _unchangedResult(
graphemes,
cursorOffset: cursorOffset,
selectionBaseOffset: selectionBaseOffset,
selectionExtentOffset: selectionExtentOffset,
);
}
final result = edit_ops.removeRange(
graphemes,
start: cursorOffset - 1,
end: cursorOffset + 1,
cursorOffset: cursorOffset - 1,
);
return TextCommandResult(
graphemes: result.graphemes,
cursorOffset: result.cursorOffset,
);
}