UNPKG

alm

Version:

The best IDE for TypeScript

105 lines (83 loc) 3.17 kB
import editorCommon = monaco.editor; import Range = monaco.Range; import Position = monaco.Position; import Selection = monaco.Selection; export class ReplaceCommand implements editorCommon.ICommand { private _range: Range; private _text: string; constructor(range: Range, text: string) { this._range = range; this._text = text; } public getText():string { return this._text; } public getRange():Range { return this._range; } public setRange(newRange:Range): void { this._range = newRange; } public getEditOperations(model: editorCommon.ITokenizedModel, builder: editorCommon.IEditOperationBuilder): void { builder.addEditOperation(this._range, this._text); } public computeCursorState(model: editorCommon.ITokenizedModel, helper: editorCommon.ICursorStateComputerData): Selection { var inverseEditOperations = helper.getInverseEditOperations(); var srcRange = inverseEditOperations[0].range; return new Selection( srcRange.endLineNumber, srcRange.endColumn, srcRange.endLineNumber, srcRange.endColumn ); } } export class ReplaceCommandWithoutChangingPosition extends ReplaceCommand { constructor(range: Range, text: string) { super(range, text); } public computeCursorState(model: editorCommon.ITokenizedModel, helper: editorCommon.ICursorStateComputerData): Selection { var inverseEditOperations = helper.getInverseEditOperations(); var srcRange = inverseEditOperations[0].range; return new Selection( srcRange.startLineNumber, srcRange.startColumn, srcRange.startLineNumber, srcRange.startColumn ); } } export class ReplaceCommandWithOffsetCursorState extends ReplaceCommand { private _columnDeltaOffset: number; private _lineNumberDeltaOffset: number; constructor(range: Range, text: string, lineNumberDeltaOffset: number, columnDeltaOffset: number) { super(range, text); this._columnDeltaOffset = columnDeltaOffset; this._lineNumberDeltaOffset = lineNumberDeltaOffset; } public computeCursorState(model: editorCommon.ITokenizedModel, helper: editorCommon.ICursorStateComputerData): Selection { var inverseEditOperations = helper.getInverseEditOperations(); var srcRange = inverseEditOperations[0].range; return new Selection( srcRange.endLineNumber + this._lineNumberDeltaOffset, srcRange.endColumn + this._columnDeltaOffset, srcRange.endLineNumber + this._lineNumberDeltaOffset, srcRange.endColumn + this._columnDeltaOffset ); } } export class ReplaceCommandThatPreservesSelection extends ReplaceCommand { private _initialSelection: Selection; private _selectionId: string; constructor(editRange: Range, text: string, initialSelection: Selection) { super(editRange, text); this._initialSelection = initialSelection; } public getEditOperations(model: editorCommon.ITokenizedModel, builder: editorCommon.IEditOperationBuilder): void { super.getEditOperations(model, builder); this._selectionId = builder.trackSelection(this._initialSelection); } public computeCursorState(model: editorCommon.ITokenizedModel, helper: editorCommon.ICursorStateComputerData): Selection { return helper.getTrackedSelection(this._selectionId); } }