Move change interfaces to diffComputer (#141174)

This commit is contained in:
Alex Dima
2022-01-21 19:58:00 +01:00
parent aa46b739f0
commit df551b856e
21 changed files with 193 additions and 185 deletions
+6 -5
View File
@@ -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):
+2 -1
View File
@@ -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.
@@ -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';
@@ -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;
}
@@ -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 {
+2 -1
View File
@@ -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;
+27 -1
View File
@@ -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[];
-25
View File
@@ -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 {
@@ -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';
@@ -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';
@@ -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<modes.ITokenizationSupport, 'tokenizeEncoded'> {
const tokenizationSupport = modes.TokenizationRegistry.get(language);
function getSafeTokenizationSupport(language: string): Omit<languages.ITokenizationSupport, 'tokenizeEncoded'> {
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): Omit<modes.ITokenizationS
*/
export function tokenize(text: string, languageId: string): Token[][] {
// Needed in order to get the mode registered for subsequent look-ups
modes.TokenizationRegistry.getOrCreate(languageId);
languages.TokenizationRegistry.getOrCreate(languageId);
const tokenizationSupport = getSafeTokenizationSupport(languageId);
const lines = splitLines(text);
@@ -10,7 +10,7 @@ import { Position } from 'vs/editor/common/core/position';
import { Range } from 'vs/editor/common/core/range';
import { Token, TokenizationResult, EncodedTokenizationResult } from 'vs/editor/common/core/token';
import * as model from 'vs/editor/common/model';
import * as modes from 'vs/editor/common/languages';
import * as languages from 'vs/editor/common/languages';
import { LanguageConfiguration } from 'vs/editor/common/languages/languageConfiguration';
import { LanguageConfigurationRegistry } from 'vs/editor/common/languages/languageConfigurationRegistry';
import { ModesRegistry } from 'vs/editor/common/languages/modesRegistry';
@@ -75,7 +75,7 @@ export function setLanguageConfiguration(languageId: string, configuration: Lang
/**
* @internal
*/
export class EncodedTokenizationSupportAdapter implements modes.ITokenizationSupport {
export class EncodedTokenizationSupportAdapter implements languages.ITokenizationSupport {
private readonly _languageId: string;
private readonly _actual: EncodedTokensProvider;
@@ -85,18 +85,18 @@ export class EncodedTokenizationSupportAdapter implements modes.ITokenizationSup
this._actual = actual;
}
public getInitialState(): modes.IState {
public getInitialState(): languages.IState {
return this._actual.getInitialState();
}
public tokenize(line: string, hasEOL: boolean, state: modes.IState): TokenizationResult {
public tokenize(line: string, hasEOL: boolean, state: languages.IState): TokenizationResult {
if (typeof this._actual.tokenize === 'function') {
return TokenizationSupportAdapter.adaptTokenize(this._languageId, <{ tokenize(line: string, state: modes.IState): ILineTokens; }>this._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<TokensProvider | EncodedTokensProvider | IMonarchLanguage>;
create(): languages.ProviderResult<TokensProvider | EncodedTokensProvider | IMonarchLanguage>;
}
/**
@@ -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<modes.ITokenizationSupport | null> => {
const adaptedFactory: languages.ITokenizationSupportFactory = {
createTokenizationSupport: async (): Promise<languages.ITokenizationSupport | null> => {
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<TokensProvider | EncodedTokensProvider>(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<IMonarchLanguage>(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<modes.Hover | undefined> => {
export function registerHoverProvider(languageId: string, provider: languages.HoverProvider): IDisposable {
return languages.HoverProviderRegistry.register(languageId, {
provideHover: (model: model.ITextModel, position: Position, token: CancellationToken): Promise<languages.Hover | undefined> => {
const word = model.getWordAtPosition(position);
return Promise.resolve<modes.Hover | null | undefined>(provider.provideHover(model, position, token)).then((value): modes.Hover | undefined => {
return Promise.resolve<languages.Hover | null | undefined>(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<modes.CodeActionList> => {
provideCodeActions: (model: model.ITextModel, range: Range, context: languages.CodeActionContext, token: CancellationToken): languages.ProviderResult<languages.CodeActionList> => {
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<modes.CodeActionList>;
provideCodeActions(model: model.ITextModel, range: Range, context: CodeActionContext, token: CancellationToken): languages.ProviderResult<languages.CodeActionList>;
/**
* Given a code action fill in the edit. Will only invoked when missing.
*/
resolveCodeAction?(codeAction: modes.CodeAction, token: CancellationToken): modes.ProviderResult<modes.CodeAction>;
resolveCodeAction?(codeAction: languages.CodeAction, token: CancellationToken): languages.ProviderResult<languages.CodeAction>;
}
@@ -725,6 +725,6 @@ export function createMonacoLanguagesAPI(): typeof monaco.languages {
InlineCompletionTriggerKind: standaloneEnums.InlineCompletionTriggerKind,
// classes
FoldingRangeKind: modes.FoldingRangeKind,
FoldingRangeKind: languages.FoldingRangeKind,
};
}
@@ -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;
+26 -27
View File
@@ -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;
@@ -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) {
@@ -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<void>;
$tryApplyEdits(id: string, modelVersionId: number, edits: ISingleEditOperation[], opts: IApplyEditsOptions): Promise<boolean>;
$tryInsertSnippet(id: string, template: string, selections: readonly IRange[], opts: IUndoStopOptions): Promise<boolean>;
$getDiffInformation(id: string): Promise<editorCommon.ILineChange[]>;
$getDiffInformation(id: string): Promise<ILineChange[]>;
}
export interface MainThreadTreeViewsShape extends IDisposable {
@@ -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 {
@@ -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) {
@@ -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';
@@ -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 {
@@ -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);