mirror of
https://github.com/microsoft/vscode.git
synced 2026-09-20 10:53:53 +01:00
Move change interfaces to diffComputer (#141174)
This commit is contained in:
@@ -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):
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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[];
|
||||
|
||||
@@ -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;
|
||||
|
||||
Vendored
+26
-27
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user