diff --git a/build/monaco/monaco.d.ts.recipe b/build/monaco/monaco.d.ts.recipe index 8cec618ef9e..7d3afa09a78 100644 --- a/build/monaco/monaco.d.ts.recipe +++ b/build/monaco/monaco.d.ts.recipe @@ -55,7 +55,7 @@ declare namespace monaco { declare namespace monaco.editor { #include(vs/editor/browser/widget/diffNavigator): IDiffNavigator -#includeAll(vs/editor/standalone/browser/standaloneEditor;modes.=>languages.;editorCommon.=>): +#includeAll(vs/editor/standalone/browser/standaloneEditor): #include(vs/editor/standalone/common/standaloneTheme): BuiltinTheme, IStandaloneThemeData, IColors #include(vs/editor/common/languages/supports/tokenization): ITokenThemeRule #include(vs/editor/browser/services/webWorker): MonacoWebWorker, IWebWorkerOptions @@ -70,12 +70,13 @@ export interface ICommandHandler { #include(vs/base/common/scrollable): ScrollbarVisibility #include(vs/platform/theme/common/themeService): ThemeColor #includeAll(vs/editor/common/model): IScrollEvent -#includeAll(vs/editor/common/editorCommon;editorOptions.=>): IScrollEvent +#include(vs/editor/common/diff/diffComputer): IChange, ICharChange, ILineChange +#includeAll(vs/editor/common/editorCommon): IScrollEvent #includeAll(vs/editor/common/model/textModelEvents): #includeAll(vs/editor/common/controller/cursorEvents): #include(vs/platform/accessibility/common/accessibility): AccessibilitySupport #includeAll(vs/editor/common/config/editorOptions): -#includeAll(vs/editor/browser/editorBrowser;editorCommon.=>;editorOptions.=>): +#includeAll(vs/editor/browser/editorBrowser;editorCommon.=>): #include(vs/editor/common/config/fontInfo): FontInfo, BareFontInfo //compatibility: @@ -85,9 +86,9 @@ export type IModel = ITextModel; declare namespace monaco.languages { -#includeAll(vs/editor/standalone/browser/standaloneLanguages;modes.=>;editorCommon.=>editor.;model.=>editor.;IMarkerData=>editor.IMarkerData): +#includeAll(vs/editor/standalone/browser/standaloneLanguages;languages.=>;editorCommon.=>editor.;model.=>editor.;IMarkerData=>editor.IMarkerData): #includeAll(vs/editor/common/languages/languageConfiguration): -#includeAll(vs/editor/common/languages;editorCommon.IRange=>IRange;editorCommon.IPosition=>IPosition;editorCommon.=>editor.;IMarkerData=>editor.IMarkerData;model.=>editor.): +#includeAll(vs/editor/common/languages;IMarkerData=>editor.IMarkerData;model.=>editor.): #include(vs/editor/common/services/language): ILanguageExtensionPoint #includeAll(vs/editor/standalone/common/monarch/monarchTypes): diff --git a/src/vs/editor/browser/editorBrowser.ts b/src/vs/editor/browser/editorBrowser.ts index de6eeb2007d..410086ce279 100644 --- a/src/vs/editor/browser/editorBrowser.ts +++ b/src/vs/editor/browser/editorBrowser.ts @@ -20,6 +20,7 @@ import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation import { IDiffComputationResult } from 'vs/editor/common/services/editorWorker'; import { IViewModel } from 'vs/editor/common/viewModel/viewModel'; import { InjectedText } from 'vs/editor/common/viewModel/modelLineProjectionData'; +import { ILineChange } from 'vs/editor/common/diff/diffComputer'; /** * A view zone is a full horizontal rectangle that 'pushes' text down. @@ -1129,7 +1130,7 @@ export interface IDiffEditor extends editorCommon.IEditor { /** * Get the computed diff information. */ - getLineChanges(): editorCommon.ILineChange[] | null; + getLineChanges(): ILineChange[] | null; /** * Get the computed diff information. diff --git a/src/vs/editor/browser/services/editorWorkerService.ts b/src/vs/editor/browser/services/editorWorkerService.ts index 31f2a5d8894..30dfc605828 100644 --- a/src/vs/editor/browser/services/editorWorkerService.ts +++ b/src/vs/editor/browser/services/editorWorkerService.ts @@ -10,7 +10,7 @@ import { SimpleWorkerClient, logOnceWebWorkerWarning, IWorkerClient } from 'vs/b import { DefaultWorkerFactory } from 'vs/base/browser/defaultWorkerFactory'; import { Position } from 'vs/editor/common/core/position'; import { IRange, Range } from 'vs/editor/common/core/range'; -import { IChange } from 'vs/editor/common/editorCommon'; +import { IChange } from 'vs/editor/common/diff/diffComputer'; import { ITextModel } from 'vs/editor/common/model'; import * as modes from 'vs/editor/common/languages'; import { ILanguageConfigurationService } from 'vs/editor/common/languages/languageConfigurationRegistry'; diff --git a/src/vs/editor/browser/widget/diffEditorWidget.ts b/src/vs/editor/browser/widget/diffEditorWidget.ts index 8e50d73f90a..df244343217 100644 --- a/src/vs/editor/browser/widget/diffEditorWidget.ts +++ b/src/vs/editor/browser/widget/diffEditorWidget.ts @@ -53,6 +53,7 @@ import { IViewLineTokens } from 'vs/editor/common/model/tokens/lineTokens'; import { FontInfo } from 'vs/editor/common/config/fontInfo'; import { registerIcon } from 'vs/platform/theme/common/iconRegistry'; import { ILineBreaksComputer } from 'vs/editor/common/viewModel/modelLineProjectionData'; +import { IChange, ILineChange } from 'vs/editor/common/diff/diffComputer'; export interface IDiffCodeEditorWidgetOptions { originalEditor?: ICodeEditorWidgetOptions; @@ -645,7 +646,7 @@ export class DiffEditorWidget extends Disposable implements editorBrowser.IDiffE return editorCommon.EditorType.IDiffEditor; } - public getLineChanges(): editorCommon.ILineChange[] | null { + public getLineChanges(): ILineChange[] | null { if (!this._diffComputationResult) { return null; } @@ -1250,7 +1251,7 @@ export class DiffEditorWidget extends Disposable implements editorBrowser.IDiffE this._doLayout(); } - private _getLineChangeAtOrBeforeLineNumber(lineNumber: number, startLineNumberExtractor: (lineChange: editorCommon.ILineChange) => number): editorCommon.ILineChange | null { + private _getLineChangeAtOrBeforeLineNumber(lineNumber: number, startLineNumberExtractor: (lineChange: ILineChange) => number): ILineChange | null { const lineChanges = (this._diffComputationResult ? this._diffComputationResult.changes : []); if (lineChanges.length === 0 || lineNumber < startLineNumberExtractor(lineChanges[0])) { // There are no changes or `lineNumber` is before the first change @@ -1375,7 +1376,7 @@ abstract class DiffEditorWidgetStyle extends Disposable { return hasChanges; } - public getEditorsDiffDecorations(lineChanges: editorCommon.ILineChange[], ignoreTrimWhitespace: boolean, renderIndicators: boolean, originalWhitespaces: IEditorWhitespace[], modifiedWhitespaces: IEditorWhitespace[]): IEditorsDiffDecorationsWithZones { + public getEditorsDiffDecorations(lineChanges: ILineChange[], ignoreTrimWhitespace: boolean, renderIndicators: boolean, originalWhitespaces: IEditorWhitespace[], modifiedWhitespaces: IEditorWhitespace[]): IEditorsDiffDecorationsWithZones { // Get view zones modifiedWhitespaces = modifiedWhitespaces.sort((a, b) => { return a.afterLineNumber - b.afterLineNumber; @@ -1403,9 +1404,9 @@ abstract class DiffEditorWidgetStyle extends Disposable { }; } - protected abstract _getViewZones(lineChanges: editorCommon.ILineChange[], originalForeignVZ: IEditorWhitespace[], modifiedForeignVZ: IEditorWhitespace[], renderIndicators: boolean): IEditorsZones; - protected abstract _getOriginalEditorDecorations(lineChanges: editorCommon.ILineChange[], ignoreTrimWhitespace: boolean, renderIndicators: boolean): IEditorDiffDecorations; - protected abstract _getModifiedEditorDecorations(lineChanges: editorCommon.ILineChange[], ignoreTrimWhitespace: boolean, renderIndicators: boolean): IEditorDiffDecorations; + protected abstract _getViewZones(lineChanges: ILineChange[], originalForeignVZ: IEditorWhitespace[], modifiedForeignVZ: IEditorWhitespace[], renderIndicators: boolean): IEditorsZones; + protected abstract _getOriginalEditorDecorations(lineChanges: ILineChange[], ignoreTrimWhitespace: boolean, renderIndicators: boolean): IEditorDiffDecorations; + protected abstract _getModifiedEditorDecorations(lineChanges: ILineChange[], ignoreTrimWhitespace: boolean, renderIndicators: boolean): IEditorDiffDecorations; public abstract setEnableSplitViewResizing(enableSplitViewResizing: boolean): void; public abstract layout(): number; @@ -1448,7 +1449,7 @@ class ForeignViewZonesIterator { abstract class ViewZonesComputer { constructor( - private readonly _lineChanges: editorCommon.ILineChange[], + private readonly _lineChanges: ILineChange[], private readonly _originalForeignVZ: IEditorWhitespace[], private readonly _modifiedForeignVZ: IEditorWhitespace[], protected readonly _originalEditor: CodeEditorWidget, @@ -1706,9 +1707,9 @@ abstract class ViewZonesComputer { protected abstract _createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion(): HTMLDivElement | null; - protected abstract _produceOriginalFromDiff(lineChange: editorCommon.ILineChange, lineChangeOriginalLength: number, lineChangeModifiedLength: number): IMyViewZone | null; + protected abstract _produceOriginalFromDiff(lineChange: ILineChange, lineChangeOriginalLength: number, lineChangeModifiedLength: number): IMyViewZone | null; - protected abstract _produceModifiedFromDiff(lineChange: editorCommon.ILineChange, lineChangeOriginalLength: number, lineChangeModifiedLength: number): IMyViewZone | null; + protected abstract _produceModifiedFromDiff(lineChange: ILineChange, lineChangeOriginalLength: number, lineChangeModifiedLength: number): IMyViewZone | null; } function createDecoration(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number, options: ModelDecorationOptions) { @@ -1877,14 +1878,14 @@ class DiffEditorWidgetSideBySide extends DiffEditorWidgetStyle implements IVerti return this._dataSource.getHeight(); } - protected _getViewZones(lineChanges: editorCommon.ILineChange[], originalForeignVZ: IEditorWhitespace[], modifiedForeignVZ: IEditorWhitespace[]): IEditorsZones { + protected _getViewZones(lineChanges: ILineChange[], originalForeignVZ: IEditorWhitespace[], modifiedForeignVZ: IEditorWhitespace[]): IEditorsZones { const originalEditor = this._dataSource.getOriginalEditor(); const modifiedEditor = this._dataSource.getModifiedEditor(); const c = new SideBySideViewZonesComputer(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor); return c.getViewZones(); } - protected _getOriginalEditorDecorations(lineChanges: editorCommon.ILineChange[], ignoreTrimWhitespace: boolean, renderIndicators: boolean): IEditorDiffDecorations { + protected _getOriginalEditorDecorations(lineChanges: ILineChange[], ignoreTrimWhitespace: boolean, renderIndicators: boolean): IEditorDiffDecorations { const originalEditor = this._dataSource.getOriginalEditor(); const overviewZoneColor = String(this._removeColor); @@ -1941,7 +1942,7 @@ class DiffEditorWidgetSideBySide extends DiffEditorWidgetStyle implements IVerti return result; } - protected _getModifiedEditorDecorations(lineChanges: editorCommon.ILineChange[], ignoreTrimWhitespace: boolean, renderIndicators: boolean): IEditorDiffDecorations { + protected _getModifiedEditorDecorations(lineChanges: ILineChange[], ignoreTrimWhitespace: boolean, renderIndicators: boolean): IEditorDiffDecorations { const modifiedEditor = this._dataSource.getModifiedEditor(); const overviewZoneColor = String(this._insertColor); @@ -2003,7 +2004,7 @@ class DiffEditorWidgetSideBySide extends DiffEditorWidgetStyle implements IVerti class SideBySideViewZonesComputer extends ViewZonesComputer { constructor( - lineChanges: editorCommon.ILineChange[], + lineChanges: ILineChange[], originalForeignVZ: IEditorWhitespace[], modifiedForeignVZ: IEditorWhitespace[], originalEditor: CodeEditorWidget, @@ -2016,7 +2017,7 @@ class SideBySideViewZonesComputer extends ViewZonesComputer { return null; } - protected _produceOriginalFromDiff(lineChange: editorCommon.ILineChange, lineChangeOriginalLength: number, lineChangeModifiedLength: number): IMyViewZone | null { + protected _produceOriginalFromDiff(lineChange: ILineChange, lineChangeOriginalLength: number, lineChangeModifiedLength: number): IMyViewZone | null { if (lineChangeModifiedLength > lineChangeOriginalLength) { return { afterLineNumber: Math.max(lineChange.originalStartLineNumber, lineChange.originalEndLineNumber), @@ -2027,7 +2028,7 @@ class SideBySideViewZonesComputer extends ViewZonesComputer { return null; } - protected _produceModifiedFromDiff(lineChange: editorCommon.ILineChange, lineChangeOriginalLength: number, lineChangeModifiedLength: number): IMyViewZone | null { + protected _produceModifiedFromDiff(lineChange: ILineChange, lineChangeOriginalLength: number, lineChangeModifiedLength: number): IMyViewZone | null { if (lineChangeOriginalLength > lineChangeModifiedLength) { return { afterLineNumber: Math.max(lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber), @@ -2060,14 +2061,14 @@ class DiffEditorWidgetInline extends DiffEditorWidgetStyle { // Nothing to do.. } - protected _getViewZones(lineChanges: editorCommon.ILineChange[], originalForeignVZ: IEditorWhitespace[], modifiedForeignVZ: IEditorWhitespace[], renderIndicators: boolean): IEditorsZones { + protected _getViewZones(lineChanges: ILineChange[], originalForeignVZ: IEditorWhitespace[], modifiedForeignVZ: IEditorWhitespace[], renderIndicators: boolean): IEditorsZones { const originalEditor = this._dataSource.getOriginalEditor(); const modifiedEditor = this._dataSource.getModifiedEditor(); const computer = new InlineViewZonesComputer(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor, renderIndicators); return computer.getViewZones(); } - protected _getOriginalEditorDecorations(lineChanges: editorCommon.ILineChange[], ignoreTrimWhitespace: boolean, renderIndicators: boolean): IEditorDiffDecorations { + protected _getOriginalEditorDecorations(lineChanges: ILineChange[], ignoreTrimWhitespace: boolean, renderIndicators: boolean): IEditorDiffDecorations { const overviewZoneColor = String(this._removeColor); const result: IEditorDiffDecorations = { @@ -2096,7 +2097,7 @@ class DiffEditorWidgetInline extends DiffEditorWidgetStyle { return result; } - protected _getModifiedEditorDecorations(lineChanges: editorCommon.ILineChange[], ignoreTrimWhitespace: boolean, renderIndicators: boolean): IEditorDiffDecorations { + protected _getModifiedEditorDecorations(lineChanges: ILineChange[], ignoreTrimWhitespace: boolean, renderIndicators: boolean): IEditorDiffDecorations { const modifiedEditor = this._dataSource.getModifiedEditor(); const overviewZoneColor = String(this._insertColor); @@ -2174,12 +2175,12 @@ class InlineViewZonesComputer extends ViewZonesComputer { private readonly _originalModel: ITextModel; private readonly _renderIndicators: boolean; - private readonly _pendingLineChange: editorCommon.ILineChange[]; + private readonly _pendingLineChange: ILineChange[]; private readonly _pendingViewZones: InlineModifiedViewZone[]; private readonly _lineBreaksComputer: ILineBreaksComputer; constructor( - lineChanges: editorCommon.ILineChange[], + lineChanges: ILineChange[], originalForeignVZ: IEditorWhitespace[], modifiedForeignVZ: IEditorWhitespace[], originalEditor: CodeEditorWidget, @@ -2206,7 +2207,7 @@ class InlineViewZonesComputer extends ViewZonesComputer { return result; } - protected _produceOriginalFromDiff(lineChange: editorCommon.ILineChange, lineChangeOriginalLength: number, lineChangeModifiedLength: number): IMyViewZone | null { + protected _produceOriginalFromDiff(lineChange: ILineChange, lineChangeOriginalLength: number, lineChangeModifiedLength: number): IMyViewZone | null { const marginDomNode = document.createElement('div'); marginDomNode.className = 'inline-added-margin-view-zone'; @@ -2218,7 +2219,7 @@ class InlineViewZonesComputer extends ViewZonesComputer { }; } - protected _produceModifiedFromDiff(lineChange: editorCommon.ILineChange, lineChangeOriginalLength: number, lineChangeModifiedLength: number): IMyViewZone | null { + protected _produceModifiedFromDiff(lineChange: ILineChange, lineChangeOriginalLength: number, lineChangeModifiedLength: number): IMyViewZone | null { const domNode = document.createElement('div'); domNode.className = `view-lines line-delete ${MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`; @@ -2467,11 +2468,11 @@ function validateDiffWordWrap(value: 'off' | 'on' | 'inherit' | undefined, defau return validateStringSetOption<'off' | 'on' | 'inherit'>(value, defaultValue, ['off', 'on', 'inherit']); } -function isChangeOrInsert(lineChange: editorCommon.IChange): boolean { +function isChangeOrInsert(lineChange: IChange): boolean { return lineChange.modifiedEndLineNumber > 0; } -function isChangeOrDelete(lineChange: editorCommon.IChange): boolean { +function isChangeOrDelete(lineChange: IChange): boolean { return lineChange.originalEndLineNumber > 0; } diff --git a/src/vs/editor/browser/widget/diffNavigator.ts b/src/vs/editor/browser/widget/diffNavigator.ts index 119aefef555..40c43bedcac 100644 --- a/src/vs/editor/browser/widget/diffNavigator.ts +++ b/src/vs/editor/browser/widget/diffNavigator.ts @@ -10,7 +10,8 @@ import * as objects from 'vs/base/common/objects'; import { IDiffEditor } from 'vs/editor/browser/editorBrowser'; import { ICursorPositionChangedEvent } from 'vs/editor/common/controller/cursorEvents'; import { Range } from 'vs/editor/common/core/range'; -import { ILineChange, ScrollType } from 'vs/editor/common/editorCommon'; +import { ILineChange } from 'vs/editor/common/diff/diffComputer'; +import { ScrollType } from 'vs/editor/common/editorCommon'; interface IDiffRange { diff --git a/src/vs/editor/browser/widget/diffReview.ts b/src/vs/editor/browser/widget/diffReview.ts index 0d13eb110d3..acd8eb7b8c9 100644 --- a/src/vs/editor/browser/widget/diffReview.ts +++ b/src/vs/editor/browser/widget/diffReview.ts @@ -20,7 +20,7 @@ import { DiffEditorWidget } from 'vs/editor/browser/widget/diffEditorWidget'; import { IComputedEditorOptions, EditorOption, EditorFontLigatures } from 'vs/editor/common/config/editorOptions'; import { LineTokens } from 'vs/editor/common/model/tokens/lineTokens'; import { Position } from 'vs/editor/common/core/position'; -import { ILineChange, ScrollType } from 'vs/editor/common/editorCommon'; +import { ScrollType } from 'vs/editor/common/editorCommon'; import { ITextModel, TextModelResolvedOptions } from 'vs/editor/common/model'; import { editorLineNumbers } from 'vs/editor/common/core/editorColorRegistry'; import { RenderLineInput, renderViewLine2 as renderViewLine } from 'vs/editor/common/viewLayout/viewLineRenderer'; @@ -34,6 +34,7 @@ import { Codicon } from 'vs/base/common/codicons'; import { registerIcon } from 'vs/platform/theme/common/iconRegistry'; import { ILanguageIdCodec } from 'vs/editor/common/languages'; import { ILanguageService } from 'vs/editor/common/services/language'; +import { ILineChange } from 'vs/editor/common/diff/diffComputer'; const DIFF_LINES_PADDING = 3; diff --git a/src/vs/editor/common/diff/diffComputer.ts b/src/vs/editor/common/diff/diffComputer.ts index e66fcbba6f6..67167b36ae3 100644 --- a/src/vs/editor/common/diff/diffComputer.ts +++ b/src/vs/editor/common/diff/diffComputer.ts @@ -5,10 +5,36 @@ import { IDiffChange, ISequence, LcsDiff, IDiffResult } from 'vs/base/common/diff/diff'; import * as strings from 'vs/base/common/strings'; -import { ICharChange, ILineChange } from 'vs/editor/common/editorCommon'; const MINIMUM_MATCHING_CHARACTER_LENGTH = 3; +/** + * A change + */ +export interface IChange { + readonly originalStartLineNumber: number; + readonly originalEndLineNumber: number; + readonly modifiedStartLineNumber: number; + readonly modifiedEndLineNumber: number; +} + +/** + * A character level change. + */ +export interface ICharChange extends IChange { + readonly originalStartColumn: number; + readonly originalEndColumn: number; + readonly modifiedStartColumn: number; + readonly modifiedEndColumn: number; +} + +/** + * A line change + */ +export interface ILineChange extends IChange { + readonly charChanges: ICharChange[] | undefined; +} + export interface IDiffComputerResult { quitEarly: boolean; changes: ILineChange[]; diff --git a/src/vs/editor/common/editorCommon.ts b/src/vs/editor/common/editorCommon.ts index ff079034d5a..d6742f1c004 100644 --- a/src/vs/editor/common/editorCommon.ts +++ b/src/vs/editor/common/editorCommon.ts @@ -121,31 +121,6 @@ export interface IDimension { height: number; } -/** - * A change - */ -export interface IChange { - readonly originalStartLineNumber: number; - readonly originalEndLineNumber: number; - readonly modifiedStartLineNumber: number; - readonly modifiedEndLineNumber: number; -} -/** - * A character level change. - */ -export interface ICharChange extends IChange { - readonly originalStartColumn: number; - readonly originalEndColumn: number; - readonly modifiedStartColumn: number; - readonly modifiedEndColumn: number; -} -/** - * A line change - */ -export interface ILineChange extends IChange { - readonly charChanges: ICharChange[] | undefined; -} - // --- view export interface IScrollEvent { diff --git a/src/vs/editor/common/services/editorSimpleWorker.ts b/src/vs/editor/common/services/editorSimpleWorker.ts index 9cdbc71ee5a..426dd7164a5 100644 --- a/src/vs/editor/common/services/editorSimpleWorker.ts +++ b/src/vs/editor/common/services/editorSimpleWorker.ts @@ -10,8 +10,7 @@ import { URI } from 'vs/base/common/uri'; import { IRequestHandler } from 'vs/base/common/worker/simpleWorker'; import { IPosition, Position } from 'vs/editor/common/core/position'; import { IRange, Range } from 'vs/editor/common/core/range'; -import { DiffComputer } from 'vs/editor/common/diff/diffComputer'; -import { IChange } from 'vs/editor/common/editorCommon'; +import { DiffComputer, IChange } from 'vs/editor/common/diff/diffComputer'; import { EndOfLineSequence, IWordAtPosition } from 'vs/editor/common/model'; import { IMirrorTextModel, IModelChangedEvent, MirrorTextModel as BaseMirrorModel } from 'vs/editor/common/model/mirrorTextModel'; import { ensureValidWordDefinition, getWordAtText } from 'vs/editor/common/model/wordHelper'; diff --git a/src/vs/editor/common/services/editorWorker.ts b/src/vs/editor/common/services/editorWorker.ts index 8f308ea364f..586c613bd09 100644 --- a/src/vs/editor/common/services/editorWorker.ts +++ b/src/vs/editor/common/services/editorWorker.ts @@ -5,7 +5,7 @@ import { URI } from 'vs/base/common/uri'; import { IRange } from 'vs/editor/common/core/range'; -import { IChange, ILineChange } from 'vs/editor/common/editorCommon'; +import { IChange, ILineChange } from 'vs/editor/common/diff/diffComputer'; import { IInplaceReplaceSupportResult, TextEdit } from 'vs/editor/common/languages'; import { UnicodeHighlighterOptions } from 'vs/editor/common/languages/unicodeTextModelHighlighter'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; diff --git a/src/vs/editor/standalone/browser/standaloneEditor.ts b/src/vs/editor/standalone/browser/standaloneEditor.ts index f4d225c26f3..285c9e603c4 100644 --- a/src/vs/editor/standalone/browser/standaloneEditor.ts +++ b/src/vs/editor/standalone/browser/standaloneEditor.ts @@ -16,7 +16,7 @@ import { BareFontInfo, FontInfo } from 'vs/editor/common/config/fontInfo'; import { Token } from 'vs/editor/common/core/token'; import { EditorType } from 'vs/editor/common/editorCommon'; import { FindMatch, ITextModel, TextModelResolvedOptions } from 'vs/editor/common/model'; -import * as modes from 'vs/editor/common/languages'; +import * as languages from 'vs/editor/common/languages'; import { ILanguageConfigurationService } from 'vs/editor/common/languages/languageConfigurationRegistry'; import { NullState, nullTokenize } from 'vs/editor/common/languages/nullMode'; import { ILanguageService } from 'vs/editor/common/services/language'; @@ -215,14 +215,14 @@ export function colorizeModelLine(model: ITextModel, lineNumber: number, tabSize /** * @internal */ -function getSafeTokenizationSupport(language: string): Omit { - const tokenizationSupport = modes.TokenizationRegistry.get(language); +function getSafeTokenizationSupport(language: string): Omit { + const tokenizationSupport = languages.TokenizationRegistry.get(language); if (tokenizationSupport) { return tokenizationSupport; } return { getInitialState: () => NullState, - tokenize: (line: string, hasEOL: boolean, state: modes.IState) => nullTokenize(language, state) + tokenize: (line: string, hasEOL: boolean, state: languages.IState) => nullTokenize(language, state) }; } @@ -231,7 +231,7 @@ function getSafeTokenizationSupport(language: string): Omitthis._actual, line, state); + return TokenizationSupportAdapter.adaptTokenize(this._languageId, <{ tokenize(line: string, state: languages.IState): ILineTokens; }>this._actual, line, state); } throw new Error('Not supported!'); } - public tokenizeEncoded(line: string, hasEOL: boolean, state: modes.IState): EncodedTokenizationResult { + public tokenizeEncoded(line: string, hasEOL: boolean, state: languages.IState): EncodedTokenizationResult { const result = this._actual.tokenizeEncoded(line, state); return new EncodedTokenizationResult(result.tokens, result.endState); } @@ -105,7 +105,7 @@ export class EncodedTokenizationSupportAdapter implements modes.ITokenizationSup /** * @internal */ -export class TokenizationSupportAdapter implements modes.ITokenizationSupport { +export class TokenizationSupportAdapter implements languages.ITokenizationSupport { constructor( private readonly _languageId: string, @@ -115,7 +115,7 @@ export class TokenizationSupportAdapter implements modes.ITokenizationSupport { ) { } - public getInitialState(): modes.IState { + public getInitialState(): languages.IState { return this._actual.getInitialState(); } @@ -142,11 +142,11 @@ export class TokenizationSupportAdapter implements modes.ITokenizationSupport { return result; } - public static adaptTokenize(language: string, actual: { tokenize(line: string, state: modes.IState): ILineTokens; }, line: string, state: modes.IState): TokenizationResult { + public static adaptTokenize(language: string, actual: { tokenize(line: string, state: languages.IState): ILineTokens; }, line: string, state: languages.IState): TokenizationResult { const actualResult = actual.tokenize(line, state); const tokens = TokenizationSupportAdapter._toClassicTokens(actualResult.tokens, language); - let endState: modes.IState; + let endState: languages.IState; // try to save an object if possible if (actualResult.endState.equals(state)) { endState = state; @@ -157,11 +157,11 @@ export class TokenizationSupportAdapter implements modes.ITokenizationSupport { return new TokenizationResult(tokens, endState); } - public tokenize(line: string, hasEOL: boolean, state: modes.IState): TokenizationResult { + public tokenize(line: string, hasEOL: boolean, state: languages.IState): TokenizationResult { return TokenizationSupportAdapter.adaptTokenize(this._languageId, this._actual, line, state); } - private _toBinaryTokens(languageIdCodec: modes.ILanguageIdCodec, tokens: IToken[]): Uint32Array { + private _toBinaryTokens(languageIdCodec: languages.ILanguageIdCodec, tokens: IToken[]): Uint32Array { const languageId = languageIdCodec.encodeLanguageId(this._languageId); const tokenTheme = this._standaloneThemeService.getColorTheme().tokenTheme; @@ -200,11 +200,11 @@ export class TokenizationSupportAdapter implements modes.ITokenizationSupport { return actualResult; } - public tokenizeEncoded(line: string, hasEOL: boolean, state: modes.IState): EncodedTokenizationResult { + public tokenizeEncoded(line: string, hasEOL: boolean, state: languages.IState): EncodedTokenizationResult { const actualResult = this._actual.tokenize(line, state); const tokens = this._toBinaryTokens(this._languageService.languageIdCodec, actualResult.tokens); - let endState: modes.IState; + let endState: languages.IState; // try to save an object if possible if (actualResult.endState.equals(state)) { endState = state; @@ -236,7 +236,7 @@ export interface ILineTokens { * The tokenization end state. * A pointer will be held to this and the object should not be modified by the tokenizer after the pointer is returned. */ - endState: modes.IState; + endState: languages.IState; } /** @@ -268,14 +268,14 @@ export interface IEncodedLineTokens { * The tokenization end state. * A pointer will be held to this and the object should not be modified by the tokenizer after the pointer is returned. */ - endState: modes.IState; + endState: languages.IState; } /** * A factory for token providers. */ export interface TokensProviderFactory { - create(): modes.ProviderResult; + create(): languages.ProviderResult; } /** @@ -285,11 +285,11 @@ export interface TokensProvider { /** * The initial state of a language. Will be the state passed in to tokenize the first line. */ - getInitialState(): modes.IState; + getInitialState(): languages.IState; /** * Tokenize a line given the state at the beginning of the line. */ - tokenize(line: string, state: modes.IState): ILineTokens; + tokenize(line: string, state: languages.IState): ILineTokens; } /** @@ -299,15 +299,15 @@ export interface EncodedTokensProvider { /** * The initial state of a language. Will be the state passed in to tokenize the first line. */ - getInitialState(): modes.IState; + getInitialState(): languages.IState; /** * Tokenize a line given the state at the beginning of the line. */ - tokenizeEncoded(line: string, state: modes.IState): IEncodedLineTokens; + tokenizeEncoded(line: string, state: languages.IState): IEncodedLineTokens; /** * Tokenize a line given the state at the beginning of the line. */ - tokenize?(line: string, state: modes.IState): ILineTokens; + tokenize?(line: string, state: languages.IState): ILineTokens; } function isATokensProvider(provider: TokensProvider | EncodedTokensProvider | IMonarchLanguage): provider is TokensProvider | EncodedTokensProvider { @@ -361,8 +361,8 @@ function createTokenizationSupportAdapter(languageId: string, provider: TokensPr * with a tokens provider set using `registerDocumentSemanticTokensProvider` or `registerDocumentRangeSemanticTokensProvider`. */ export function registerTokensProviderFactory(languageId: string, factory: TokensProviderFactory): IDisposable { - const adaptedFactory: modes.ITokenizationSupportFactory = { - createTokenizationSupport: async (): Promise => { + const adaptedFactory: languages.ITokenizationSupportFactory = { + createTokenizationSupport: async (): Promise => { const result = await Promise.resolve(factory.create()); if (!result) { return null; @@ -373,7 +373,7 @@ export function registerTokensProviderFactory(languageId: string, factory: Token return new MonarchTokenizer(StandaloneServices.get(ILanguageService), StandaloneServices.get(IStandaloneThemeService), languageId, compile(languageId, result)); } }; - return modes.TokenizationRegistry.registerFactory(languageId, adaptedFactory); + return languages.TokenizationRegistry.registerFactory(languageId, adaptedFactory); } /** @@ -390,7 +390,7 @@ export function setTokensProvider(languageId: string, provider: TokensProvider | if (isThenable(provider)) { return registerTokensProviderFactory(languageId, { create: () => provider }); } - return modes.TokenizationRegistry.register(languageId, createTokenizationSupportAdapter(languageId, provider)); + return languages.TokenizationRegistry.register(languageId, createTokenizationSupportAdapter(languageId, provider)); } /** @@ -406,39 +406,39 @@ export function setMonarchTokensProvider(languageId: string, languageDef: IMonar if (isThenable(languageDef)) { return registerTokensProviderFactory(languageId, { create: () => languageDef }); } - return modes.TokenizationRegistry.register(languageId, create(languageDef)); + return languages.TokenizationRegistry.register(languageId, create(languageDef)); } /** * Register a reference provider (used by e.g. reference search). */ -export function registerReferenceProvider(languageId: string, provider: modes.ReferenceProvider): IDisposable { - return modes.ReferenceProviderRegistry.register(languageId, provider); +export function registerReferenceProvider(languageId: string, provider: languages.ReferenceProvider): IDisposable { + return languages.ReferenceProviderRegistry.register(languageId, provider); } /** * Register a rename provider (used by e.g. rename symbol). */ -export function registerRenameProvider(languageId: string, provider: modes.RenameProvider): IDisposable { - return modes.RenameProviderRegistry.register(languageId, provider); +export function registerRenameProvider(languageId: string, provider: languages.RenameProvider): IDisposable { + return languages.RenameProviderRegistry.register(languageId, provider); } /** * Register a signature help provider (used by e.g. parameter hints). */ -export function registerSignatureHelpProvider(languageId: string, provider: modes.SignatureHelpProvider): IDisposable { - return modes.SignatureHelpProviderRegistry.register(languageId, provider); +export function registerSignatureHelpProvider(languageId: string, provider: languages.SignatureHelpProvider): IDisposable { + return languages.SignatureHelpProviderRegistry.register(languageId, provider); } /** * Register a hover provider (used by e.g. editor hover). */ -export function registerHoverProvider(languageId: string, provider: modes.HoverProvider): IDisposable { - return modes.HoverProviderRegistry.register(languageId, { - provideHover: (model: model.ITextModel, position: Position, token: CancellationToken): Promise => { +export function registerHoverProvider(languageId: string, provider: languages.HoverProvider): IDisposable { + return languages.HoverProviderRegistry.register(languageId, { + provideHover: (model: model.ITextModel, position: Position, token: CancellationToken): Promise => { const word = model.getWordAtPosition(position); - return Promise.resolve(provider.provideHover(model, position, token)).then((value): modes.Hover | undefined => { + return Promise.resolve(provider.provideHover(model, position, token)).then((value): languages.Hover | undefined => { if (!value) { return undefined; } @@ -457,59 +457,59 @@ export function registerHoverProvider(languageId: string, provider: modes.HoverP /** * Register a document symbol provider (used by e.g. outline). */ -export function registerDocumentSymbolProvider(languageId: string, provider: modes.DocumentSymbolProvider): IDisposable { - return modes.DocumentSymbolProviderRegistry.register(languageId, provider); +export function registerDocumentSymbolProvider(languageId: string, provider: languages.DocumentSymbolProvider): IDisposable { + return languages.DocumentSymbolProviderRegistry.register(languageId, provider); } /** * Register a document highlight provider (used by e.g. highlight occurrences). */ -export function registerDocumentHighlightProvider(languageId: string, provider: modes.DocumentHighlightProvider): IDisposable { - return modes.DocumentHighlightProviderRegistry.register(languageId, provider); +export function registerDocumentHighlightProvider(languageId: string, provider: languages.DocumentHighlightProvider): IDisposable { + return languages.DocumentHighlightProviderRegistry.register(languageId, provider); } /** * Register an linked editing range provider. */ -export function registerLinkedEditingRangeProvider(languageId: string, provider: modes.LinkedEditingRangeProvider): IDisposable { - return modes.LinkedEditingRangeProviderRegistry.register(languageId, provider); +export function registerLinkedEditingRangeProvider(languageId: string, provider: languages.LinkedEditingRangeProvider): IDisposable { + return languages.LinkedEditingRangeProviderRegistry.register(languageId, provider); } /** * Register a definition provider (used by e.g. go to definition). */ -export function registerDefinitionProvider(languageId: string, provider: modes.DefinitionProvider): IDisposable { - return modes.DefinitionProviderRegistry.register(languageId, provider); +export function registerDefinitionProvider(languageId: string, provider: languages.DefinitionProvider): IDisposable { + return languages.DefinitionProviderRegistry.register(languageId, provider); } /** * Register a implementation provider (used by e.g. go to implementation). */ -export function registerImplementationProvider(languageId: string, provider: modes.ImplementationProvider): IDisposable { - return modes.ImplementationProviderRegistry.register(languageId, provider); +export function registerImplementationProvider(languageId: string, provider: languages.ImplementationProvider): IDisposable { + return languages.ImplementationProviderRegistry.register(languageId, provider); } /** * Register a type definition provider (used by e.g. go to type definition). */ -export function registerTypeDefinitionProvider(languageId: string, provider: modes.TypeDefinitionProvider): IDisposable { - return modes.TypeDefinitionProviderRegistry.register(languageId, provider); +export function registerTypeDefinitionProvider(languageId: string, provider: languages.TypeDefinitionProvider): IDisposable { + return languages.TypeDefinitionProviderRegistry.register(languageId, provider); } /** * Register a code lens provider (used by e.g. inline code lenses). */ -export function registerCodeLensProvider(languageId: string, provider: modes.CodeLensProvider): IDisposable { - return modes.CodeLensProviderRegistry.register(languageId, provider); +export function registerCodeLensProvider(languageId: string, provider: languages.CodeLensProvider): IDisposable { + return languages.CodeLensProviderRegistry.register(languageId, provider); } /** * Register a code action provider (used by e.g. quick fix). */ export function registerCodeActionProvider(languageId: string, provider: CodeActionProvider, metadata?: CodeActionProviderMetadata): IDisposable { - return modes.CodeActionProviderRegistry.register(languageId, { + return languages.CodeActionProviderRegistry.register(languageId, { providedCodeActionKinds: metadata?.providedCodeActionKinds, - provideCodeActions: (model: model.ITextModel, range: Range, context: modes.CodeActionContext, token: CancellationToken): modes.ProviderResult => { + provideCodeActions: (model: model.ITextModel, range: Range, context: languages.CodeActionContext, token: CancellationToken): languages.ProviderResult => { const markerService = StandaloneServices.get(IMarkerService); const markers = markerService.read({ resource: model.uri }).filter(m => { return Range.areIntersectingOrTouching(m, range); @@ -523,64 +523,64 @@ export function registerCodeActionProvider(languageId: string, provider: CodeAct /** * Register a formatter that can handle only entire models. */ -export function registerDocumentFormattingEditProvider(languageId: string, provider: modes.DocumentFormattingEditProvider): IDisposable { - return modes.DocumentFormattingEditProviderRegistry.register(languageId, provider); +export function registerDocumentFormattingEditProvider(languageId: string, provider: languages.DocumentFormattingEditProvider): IDisposable { + return languages.DocumentFormattingEditProviderRegistry.register(languageId, provider); } /** * Register a formatter that can handle a range inside a model. */ -export function registerDocumentRangeFormattingEditProvider(languageId: string, provider: modes.DocumentRangeFormattingEditProvider): IDisposable { - return modes.DocumentRangeFormattingEditProviderRegistry.register(languageId, provider); +export function registerDocumentRangeFormattingEditProvider(languageId: string, provider: languages.DocumentRangeFormattingEditProvider): IDisposable { + return languages.DocumentRangeFormattingEditProviderRegistry.register(languageId, provider); } /** * Register a formatter than can do formatting as the user types. */ -export function registerOnTypeFormattingEditProvider(languageId: string, provider: modes.OnTypeFormattingEditProvider): IDisposable { - return modes.OnTypeFormattingEditProviderRegistry.register(languageId, provider); +export function registerOnTypeFormattingEditProvider(languageId: string, provider: languages.OnTypeFormattingEditProvider): IDisposable { + return languages.OnTypeFormattingEditProviderRegistry.register(languageId, provider); } /** * Register a link provider that can find links in text. */ -export function registerLinkProvider(languageId: string, provider: modes.LinkProvider): IDisposable { - return modes.LinkProviderRegistry.register(languageId, provider); +export function registerLinkProvider(languageId: string, provider: languages.LinkProvider): IDisposable { + return languages.LinkProviderRegistry.register(languageId, provider); } /** * Register a completion item provider (use by e.g. suggestions). */ -export function registerCompletionItemProvider(languageId: string, provider: modes.CompletionItemProvider): IDisposable { - return modes.CompletionProviderRegistry.register(languageId, provider); +export function registerCompletionItemProvider(languageId: string, provider: languages.CompletionItemProvider): IDisposable { + return languages.CompletionProviderRegistry.register(languageId, provider); } /** * Register a document color provider (used by Color Picker, Color Decorator). */ -export function registerColorProvider(languageId: string, provider: modes.DocumentColorProvider): IDisposable { - return modes.ColorProviderRegistry.register(languageId, provider); +export function registerColorProvider(languageId: string, provider: languages.DocumentColorProvider): IDisposable { + return languages.ColorProviderRegistry.register(languageId, provider); } /** * Register a folding range provider */ -export function registerFoldingRangeProvider(languageId: string, provider: modes.FoldingRangeProvider): IDisposable { - return modes.FoldingRangeProviderRegistry.register(languageId, provider); +export function registerFoldingRangeProvider(languageId: string, provider: languages.FoldingRangeProvider): IDisposable { + return languages.FoldingRangeProviderRegistry.register(languageId, provider); } /** * Register a declaration provider */ -export function registerDeclarationProvider(languageId: string, provider: modes.DeclarationProvider): IDisposable { - return modes.DeclarationProviderRegistry.register(languageId, provider); +export function registerDeclarationProvider(languageId: string, provider: languages.DeclarationProvider): IDisposable { + return languages.DeclarationProviderRegistry.register(languageId, provider); } /** * Register a selection range provider */ -export function registerSelectionRangeProvider(languageId: string, provider: modes.SelectionRangeProvider): IDisposable { - return modes.SelectionRangeRegistry.register(languageId, provider); +export function registerSelectionRangeProvider(languageId: string, provider: languages.SelectionRangeProvider): IDisposable { + return languages.SelectionRangeRegistry.register(languageId, provider); } /** @@ -590,8 +590,8 @@ export function registerSelectionRangeProvider(languageId: string, provider: mod * * For the best user experience, register both a semantic tokens provider and a top-down tokenizer. */ -export function registerDocumentSemanticTokensProvider(languageId: string, provider: modes.DocumentSemanticTokensProvider): IDisposable { - return modes.DocumentSemanticTokensProviderRegistry.register(languageId, provider); +export function registerDocumentSemanticTokensProvider(languageId: string, provider: languages.DocumentSemanticTokensProvider): IDisposable { + return languages.DocumentSemanticTokensProviderRegistry.register(languageId, provider); } /** @@ -601,22 +601,22 @@ export function registerDocumentSemanticTokensProvider(languageId: string, provi * * For the best user experience, register both a semantic tokens provider and a top-down tokenizer. */ -export function registerDocumentRangeSemanticTokensProvider(languageId: string, provider: modes.DocumentRangeSemanticTokensProvider): IDisposable { - return modes.DocumentRangeSemanticTokensProviderRegistry.register(languageId, provider); +export function registerDocumentRangeSemanticTokensProvider(languageId: string, provider: languages.DocumentRangeSemanticTokensProvider): IDisposable { + return languages.DocumentRangeSemanticTokensProviderRegistry.register(languageId, provider); } /** * Register an inline completions provider. */ -export function registerInlineCompletionsProvider(languageId: string, provider: modes.InlineCompletionsProvider): IDisposable { - return modes.InlineCompletionsProviderRegistry.register(languageId, provider); +export function registerInlineCompletionsProvider(languageId: string, provider: languages.InlineCompletionsProvider): IDisposable { + return languages.InlineCompletionsProviderRegistry.register(languageId, provider); } /** * Register an inlay hints provider. */ -export function registerInlayHintsProvider(languageId: string, provider: modes.InlayHintsProvider): IDisposable { - return modes.InlayHintsProviderRegistry.register(languageId, provider); +export function registerInlayHintsProvider(languageId: string, provider: languages.InlayHintsProvider): IDisposable { + return languages.InlayHintsProviderRegistry.register(languageId, provider); } /** @@ -644,12 +644,12 @@ export interface CodeActionProvider { /** * Provide commands for the given document and range. */ - provideCodeActions(model: model.ITextModel, range: Range, context: CodeActionContext, token: CancellationToken): modes.ProviderResult; + provideCodeActions(model: model.ITextModel, range: Range, context: CodeActionContext, token: CancellationToken): languages.ProviderResult; /** * Given a code action fill in the edit. Will only invoked when missing. */ - resolveCodeAction?(codeAction: modes.CodeAction, token: CancellationToken): modes.ProviderResult; + resolveCodeAction?(codeAction: languages.CodeAction, token: CancellationToken): languages.ProviderResult; } @@ -725,6 +725,6 @@ export function createMonacoLanguagesAPI(): typeof monaco.languages { InlineCompletionTriggerKind: standaloneEnums.InlineCompletionTriggerKind, // classes - FoldingRangeKind: modes.FoldingRangeKind, + FoldingRangeKind: languages.FoldingRangeKind, }; } diff --git a/src/vs/editor/test/common/diff/diffComputer.test.ts b/src/vs/editor/test/common/diff/diffComputer.test.ts index c63da46f810..88037f3cfa6 100644 --- a/src/vs/editor/test/common/diff/diffComputer.test.ts +++ b/src/vs/editor/test/common/diff/diffComputer.test.ts @@ -3,8 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import * as assert from 'assert'; -import { DiffComputer } from 'vs/editor/common/diff/diffComputer'; -import { IChange, ICharChange, ILineChange } from 'vs/editor/common/editorCommon'; +import { DiffComputer, IChange, ICharChange, ILineChange } from 'vs/editor/common/diff/diffComputer'; function extractCharChangeRepresentation(change: ICharChange, expectedChange: ICharChange | null): ICharChange { let hasOriginal = expectedChange && expectedChange.originalStartLineNumber > 0; diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index d71d3de3749..4e805673532 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -2088,6 +2088,32 @@ declare namespace monaco.editor { */ isAttachedToEditor(): boolean; } + /** + * A change + */ + export interface IChange { + readonly originalStartLineNumber: number; + readonly originalEndLineNumber: number; + readonly modifiedStartLineNumber: number; + readonly modifiedEndLineNumber: number; + } + + /** + * A character level change. + */ + export interface ICharChange extends IChange { + readonly originalStartColumn: number; + readonly originalEndColumn: number; + readonly modifiedStartColumn: number; + readonly modifiedEndColumn: number; + } + + /** + * A line change + */ + export interface ILineChange extends IChange { + readonly charChanges: ICharChange[] | undefined; + } /** * A builder and helper for edit operations for a command. @@ -2186,33 +2212,6 @@ declare namespace monaco.editor { height: number; } - /** - * A change - */ - export interface IChange { - readonly originalStartLineNumber: number; - readonly originalEndLineNumber: number; - readonly modifiedStartLineNumber: number; - readonly modifiedEndLineNumber: number; - } - - /** - * A character level change. - */ - export interface ICharChange extends IChange { - readonly originalStartColumn: number; - readonly originalEndColumn: number; - readonly modifiedStartColumn: number; - readonly modifiedEndColumn: number; - } - - /** - * A line change - */ - export interface ILineChange extends IChange { - readonly charChanges: ICharChange[] | undefined; - } - export interface IContentSizeChangedEvent { readonly contentWidth: number; readonly contentHeight: number; diff --git a/src/vs/workbench/api/browser/mainThreadEditors.ts b/src/vs/workbench/api/browser/mainThreadEditors.ts index 99fe9d8e332..adb91f79045 100644 --- a/src/vs/workbench/api/browser/mainThreadEditors.ts +++ b/src/vs/workbench/api/browser/mainThreadEditors.ts @@ -11,7 +11,7 @@ import { IBulkEditService, ResourceEdit, ResourceFileEdit, ResourceTextEdit } fr import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; import { IRange } from 'vs/editor/common/core/range'; import { ISelection } from 'vs/editor/common/core/selection'; -import { IDecorationOptions, IDecorationRenderOptions, ILineChange } from 'vs/editor/common/editorCommon'; +import { IDecorationOptions, IDecorationRenderOptions } from 'vs/editor/common/editorCommon'; import { ISingleEditOperation } from 'vs/editor/common/model'; import { CommandsRegistry } from 'vs/platform/commands/common/commands'; import { ITextEditorOptions, IResourceEditorInput, EditorActivation, EditorResolution } from 'vs/platform/editor/common/editor'; @@ -28,6 +28,7 @@ import { revive } from 'vs/base/common/marshalling'; import { ResourceNotebookCellEdit } from 'vs/workbench/contrib/bulkEdit/browser/bulkCellEdits'; import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; import { NotebookDto } from 'vs/workbench/api/browser/mainThreadNotebookDto'; +import { ILineChange } from 'vs/editor/common/diff/diffComputer'; export function reviveWorkspaceEditDto2(data: IWorkspaceEditDto | undefined): ResourceEdit[] { if (!data?.edits) { diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index b5bc807f568..a75a6099119 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -69,6 +69,7 @@ import { ILanguageStatus } from 'vs/workbench/services/languageStatus/common/lan import { CandidatePort } from 'vs/workbench/services/remote/common/remoteExplorerService'; import * as search from 'vs/workbench/services/search/common/search'; import { IWorkspaceSymbol } from 'vs/workbench/contrib/search/common/search'; +import { ILineChange } from 'vs/editor/common/diff/diffComputer'; export interface IEnvironment { isExtensionDevelopmentDebug: boolean; @@ -313,7 +314,7 @@ export interface MainThreadTextEditorsShape extends IDisposable { $trySetSelections(id: string, selections: ISelection[]): Promise; $tryApplyEdits(id: string, modelVersionId: number, edits: ISingleEditOperation[], opts: IApplyEditsOptions): Promise; $tryInsertSnippet(id: string, template: string, selections: readonly IRange[], opts: IUndoStopOptions): Promise; - $getDiffInformation(id: string): Promise; + $getDiffInformation(id: string): Promise; } export interface MainThreadTreeViewsShape extends IDisposable { diff --git a/src/vs/workbench/contrib/notebook/common/notebookCommon.ts b/src/vs/workbench/contrib/notebook/common/notebookCommon.ts index 8685972b3e1..8c89ae89b11 100644 --- a/src/vs/workbench/contrib/notebook/common/notebookCommon.ts +++ b/src/vs/workbench/contrib/notebook/common/notebookCommon.ts @@ -15,6 +15,7 @@ import { basename } from 'vs/base/common/path'; import { isWindows } from 'vs/base/common/platform'; import { ISplice } from 'vs/base/common/sequence'; import { URI, UriComponents } from 'vs/base/common/uri'; +import { ILineChange } from 'vs/editor/common/diff/diffComputer'; import * as editorCommon from 'vs/editor/common/editorCommon'; import { Command } from 'vs/editor/common/languages'; import { IAccessibilityInformation } from 'vs/platform/accessibility/common/accessibility'; @@ -903,7 +904,7 @@ export class CellSequence implements ISequence { export interface INotebookDiffResult { cellsDiff: IDiffResult, - linesDiff?: { originalCellhandle: number, modifiedCellhandle: number, lineChanges: editorCommon.ILineChange[]; }[]; + linesDiff?: { originalCellhandle: number, modifiedCellhandle: number, lineChanges: ILineChange[]; }[]; } export interface INotebookCellStatusBarItem { diff --git a/src/vs/workbench/contrib/notebook/common/services/notebookSimpleWorker.ts b/src/vs/workbench/contrib/notebook/common/services/notebookSimpleWorker.ts index 8cdd04fd116..1a98e97b930 100644 --- a/src/vs/workbench/contrib/notebook/common/services/notebookSimpleWorker.ts +++ b/src/vs/workbench/contrib/notebook/common/services/notebookSimpleWorker.ts @@ -218,7 +218,7 @@ export class NotebookEditorSimpleWorker implements IRequestHandler, IDisposable const diff = new LcsDiff(new CellSequence(original), new CellSequence(modified)); const diffResult = diff.ComputeDiff(false); - /* let cellLineChanges: { originalCellhandle: number, modifiedCellhandle: number, lineChanges: editorCommon.ILineChange[] }[] = []; + /* let cellLineChanges: { originalCellhandle: number, modifiedCellhandle: number, lineChanges: ILineChange[] }[] = []; diffResult.changes.forEach(change => { if (change.modifiedLength === 0) { diff --git a/src/vs/workbench/contrib/notebook/common/services/notebookWorkerService.ts b/src/vs/workbench/contrib/notebook/common/services/notebookWorkerService.ts index f85fd6f5cc9..0eecb6fe9df 100644 --- a/src/vs/workbench/contrib/notebook/common/services/notebookWorkerService.ts +++ b/src/vs/workbench/contrib/notebook/common/services/notebookWorkerService.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { URI } from 'vs/base/common/uri'; -import { ILineChange } from 'vs/editor/common/editorCommon'; +import { ILineChange } from 'vs/editor/common/diff/diffComputer'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { INotebookDiffResult } from 'vs/workbench/contrib/notebook/common/notebookCommon'; diff --git a/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts b/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts index 1f570c518d8..92ad52937ec 100644 --- a/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts +++ b/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts @@ -39,7 +39,7 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { basename, isEqualOrParent } from 'vs/base/common/resources'; import { MenuId, IMenuService, IMenu, MenuItemAction, MenuRegistry } from 'vs/platform/actions/common/actions'; import { createAndFillInActionBarActions } from 'vs/platform/actions/browser/menuEntryActionViewItem'; -import { IChange, IEditorModel, ScrollType, IEditorContribution, IDiffEditorModel } from 'vs/editor/common/editorCommon'; +import { IEditorModel, ScrollType, IEditorContribution, IDiffEditorModel } from 'vs/editor/common/editorCommon'; import { OverviewRulerLane, ITextModel, IModelDecorationOptions, MinimapPosition } from 'vs/editor/common/model'; import { sortedDiff } from 'vs/base/common/arrays'; import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; @@ -51,6 +51,7 @@ import { Codicon } from 'vs/base/common/codicons'; import { onUnexpectedError } from 'vs/base/common/errors'; import { TextCompareEditorActiveContext } from 'vs/workbench/common/editor'; import { IProgressService, ProgressLocation } from 'vs/platform/progress/common/progress'; +import { IChange } from 'vs/editor/common/diff/diffComputer'; class DiffActionRunner extends ActionRunner { diff --git a/src/vs/workbench/test/browser/workbenchTestServices.ts b/src/vs/workbench/test/browser/workbenchTestServices.ts index e9a7d76f647..3bb008b5aed 100644 --- a/src/vs/workbench/test/browser/workbenchTestServices.ts +++ b/src/vs/workbench/test/browser/workbenchTestServices.ts @@ -93,7 +93,7 @@ import { TestDialogService } from 'vs/platform/dialogs/test/common/testDialogSer import { CodeEditorService } from 'vs/workbench/services/editor/browser/codeEditorService'; import { EditorPart } from 'vs/workbench/browser/parts/editor/editorPart'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; -import { IChange, IDiffEditor, IEditor } from 'vs/editor/common/editorCommon'; +import { IDiffEditor, IEditor } from 'vs/editor/common/editorCommon'; import { IInputBox, IInputOptions, IPickOptions, IQuickInputButton, IQuickInputService, IQuickNavigateConfiguration, IQuickPick, IQuickPickItem, QuickPickInput } from 'vs/platform/quickinput/common/quickInput'; import { QuickInputService } from 'vs/workbench/services/quickinput/browser/quickInputService'; import { IListService } from 'vs/platform/list/browser/listService'; @@ -150,6 +150,7 @@ import { isValidBasename } from 'vs/base/common/extpath'; import { TestAccessibilityService } from 'vs/platform/accessibility/test/common/testAccessibilityService'; import { ILanguageFeatureDebounceService, LanguageFeatureDebounceService } from 'vs/editor/common/services/languageFeatureDebounce'; import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService'; +import { IChange } from 'vs/editor/common/diff/diffComputer'; export function createFileEditorInput(instantiationService: IInstantiationService, resource: URI): FileEditorInput { return instantiationService.createInstance(FileEditorInput, resource, undefined, undefined, undefined, undefined, undefined, undefined);