| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- import { Range } from '../core/range.js';
- import { Selection } from '../core/selection.js';
- export class SurroundSelectionCommand {
- constructor(range, charBeforeSelection, charAfterSelection) {
- this._range = range;
- this._charBeforeSelection = charBeforeSelection;
- this._charAfterSelection = charAfterSelection;
- }
- getEditOperations(model, builder) {
- builder.addTrackedEditOperation(new Range(this._range.startLineNumber, this._range.startColumn, this._range.startLineNumber, this._range.startColumn), this._charBeforeSelection);
- builder.addTrackedEditOperation(new Range(this._range.endLineNumber, this._range.endColumn, this._range.endLineNumber, this._range.endColumn), this._charAfterSelection);
- }
- computeCursorState(model, helper) {
- const inverseEditOperations = helper.getInverseEditOperations();
- const firstOperationRange = inverseEditOperations[0].range;
- const secondOperationRange = inverseEditOperations[1].range;
- return new Selection(firstOperationRange.endLineNumber, firstOperationRange.endColumn, secondOperationRange.endLineNumber, secondOperationRange.endColumn - this._charAfterSelection.length);
- }
- }
- /**
- * A surround selection command that runs after composition finished.
- */
- export class CompositionSurroundSelectionCommand {
- constructor(_position, _text, _charAfter) {
- this._position = _position;
- this._text = _text;
- this._charAfter = _charAfter;
- }
- getEditOperations(model, builder) {
- builder.addTrackedEditOperation(new Range(this._position.lineNumber, this._position.column, this._position.lineNumber, this._position.column), this._text + this._charAfter);
- }
- computeCursorState(model, helper) {
- const inverseEditOperations = helper.getInverseEditOperations();
- const opRange = inverseEditOperations[0].range;
- return new Selection(opRange.endLineNumber, opRange.startColumn, opRange.endLineNumber, opRange.endColumn - this._charAfter.length);
- }
- }
|