diff --git a/src/vs/editor/browser/controller/coreCommands.ts b/src/vs/editor/browser/controller/coreCommands.ts index 2b1b74033ff..46df25307be 100644 --- a/src/vs/editor/browser/controller/coreCommands.ts +++ b/src/vs/editor/browser/controller/coreCommands.ts @@ -1256,7 +1256,7 @@ export namespace CoreNavigationCommands { ); } - viewModel.setScrollTop(desiredScrollTop, ScrollType.Smooth); + viewModel.viewLayout.setScrollPosition({ scrollTop: desiredScrollTop }, ScrollType.Smooth); } private _computeDesiredScrollTop(viewModel: IViewModel, args: EditorScroll_.ParsedArguments): number { @@ -1276,7 +1276,7 @@ export namespace CoreNavigationCommands { } const viewPosition = viewModel.coordinatesConverter.convertModelPositionToViewPosition(new Position(desiredTopModelLineNumber, 1)); - return viewModel.getVerticalOffsetForLineNumber(viewPosition.lineNumber); + return viewModel.viewLayout.getVerticalOffsetForLineNumber(viewPosition.lineNumber); } let noOfLines: number; @@ -1288,7 +1288,7 @@ export namespace CoreNavigationCommands { noOfLines = args.value; } const deltaLines = (args.direction === EditorScroll_.Direction.Up ? -1 : 1) * noOfLines; - return viewModel.getScrollTop() + deltaLines * viewModel.cursorConfig.lineHeight; + return viewModel.viewLayout.getCurrentScrollTop() + deltaLines * viewModel.cursorConfig.lineHeight; } } diff --git a/src/vs/editor/browser/controller/mouseTarget.ts b/src/vs/editor/browser/controller/mouseTarget.ts index 7f45a1b83fd..1d64b5877dd 100644 --- a/src/vs/editor/browser/controller/mouseTarget.ts +++ b/src/vs/editor/browser/controller/mouseTarget.ts @@ -412,7 +412,7 @@ class HitTestRequest extends BareHitTestRequest { private _getMouseColumn(position: Position | null = null): number { if (position && position.column < this._ctx.viewModel.getLineMaxColumn(position.lineNumber)) { // Most likely, the line contains foreign decorations... - return CursorColumns.visibleColumnFromColumn(this._ctx.viewModel.getLineContent(position.lineNumber), position.column, this._ctx.viewModel.getTextModelOptions().tabSize) + 1; + return CursorColumns.visibleColumnFromColumn(this._ctx.viewModel.getLineContent(position.lineNumber), position.column, this._ctx.viewModel.model.getOptions().tabSize) + 1; } return this.mouseColumn; } @@ -952,7 +952,7 @@ export class MouseTargetFactory { private static _snapToSoftTabBoundary(position: Position, viewModel: IViewModel): Position { const lineContent = viewModel.getLineContent(position.lineNumber); - const { tabSize } = viewModel.getTextModelOptions(); + const { tabSize } = viewModel.model.getOptions(); const newPosition = AtomicTabMoveOperations.atomicPosition(lineContent, position.column - 1, tabSize, Direction.Nearest); if (newPosition !== -1) { return new Position(position.lineNumber, newPosition + 1); diff --git a/src/vs/editor/browser/controller/pointerHandler.ts b/src/vs/editor/browser/controller/pointerHandler.ts index bf1695b649e..e7f6a3d54dd 100644 --- a/src/vs/editor/browser/controller/pointerHandler.ts +++ b/src/vs/editor/browser/controller/pointerHandler.ts @@ -83,7 +83,7 @@ export class PointerEventHandler extends MouseHandler { private onChange(e: GestureEvent): void { if (this._lastPointerType === 'touch') { - this._context.viewModel.deltaScrollNow(-e.translationX, -e.translationY); + this._context.viewModel.viewLayout.deltaScrollNow(-e.translationX, -e.translationY); } } @@ -126,7 +126,7 @@ class TouchHandler extends MouseHandler { } private onChange(e: GestureEvent): void { - this._context.viewModel.deltaScrollNow(-e.translationX, -e.translationY); + this._context.viewModel.viewLayout.deltaScrollNow(-e.translationX, -e.translationY); } } diff --git a/src/vs/editor/browser/controller/textAreaHandler.ts b/src/vs/editor/browser/controller/textAreaHandler.ts index 4988e0cfd01..5aa7978b570 100644 --- a/src/vs/editor/browser/controller/textAreaHandler.ts +++ b/src/vs/editor/browser/controller/textAreaHandler.ts @@ -58,7 +58,7 @@ class VisibleTextAreaData { prepareRender(visibleRangeProvider: IVisibleRangeProvider): void { const startModelPosition = new Position(this.modelLineNumber, this.distanceToModelLineStart + 1); - const endModelPosition = new Position(this.modelLineNumber, this._context.viewModel.getModelLineMaxColumn(this.modelLineNumber) - this.distanceToModelLineEnd); + const endModelPosition = new Position(this.modelLineNumber, this._context.viewModel.model.getLineMaxColumn(this.modelLineNumber) - this.distanceToModelLineEnd); this.startPosition = this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(startModelPosition); this.endPosition = this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(endModelPosition); @@ -174,7 +174,7 @@ export class TextAreaHandler extends ViewPart { const textAreaInputHost: ITextAreaInputHost = { getDataToCopy: (): ClipboardDataToCopy => { const rawTextToCopy = this._context.viewModel.getPlainTextToCopy(this._modelSelections, this._emptySelectionClipboard, platform.isWindows); - const newLineCharacter = this._context.viewModel.getEOL(); + const newLineCharacter = this._context.viewModel.model.getEOL(); const isFromEmptySelection = (this._emptySelectionClipboard && this._modelSelections.length === 1 && this._modelSelections[0].isEmpty()); const multicursorText = (Array.isArray(rawTextToCopy) ? rawTextToCopy : null); @@ -340,8 +340,8 @@ export class TextAreaHandler extends ViewPart { const tabOffset2 = lineTextAfterSelection.indexOf('\t'); const desiredVisibleAfterCharCount = (tabOffset2 === -1 ? lineTextAfterSelection.length : lineTextAfterSelection.length - tabOffset2 - 1); const endModelPosition = modelSelection.getEndPosition(); - const visibleAfterCharCount = Math.min(this._context.viewModel.getModelLineMaxColumn(endModelPosition.lineNumber) - endModelPosition.column, desiredVisibleAfterCharCount); - const distanceToModelLineEnd = this._context.viewModel.getModelLineMaxColumn(endModelPosition.lineNumber) - endModelPosition.column - visibleAfterCharCount; + const visibleAfterCharCount = Math.min(this._context.viewModel.model.getLineMaxColumn(endModelPosition.lineNumber) - endModelPosition.column, desiredVisibleAfterCharCount); + const distanceToModelLineEnd = this._context.viewModel.model.getLineMaxColumn(endModelPosition.lineNumber) - endModelPosition.column - visibleAfterCharCount; return { distanceToModelLineEnd }; })(); diff --git a/src/vs/editor/browser/view/view.ts b/src/vs/editor/browser/view/view.ts index c124fcd30b8..865da4c272a 100644 --- a/src/vs/editor/browser/view/view.ts +++ b/src/vs/editor/browser/view/view.ts @@ -423,15 +423,15 @@ export class View extends ViewEventHandler { } public restoreState(scrollPosition: { scrollLeft: number; scrollTop: number; }): void { - this._context.viewModel.setScrollPosition({ scrollTop: scrollPosition.scrollTop }, ScrollType.Immediate); + this._context.viewModel.viewLayout.setScrollPosition({ scrollTop: scrollPosition.scrollTop }, ScrollType.Immediate); this._context.viewModel.tokenizeViewport(); this._renderNow(); this._viewLines.updateLineWidths(); - this._context.viewModel.setScrollPosition({ scrollLeft: scrollPosition.scrollLeft }, ScrollType.Immediate); + this._context.viewModel.viewLayout.setScrollPosition({ scrollLeft: scrollPosition.scrollLeft }, ScrollType.Immediate); } public getOffsetForColumn(modelLineNumber: number, modelColumn: number): number { - const modelPosition = this._context.viewModel.validateModelPosition({ + const modelPosition = this._context.viewModel.model.validatePosition({ lineNumber: modelLineNumber, column: modelColumn }); diff --git a/src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts b/src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts index 519c9836048..001546deff2 100644 --- a/src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts +++ b/src/vs/editor/browser/viewParts/contentWidgets/contentWidgets.ts @@ -257,7 +257,7 @@ class Widget { if (this._range) { // Do not trust that widgets give a valid position - const validModelRange = this._context.viewModel.validateModelRange(this._range); + const validModelRange = this._context.viewModel.model.validateRange(this._range); if (this._context.viewModel.coordinatesConverter.modelPositionIsVisible(validModelRange.getStartPosition()) || this._context.viewModel.coordinatesConverter.modelPositionIsVisible(validModelRange.getEndPosition())) { this._viewRange = this._context.viewModel.coordinatesConverter.convertModelRangeToViewRange(validModelRange); } diff --git a/src/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.ts b/src/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.ts index e61e0a1a64a..76c9b209d0d 100644 --- a/src/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.ts +++ b/src/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.ts @@ -90,7 +90,7 @@ export class EditorScrollbar extends ViewPart { } } - this._context.viewModel.setScrollPosition(newScrollPosition, ScrollType.Immediate); + this._context.viewModel.viewLayout.setScrollPosition(newScrollPosition, ScrollType.Immediate); }; // I've seen this happen both on the view dom node & on the lines content dom node. diff --git a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts index 52d947a7177..97d48c7a016 100644 --- a/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts +++ b/src/vs/editor/browser/viewParts/indentGuides/indentGuides.ts @@ -191,7 +191,7 @@ export class IndentGuidesOverlay extends DynamicViewOverlay { activeIndentLevel = activeIndentInfo.indent; } - const { indentSize } = this._context.viewModel.getTextModelOptions(); + const { indentSize } = this._context.viewModel.model.getOptions(); const result: IndentGuide[][] = []; for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) { diff --git a/src/vs/editor/browser/viewParts/lines/viewLines.ts b/src/vs/editor/browser/viewParts/lines/viewLines.ts index da550c53b18..881a41ffe5d 100644 --- a/src/vs/editor/browser/viewParts/lines/viewLines.ts +++ b/src/vs/editor/browser/viewParts/lines/viewLines.ts @@ -289,7 +289,7 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost, const scrollTopDelta = Math.abs(this._context.viewLayout.getCurrentScrollTop() - newScrollPosition.scrollTop); const scrollType = (scrollTopDelta <= this._lineHeight ? ScrollType.Immediate : e.scrollType); - this._context.viewModel.setScrollPosition(newScrollPosition, scrollType); + this._context.viewModel.viewLayout.setScrollPosition(newScrollPosition, scrollType); return true; } @@ -314,7 +314,7 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost, return this._visibleLines.onTokensChanged(e); } public override onZonesChanged(e: viewEvents.ViewZonesChangedEvent): boolean { - this._context.viewModel.setMaxLineWidth(this._maxLineWidth); + this._context.viewModel.viewLayout.setMaxLineWidth(this._maxLineWidth); return this._visibleLines.onZonesChanged(e); } public override onThemeChanged(e: viewEvents.ViewThemeChangedEvent): boolean { @@ -594,7 +594,7 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost, this._ensureMaxLineWidth(newScrollLeft.maxHorizontalOffset); } // set `scrollLeft` - this._context.viewModel.setScrollPosition({ + this._context.viewModel.viewLayout.setScrollPosition({ scrollLeft: newScrollLeft.scrollLeft }, horizontalRevealRequest.scrollType); } @@ -633,7 +633,7 @@ export class ViewLines extends ViewPart implements IVisibleLinesHost, const iLineWidth = Math.ceil(lineWidth); if (this._maxLineWidth < iLineWidth) { this._maxLineWidth = iLineWidth; - this._context.viewModel.setMaxLineWidth(this._maxLineWidth); + this._context.viewModel.viewLayout.setMaxLineWidth(this._maxLineWidth); } } diff --git a/src/vs/editor/browser/viewParts/minimap/minimap.ts b/src/vs/editor/browser/viewParts/minimap/minimap.ts index e49b5de20fa..d4a8dcf9364 100644 --- a/src/vs/editor/browser/viewParts/minimap/minimap.ts +++ b/src/vs/editor/browser/viewParts/minimap/minimap.ts @@ -1036,7 +1036,7 @@ export class Minimap extends ViewPart implements IMinimapModel { } public getOptions(): TextModelResolvedOptions { - return this._context.viewModel.getTextModelOptions(); + return this._context.viewModel.model.getOptions(); } public revealLineNumber(lineNumber: number): void { @@ -1053,7 +1053,7 @@ export class Minimap extends ViewPart implements IMinimapModel { } public setScrollTop(scrollTop: number): void { - this._context.viewModel.setScrollPosition({ + this._context.viewModel.viewLayout.setScrollPosition({ scrollTop: scrollTop }, ScrollType.Immediate); } diff --git a/src/vs/editor/browser/viewParts/rulers/rulers.ts b/src/vs/editor/browser/viewParts/rulers/rulers.ts index 62ebe9a816f..2f3b0456e4d 100644 --- a/src/vs/editor/browser/viewParts/rulers/rulers.ts +++ b/src/vs/editor/browser/viewParts/rulers/rulers.ts @@ -64,7 +64,7 @@ export class Rulers extends ViewPart { } if (currentCount < desiredCount) { - const { tabSize } = this._context.viewModel.getTextModelOptions(); + const { tabSize } = this._context.viewModel.model.getOptions(); const rulerWidth = tabSize; let addCount = desiredCount - currentCount; while (addCount > 0) { diff --git a/src/vs/editor/browser/viewParts/viewZones/viewZones.ts b/src/vs/editor/browser/viewParts/viewZones/viewZones.ts index bebbde955e0..0dddbc9993b 100644 --- a/src/vs/editor/browser/viewParts/viewZones/viewZones.ts +++ b/src/vs/editor/browser/viewParts/viewZones/viewZones.ts @@ -158,30 +158,30 @@ export class ViewZones extends ViewPart { let zoneAfterModelPosition: Position; if (typeof zone.afterColumn !== 'undefined') { - zoneAfterModelPosition = this._context.viewModel.validateModelPosition({ + zoneAfterModelPosition = this._context.viewModel.model.validatePosition({ lineNumber: zone.afterLineNumber, column: zone.afterColumn }); } else { - const validAfterLineNumber = this._context.viewModel.validateModelPosition({ + const validAfterLineNumber = this._context.viewModel.model.validatePosition({ lineNumber: zone.afterLineNumber, column: 1 }).lineNumber; zoneAfterModelPosition = new Position( validAfterLineNumber, - this._context.viewModel.getModelLineMaxColumn(validAfterLineNumber) + this._context.viewModel.model.getLineMaxColumn(validAfterLineNumber) ); } let zoneBeforeModelPosition: Position; - if (zoneAfterModelPosition.column === this._context.viewModel.getModelLineMaxColumn(zoneAfterModelPosition.lineNumber)) { - zoneBeforeModelPosition = this._context.viewModel.validateModelPosition({ + if (zoneAfterModelPosition.column === this._context.viewModel.model.getLineMaxColumn(zoneAfterModelPosition.lineNumber)) { + zoneBeforeModelPosition = this._context.viewModel.model.validatePosition({ lineNumber: zoneAfterModelPosition.lineNumber + 1, column: 1 }); } else { - zoneBeforeModelPosition = this._context.viewModel.validateModelPosition({ + zoneBeforeModelPosition = this._context.viewModel.model.validatePosition({ lineNumber: zoneAfterModelPosition.lineNumber, column: zoneAfterModelPosition.column + 1 }); diff --git a/src/vs/editor/browser/widget/codeEditorWidget.ts b/src/vs/editor/browser/widget/codeEditorWidget.ts index 5097e371411..a877bf991ae 100644 --- a/src/vs/editor/browser/widget/codeEditorWidget.ts +++ b/src/vs/editor/browser/widget/codeEditorWidget.ts @@ -902,7 +902,7 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE if (typeof newScrollLeft !== 'number') { throw new Error('Invalid arguments'); } - this._modelData.viewModel.setScrollPosition({ + this._modelData.viewModel.viewLayout.setScrollPosition({ scrollLeft: newScrollLeft }, scrollType); } @@ -913,7 +913,7 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE if (typeof newScrollTop !== 'number') { throw new Error('Invalid arguments'); } - this._modelData.viewModel.setScrollPosition({ + this._modelData.viewModel.viewLayout.setScrollPosition({ scrollTop: newScrollTop }, scrollType); } @@ -921,7 +921,7 @@ export class CodeEditorWidget extends Disposable implements editorBrowser.ICodeE if (!this._modelData) { return; } - this._modelData.viewModel.setScrollPosition(position, scrollType); + this._modelData.viewModel.viewLayout.setScrollPosition(position, scrollType); } public saveViewState(): editorCommon.ICodeEditorViewState | null { diff --git a/src/vs/editor/common/viewLayout/viewLayout.ts b/src/vs/editor/common/viewLayout/viewLayout.ts index 8d6891fd6ad..63f629c23b3 100644 --- a/src/vs/editor/common/viewLayout/viewLayout.ts +++ b/src/vs/editor/common/viewLayout/viewLayout.ts @@ -355,7 +355,7 @@ export class ViewLayout extends Disposable implements IViewLayout { }; } - // ---- IVerticalLayoutProvider + // ---- public changeWhitespace(callback: (accessor: IWhitespaceChangeAccessor) => void): boolean { const hadAChange = this._linesLayout.changeWhitespace(callback); if (hadAChange) { @@ -406,7 +406,7 @@ export class ViewLayout extends Disposable implements IViewLayout { return this._linesLayout.getWhitespaces(); } - // ---- IScrollingProvider + // ---- public getContentWidth(): number { const scrollDimensions = this._scrollable.getScrollDimensions(); diff --git a/src/vs/editor/common/viewModel.ts b/src/vs/editor/common/viewModel.ts index 2e3a46ff4c5..001dffcc47b 100644 --- a/src/vs/editor/common/viewModel.ts +++ b/src/vs/editor/common/viewModel.ts @@ -9,9 +9,9 @@ import { CursorConfiguration, CursorState, EditOperationType, IColumnSelectData, import { CursorChangeReason } from 'vs/editor/common/cursorEvents'; import { IViewLineTokens } from 'vs/editor/common/tokens/lineTokens'; import { IPosition, Position } from 'vs/editor/common/core/position'; -import { IRange, Range } from 'vs/editor/common/core/range'; +import { Range } from 'vs/editor/common/core/range'; import { INewScrollPosition, ScrollType } from 'vs/editor/common/editorCommon'; -import { EndOfLinePreference, IModelDecorationOptions, ITextModel, PositionAffinity, TextModelResolvedOptions } from 'vs/editor/common/model'; +import { EndOfLinePreference, IModelDecorationOptions, ITextModel, PositionAffinity } from 'vs/editor/common/model'; import { BracketGuideOptions, IActiveIndentGuideInfo, IndentGuide } from 'vs/editor/common/textModelGuides'; import { EditorTheme } from 'vs/editor/common/viewContext'; import { VerticalRevealType } from 'vs/editor/common/viewEvents'; @@ -50,7 +50,6 @@ export interface IViewModel extends ICursorSimpleModel { getCompletelyVisibleViewRange(): Range; getCompletelyVisibleViewRangeAtScrollTop(scrollTop: number): Range; - getTextModelOptions(): TextModelResolvedOptions; getLineCount(): number; getLineContent(lineNumber: number): string; getLineLength(lineNumber: number): number; @@ -68,21 +67,10 @@ export interface IViewModel extends ICursorSimpleModel { getInjectedTextAt(viewPosition: Position): InjectedText | null; - getModelLineMaxColumn(modelLineNumber: number): number; - validateModelPosition(modelPosition: IPosition): Position; - validateModelRange(range: IRange): Range; - deduceModelPositionRelativeToViewPosition(viewAnchorPosition: Position, deltaOffset: number, lineFeedCnt: number): Position; - getEOL(): string; getPlainTextToCopy(modelRanges: Range[], emptySelectionClipboard: boolean, forceCRLF: boolean): string | string[]; getRichTextToCopy(modelRanges: Range[], emptySelectionClipboard: boolean): { html: string, mode: string } | null; - //#region model - - pushStackElement(): void; - - //#endregion - createLineBreaksComputer(): ILineBreaksComputer; //#region cursor @@ -102,13 +90,7 @@ export interface IViewModel extends ICursorSimpleModel { //#endregion //#region viewLayout - getVerticalOffsetForLineNumber(viewLineNumber: number): number; - getScrollTop(): number; - setScrollTop(newScrollTop: number, scrollType: ScrollType): void; - setScrollPosition(position: INewScrollPosition, type: ScrollType): void; - deltaScrollNow(deltaScrollLeft: number, deltaScrollTop: number): void; changeWhitespace(callback: (accessor: IWhitespaceChangeAccessor) => void): void; - setMaxLineWidth(maxLineWidth: number): void; //#endregion } @@ -125,8 +107,13 @@ export interface IViewLayout { getFutureViewport(): Viewport; + setScrollPosition(position: INewScrollPosition, type: ScrollType): void; + deltaScrollNow(deltaScrollLeft: number, deltaScrollTop: number): void; + validateScrollPosition(scrollPosition: INewScrollPosition): IScrollPosition; + setMaxLineWidth(maxLineWidth: number): void; + getLinesViewportData(): IPartialViewLinesViewportData; getLinesViewportDataAtScrollTop(scrollTop: number): IPartialViewLinesViewportData; getWhitespaces(): IEditorWhitespace[]; diff --git a/src/vs/editor/common/viewModel/viewModelImpl.ts b/src/vs/editor/common/viewModel/viewModelImpl.ts index ec89ba99008..ad02a9d2b0c 100644 --- a/src/vs/editor/common/viewModel/viewModelImpl.ts +++ b/src/vs/editor/common/viewModel/viewModelImpl.ts @@ -15,11 +15,11 @@ import { CursorsController } from 'vs/editor/common/cursor/cursor'; import { CursorConfiguration, CursorState, EditOperationType, IColumnSelectData, PartialCursorState } from 'vs/editor/common/cursorCommon'; import { CursorChangeReason } from 'vs/editor/common/cursorEvents'; import { IPosition, Position } from 'vs/editor/common/core/position'; -import { IRange, Range } from 'vs/editor/common/core/range'; +import { Range } from 'vs/editor/common/core/range'; import { ISelection, Selection } from 'vs/editor/common/core/selection'; -import { ICommand, ICursorState, INewScrollPosition, IViewState, ScrollType } from 'vs/editor/common/editorCommon'; +import { ICommand, ICursorState, IViewState, ScrollType } from 'vs/editor/common/editorCommon'; import { IEditorConfiguration } from 'vs/editor/common/config/editorConfiguration'; -import { EndOfLinePreference, ICursorStateComputer, IIdentifiedSingleEditOperation, ITextModel, PositionAffinity, TextModelResolvedOptions, TrackedRangeStickiness } from 'vs/editor/common/model'; +import { EndOfLinePreference, ICursorStateComputer, IIdentifiedSingleEditOperation, ITextModel, PositionAffinity, TrackedRangeStickiness } from 'vs/editor/common/model'; import { IActiveIndentGuideInfo, BracketGuideOptions, IndentGuide } from 'vs/editor/common/textModelGuides'; import { ModelDecorationMinimapOptions, ModelDecorationOptions, ModelDecorationOverviewRulerOptions } from 'vs/editor/common/model/textModel'; import * as textModelEvents from 'vs/editor/common/textModelEvents'; @@ -605,10 +605,6 @@ export class ViewModel extends Disposable implements IViewModel { return this.model.getOptions().tabSize; } - public getTextModelOptions(): TextModelResolvedOptions { - return this.model.getOptions(); - } - public getLineCount(): number { return this._lines.getViewLineCount(); } @@ -767,18 +763,6 @@ export class ViewModel extends Disposable implements IViewModel { return this.model.getValueInRange(modelRange, eol); } - public getModelLineMaxColumn(modelLineNumber: number): number { - return this.model.getLineMaxColumn(modelLineNumber); - } - - public validateModelPosition(position: IPosition): Position { - return this.model.validatePosition(position); - } - - public validateModelRange(range: IRange): Range { - return this.model.validateRange(range); - } - public deduceModelPositionRelativeToViewPosition(viewAnchorPosition: Position, deltaOffset: number, lineFeedCnt: number): Position { const modelAnchor = this.coordinatesConverter.convertViewPositionToModelPosition(viewAnchorPosition); if (this.model.getEOL().length === 2) { @@ -795,10 +779,6 @@ export class ViewModel extends Disposable implements IViewModel { return this.model.getPositionAt(resultOffset); } - public getEOL(): string { - return this.model.getEOL(); - } - public getPlainTextToCopy(modelRanges: Range[], emptySelectionClipboard: boolean, forceCRLF: boolean): string | string[] { const newLineCharacter = forceCRLF ? '\r\n' : this.model.getEOL(); @@ -956,14 +936,6 @@ export class ViewModel extends Disposable implements IViewModel { return result; } - //#region model - - public pushStackElement(): void { - this.model.pushStackElement(); - } - - //#endregion - //#region cursor operations public getPrimaryCursorState(): CursorState { @@ -1069,21 +1041,6 @@ export class ViewModel extends Disposable implements IViewModel { //#endregion //#region viewLayout - public getVerticalOffsetForLineNumber(viewLineNumber: number): number { - return this.viewLayout.getVerticalOffsetForLineNumber(viewLineNumber); - } - public getScrollTop(): number { - return this.viewLayout.getCurrentScrollTop(); - } - public setScrollTop(newScrollTop: number, scrollType: ScrollType): void { - this.viewLayout.setScrollPosition({ scrollTop: newScrollTop }, scrollType); - } - public setScrollPosition(position: INewScrollPosition, type: ScrollType): void { - this.viewLayout.setScrollPosition(position, type); - } - public deltaScrollNow(deltaScrollLeft: number, deltaScrollTop: number): void { - this.viewLayout.deltaScrollNow(deltaScrollLeft, deltaScrollTop); - } public changeWhitespace(callback: (accessor: IWhitespaceChangeAccessor) => void): void { const hadAChange = this.viewLayout.changeWhitespace(callback); if (hadAChange) { @@ -1091,9 +1048,6 @@ export class ViewModel extends Disposable implements IViewModel { this._eventDispatcher.emitOutgoingEvent(new ViewZonesChangedEvent()); } } - public setMaxLineWidth(maxLineWidth: number): void { - this.viewLayout.setMaxLineWidth(maxLineWidth); - } //#endregion private _withViewEventsCollector(callback: (eventsCollector: ViewModelEventsCollector) => T): T { diff --git a/src/vs/editor/contrib/multicursor/browser/multicursor.ts b/src/vs/editor/contrib/multicursor/browser/multicursor.ts index 4a76d9daaf7..c14b4a43c63 100644 --- a/src/vs/editor/contrib/multicursor/browser/multicursor.ts +++ b/src/vs/editor/contrib/multicursor/browser/multicursor.ts @@ -80,7 +80,7 @@ export class InsertCursorAbove extends EditorAction { return; } - viewModel.pushStackElement(); + viewModel.model.pushStackElement(); const previousCursorState = viewModel.getCursorStates(); viewModel.setCursorStates( args.source, @@ -133,7 +133,7 @@ export class InsertCursorBelow extends EditorAction { return; } - viewModel.pushStackElement(); + viewModel.model.pushStackElement(); const previousCursorState = viewModel.getCursorStates(); viewModel.setCursorStates( args.source,