提交 139a4a23 编写于 作者: A Alex Dima

Reduce usage of ICommonCodeEditor (#37834)

上级 2a8744fa
......@@ -5,9 +5,9 @@
'use strict';
import * as strings from 'vs/base/common/strings';
import { ICommonCodeEditor } from 'vs/editor/common/editorCommon';
import { Position } from 'vs/editor/common/core/position';
import { Range } from 'vs/editor/common/core/range';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
export const enum CodeEditorStateFlag {
Value = 1,
......@@ -26,7 +26,7 @@ export class EditorState {
private readonly scrollLeft: number;
private readonly scrollTop: number;
constructor(editor: ICommonCodeEditor, flags: number) {
constructor(editor: ICodeEditor, flags: number) {
this.flags = flags;
if ((this.flags & CodeEditorStateFlag.Value) !== 0) {
......@@ -67,7 +67,7 @@ export class EditorState {
return true;
}
public validate(editor: ICommonCodeEditor): boolean {
public validate(editor: ICodeEditor): boolean {
return this._equals(new EditorState(editor, this.flags));
}
}
......@@ -15,8 +15,9 @@ import { IFileService, IFileChange } from 'vs/platform/files/common/files';
import { EditOperation } from 'vs/editor/common/core/editOperation';
import { Range, IRange } from 'vs/editor/common/core/range';
import { Selection, ISelection } from 'vs/editor/common/core/selection';
import { IIdentifiedSingleEditOperation, IModel, EndOfLineSequence, ICommonCodeEditor } from 'vs/editor/common/editorCommon';
import { IIdentifiedSingleEditOperation, IModel, EndOfLineSequence } from 'vs/editor/common/editorCommon';
import { IProgressRunner } from 'vs/platform/progress/common/progress';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
export interface IResourceEdit {
resource: URI;
......@@ -297,14 +298,14 @@ export interface BulkEdit {
ariaMessage(): string;
}
export function bulkEdit(textModelResolverService: ITextModelService, editor: ICommonCodeEditor, edits: IResourceEdit[], fileService?: IFileService, progress: IProgressRunner = null): TPromise<any> {
export function bulkEdit(textModelResolverService: ITextModelService, editor: ICodeEditor, edits: IResourceEdit[], fileService?: IFileService, progress: IProgressRunner = null): TPromise<any> {
let bulk = createBulkEdit(textModelResolverService, editor, fileService);
bulk.add(edits);
bulk.progress(progress);
return bulk.finish();
}
export function createBulkEdit(textModelResolverService: ITextModelService, editor?: ICommonCodeEditor, fileService?: IFileService): BulkEdit {
export function createBulkEdit(textModelResolverService: ITextModelService, editor?: ICodeEditor, fileService?: IFileService): BulkEdit {
let all: IResourceEdit[] = [];
let recording = new ChangeRecorder(fileService).start();
......
......@@ -2082,17 +2082,6 @@ export var EditorType = {
IDiffEditor: 'vs.editor.IDiffEditor'
};
/**
*@internal
*/
export function isCommonCodeEditor(thing: any): thing is ICommonCodeEditor {
if (thing && typeof (<ICommonCodeEditor>thing).getEditorType === 'function') {
return (<ICommonCodeEditor>thing).getEditorType() === EditorType.ICodeEditor;
} else {
return false;
}
}
/**
* Built-in commands.
* @internal
......
......@@ -21,7 +21,7 @@ import { IEditorWorkerService } from 'vs/editor/common/services/editorWorkerServ
import { CharacterSet } from 'vs/editor/common/core/characterClassifier';
import { Range } from 'vs/editor/common/core/range';
import { alert } from 'vs/base/browser/ui/aria/aria';
import { EditorState, CodeEditorStateFlag } from 'vs/editor/common/core/editorState';
import { EditorState, CodeEditorStateFlag } from 'vs/editor/browser/core/editorState';
import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';
import { IMessageService, Severity } from 'vs/platform/message/common/message';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
......
......@@ -22,7 +22,7 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { ITextModelService } from 'vs/editor/common/services/resolverService';
import { registerThemingParticipant } from 'vs/platform/theme/common/themeService';
import { editorActiveLinkForeground } from 'vs/platform/theme/common/colorRegistry';
import { EditorState, CodeEditorStateFlag } from 'vs/editor/common/core/editorState';
import { EditorState, CodeEditorStateFlag } from 'vs/editor/browser/core/editorState';
import { DefinitionAction, DefinitionActionConfig } from './goToDeclarationCommands';
import { ClickLinkGesture, ClickLinkMouseEvent, ClickLinkKeyboardEvent } from 'vs/editor/contrib/goToDeclaration/clickLinkGesture';
......
......@@ -15,7 +15,7 @@ import { registerEditorAction, ServicesAccessor, EditorAction, registerEditorCon
import { IInplaceReplaceSupportResult } from 'vs/editor/common/modes';
import { IEditorWorkerService } from 'vs/editor/common/services/editorWorkerService';
import { InPlaceReplaceCommand } from './inPlaceReplaceCommand';
import { EditorState, CodeEditorStateFlag } from 'vs/editor/common/core/editorState';
import { EditorState, CodeEditorStateFlag } from 'vs/editor/browser/core/editorState';
import { registerThemingParticipant } from 'vs/platform/theme/common/themeService';
import { editorBracketMatchBorder } from 'vs/editor/common/view/editorColorRegistry';
import { ModelDecorationOptions } from 'vs/editor/common/model/textModelWithDecorations';
......
......@@ -21,7 +21,7 @@ import { LightBulbWidget } from './lightBulbWidget';
import { QuickFixModel, QuickFixComputeEvent } from './quickFixModel';
import { TPromise } from 'vs/base/common/winjs.base';
import { CodeAction } from 'vs/editor/common/modes';
import { createBulkEdit } from 'vs/editor/common/services/bulkEdit';
import { createBulkEdit } from 'vs/editor/browser/services/bulkEdit';
import { IFileService } from 'vs/platform/files/common/files';
import { ITextModelService } from 'vs/editor/common/services/resolverService';
......
......@@ -17,7 +17,7 @@ import { IProgressService } from 'vs/platform/progress/common/progress';
import { registerEditorAction, registerEditorContribution, ServicesAccessor, EditorAction, EditorCommand, registerEditorCommand, registerDefaultLanguageCommand } from 'vs/editor/browser/editorExtensions';
import { IEditorContribution, IReadOnlyModel } from 'vs/editor/common/editorCommon';
import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';
import { createBulkEdit } from 'vs/editor/common/services/bulkEdit';
import { createBulkEdit } from 'vs/editor/browser/services/bulkEdit';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
import RenameInputField from './renameInputField';
import { ITextModelService } from 'vs/editor/common/services/resolverService';
......@@ -29,7 +29,7 @@ import { Position } from 'vs/editor/common/core/position';
import { alert } from 'vs/base/browser/ui/aria/aria';
import { Range } from 'vs/editor/common/core/range';
import { MessageController } from 'vs/editor/contrib/message/messageController';
import { EditorState, CodeEditorStateFlag } from 'vs/editor/common/core/editorState';
import { EditorState, CodeEditorStateFlag } from 'vs/editor/browser/core/editorState';
import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry';
......
......@@ -8,7 +8,7 @@
import * as assert from 'assert';
import URI from 'vs/base/common/uri';
import { IModel } from 'vs/editor/common/editorCommon';
import { EditorState, CodeEditorStateFlag } from 'vs/editor/common/core/editorState';
import { EditorState, CodeEditorStateFlag } from 'vs/editor/browser/core/editorState';
import { Selection } from 'vs/editor/common/core/selection';
import { Position } from 'vs/editor/common/core/position';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
......
......@@ -23,7 +23,7 @@ import { IRange } from 'vs/editor/common/core/range';
import { ISelection } from 'vs/editor/common/core/selection';
import { ITextModelService } from 'vs/editor/common/services/resolverService';
import { IFileService } from 'vs/platform/files/common/files';
import { bulkEdit, IResourceEdit } from 'vs/editor/common/services/bulkEdit';
import { bulkEdit, IResourceEdit } from 'vs/editor/browser/services/bulkEdit';
import { IModelService } from 'vs/editor/common/services/modelService';
import { isCodeEditor, ICodeEditor } from 'vs/editor/browser/editorBrowser';
......
......@@ -11,6 +11,7 @@ import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/edi
import { IRange } from 'vs/editor/common/core/range';
import { CursorChangeReason, ICursorPositionChangedEvent } from 'vs/editor/common/controller/cursorEvents';
import { ModelDecorationOptions } from 'vs/editor/common/model/textModelWithDecorations';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
export interface IRangeHighlightDecoration {
resource: URI;
......@@ -21,7 +22,7 @@ export interface IRangeHighlightDecoration {
export class RangeHighlightDecorations implements IDisposable {
private rangeHighlightDecorationId: string = null;
private editor: editorCommon.ICommonCodeEditor = null;
private editor: ICodeEditor = null;
private editorDisposables: IDisposable[] = [];
private _onHighlightRemoved: Emitter<void> = new Emitter<void>();
......@@ -38,14 +39,14 @@ export class RangeHighlightDecorations implements IDisposable {
this.rangeHighlightDecorationId = null;
}
public highlightRange(range: IRangeHighlightDecoration, editor?: editorCommon.ICommonCodeEditor) {
public highlightRange(range: IRangeHighlightDecoration, editor?: ICodeEditor) {
editor = editor ? editor : this.getEditor(range);
if (editor) {
this.doHighlightRange(editor, range);
}
}
private doHighlightRange(editor: editorCommon.ICommonCodeEditor, selectionRange: IRangeHighlightDecoration) {
private doHighlightRange(editor: ICodeEditor, selectionRange: IRangeHighlightDecoration) {
this.removeHighlightRange();
editor.changeDecorations((changeAccessor: editorCommon.IModelDecorationsChangeAccessor) => {
this.rangeHighlightDecorationId = changeAccessor.addDecoration(selectionRange.range, this.createRangeHighlightDecoration(selectionRange.isWholeLine));
......@@ -53,18 +54,18 @@ export class RangeHighlightDecorations implements IDisposable {
this.setEditor(editor);
}
private getEditor(resourceRange: IRangeHighlightDecoration): editorCommon.ICommonCodeEditor {
private getEditor(resourceRange: IRangeHighlightDecoration): ICodeEditor {
const activeInput = this.editorService.getActiveEditorInput();
const resource = activeInput && activeInput.getResource();
if (resource) {
if (resource.toString() === resourceRange.resource.toString()) {
return <editorCommon.ICommonCodeEditor>this.editorService.getActiveEditor().getControl();
return <ICodeEditor>this.editorService.getActiveEditor().getControl();
}
}
return null;
}
private setEditor(editor: editorCommon.ICommonCodeEditor) {
private setEditor(editor: ICodeEditor) {
if (this.editor !== editor) {
this.disposeEditorListeners();
this.editor = editor;
......@@ -113,4 +114,4 @@ export class RangeHighlightDecorations implements IDisposable {
this.editor = null;
}
}
}
\ No newline at end of file
}
......@@ -57,7 +57,7 @@ import { RemoteFileService } from 'vs/workbench/services/files/electron-browser/
import { IFileService } from 'vs/platform/files/common/files';
import { IListService, ListService } from 'vs/platform/list/browser/listService';
import { IConfigurationResolverService } from 'vs/workbench/services/configurationResolver/common/configurationResolver';
import { ConfigurationResolverService } from 'vs/workbench/services/configurationResolver/node/configurationResolverService';
import { ConfigurationResolverService } from 'vs/workbench/services/configurationResolver/electron-browser/configurationResolverService';
import { IPanelService } from 'vs/workbench/services/panel/common/panelService';
import { ITitleService } from 'vs/workbench/services/title/common/titleService';
import { WorkbenchMessageService } from 'vs/workbench/services/message/browser/messageService';
......
......@@ -9,7 +9,7 @@ import { IWorkbenchContribution } from 'vs/workbench/common/contributions';
import errors = require('vs/base/common/errors');
import URI from 'vs/base/common/uri';
import paths = require('vs/base/common/paths');
import { IEditorViewState, isCommonCodeEditor } from 'vs/editor/common/editorCommon';
import { IEditorViewState } from 'vs/editor/common/editorCommon';
import { toResource, SideBySideEditorInput, IEditorGroup, IWorkbenchEditorConfiguration } from 'vs/workbench/common/editor';
import { BINARY_FILE_EDITOR_ID } from 'vs/workbench/parts/files/common/files';
import { ITextFileService, ITextFileEditorModel } from 'vs/workbench/services/textfile/common/textfiles';
......@@ -26,6 +26,7 @@ import { isLinux } from 'vs/base/common/platform';
import { ResourceQueue } from 'vs/base/common/async';
import { ResourceMap } from 'vs/base/common/map';
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
import { isCodeEditor } from 'vs/editor/browser/editorBrowser';
export class FileEditorTracker implements IWorkbenchContribution {
......@@ -242,7 +243,7 @@ export class FileEditorTracker implements IWorkbenchContribution {
const editorResource = editor.input.getResource();
if (editorResource && resource.toString() === editorResource.toString()) {
const control = editor.getControl();
if (isCommonCodeEditor(control)) {
if (isCodeEditor(control)) {
return control.saveViewState();
}
}
......
......@@ -16,7 +16,7 @@ import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } fr
import { IEditorInputFactory, EditorInput, IFileEditorInput, IEditorInputFactoryRegistry, Extensions as EditorInputExtensions } from 'vs/workbench/common/editor';
import { AutoSaveConfiguration, HotExitConfiguration, SUPPORTED_ENCODINGS } from 'vs/platform/files/common/files';
import { FILE_EDITOR_INPUT_ID, VIEWLET_ID, SortOrderConfiguration } from 'vs/workbench/parts/files/common/files';
import { FileEditorTracker } from 'vs/workbench/parts/files/common/editors/fileEditorTracker';
import { FileEditorTracker } from 'vs/workbench/parts/files/browser/editors/fileEditorTracker';
import { SaveErrorHandler } from 'vs/workbench/parts/files/browser/saveErrorHandler';
import { FileEditorInput } from 'vs/workbench/parts/files/common/editors/fileEditorInput';
import { TextFileEditor } from 'vs/workbench/parts/files/browser/editors/textFileEditor';
......
......@@ -6,7 +6,7 @@
'use strict';
import * as assert from 'assert';
import { FileEditorTracker } from 'vs/workbench/parts/files/common/editors/fileEditorTracker';
import { FileEditorTracker } from 'vs/workbench/parts/files/browser/editors/fileEditorTracker';
import URI from 'vs/base/common/uri';
import { join } from 'vs/base/common/paths';
import { FileEditorInput } from 'vs/workbench/parts/files/common/editors/fileEditorInput';
......@@ -206,4 +206,4 @@ suite('Files - FileEditorTracker', () => {
});
});
});
});
\ No newline at end of file
});
......@@ -28,7 +28,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
import { CollapseAllAction, FilterAction, FilterInputBoxActionItem } from 'vs/workbench/parts/markers/browser/markersPanelActions';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import Messages from 'vs/workbench/parts/markers/common/messages';
import { RangeHighlightDecorations } from 'vs/workbench/common/editor/rangeDecorations';
import { RangeHighlightDecorations } from 'vs/workbench/browser/parts/editor/rangeDecorations';
import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
import { IListService } from 'vs/platform/list/browser/listService';
import { IThemeService } from 'vs/platform/theme/common/themeService';
......
......@@ -23,7 +23,7 @@ import { ICodeEditor, IEditorMouseEvent, MouseTargetType } from 'vs/editor/brows
import { IContextMenuService, ContextSubMenu } from 'vs/platform/contextview/browser/contextView';
import { SettingsGroupTitleWidget, EditPreferenceWidget, SettingsHeaderWidget, DefaultSettingsHeaderWidget, FloatingClickWidget } from 'vs/workbench/parts/preferences/browser/preferencesWidgets';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { RangeHighlightDecorations } from 'vs/workbench/common/editor/rangeDecorations';
import { RangeHighlightDecorations } from 'vs/workbench/browser/parts/editor/rangeDecorations';
import { IMarkerService, IMarkerData } from 'vs/platform/markers/common/markers';
import { IMessageService, Severity } from 'vs/platform/message/common/message';
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
......
......@@ -15,7 +15,7 @@ import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/edi
import { IModelService } from 'vs/editor/common/services/modelService';
import { IModeService } from 'vs/editor/common/services/modeService';
import { Match, FileMatch, FileMatchOrMatch, ISearchWorkbenchService } from 'vs/workbench/parts/search/common/searchModel';
import { BulkEdit, IResourceEdit, createBulkEdit } from 'vs/editor/common/services/bulkEdit';
import { BulkEdit, IResourceEdit, createBulkEdit } from 'vs/editor/browser/services/bulkEdit';
import { IProgressRunner } from 'vs/platform/progress/common/progress';
import { IDiffEditor } from 'vs/editor/browser/editorBrowser';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
......
......@@ -1359,10 +1359,10 @@ export class SearchViewlet extends Viewlet {
}
}, sideBySide).then(editor => {
if (editor && element instanceof Match && preserveFocus) {
this.viewModel.searchResult.rangeHighlightDecorations.highlightRange({
resource,
range: element.range()
}, <ICodeEditor>editor.getControl());
this.viewModel.searchResult.rangeHighlightDecorations.highlightRange(
(<ICodeEditor>editor.getControl()).getModel(),
element.range()
);
} else {
this.viewModel.searchResult.rangeHighlightDecorations.removeHighlightRange();
}
......
......@@ -22,7 +22,6 @@ import { IInstantiationService, createDecorator } from 'vs/platform/instantiatio
import { IModelService } from 'vs/editor/common/services/modelService';
import { IReplaceService } from 'vs/workbench/parts/search/common/replace';
import { IProgressRunner } from 'vs/platform/progress/common/progress';
import { RangeHighlightDecorations } from 'vs/workbench/common/editor/rangeDecorations';
import { ModelDecorationOptions } from 'vs/editor/common/model/textModelWithDecorations';
import { overviewRulerFindMatchForeground } from 'vs/platform/theme/common/colorRegistry';
import { themeColorFromId } from 'vs/platform/theme/common/themeService';
......@@ -626,10 +625,10 @@ export class SearchResult extends Disposable {
}
});
if (this._showHighlights && selectedMatch) {
this._rangeHighlightDecorations.highlightRange({
resource: selectedMatch.parent().resource(),
range: selectedMatch.range()
});
this._rangeHighlightDecorations.highlightRange(
selectedMatch.parent().resource(),
selectedMatch.range()
);
} else {
this._rangeHighlightDecorations.removeHighlightRange();
}
......@@ -841,3 +840,81 @@ export interface ISearchWorkbenchService {
readonly searchModel: SearchModel;
}
/**
* Can add a range highlight decoration to a model.
* It will automatically remove it when the model has its decorations changed.
*/
export class RangeHighlightDecorations implements IDisposable {
private _decorationId: string = null;
private _model: IModel = null;
private _modelDisposables: IDisposable[] = [];
constructor(
@IModelService private readonly _modelService: IModelService
) {
}
public removeHighlightRange() {
if (this._model && this._decorationId) {
this._model.deltaDecorations([this._decorationId], []);
}
this._decorationId = null;
}
public highlightRange(resource: URI | IModel, range: Range, ownerId: number = 0): void {
let model: IModel;
if (URI.isUri(resource)) {
model = this._modelService.getModel(resource);
} else {
model = resource;
}
if (model) {
this.doHighlightRange(model, range);
}
}
private doHighlightRange(model: IModel, range: Range) {
this.removeHighlightRange();
this._decorationId = model.deltaDecorations([], [{ range: range, options: RangeHighlightDecorations._RANGE_HIGHLIGHT_DECORATION }])[0];
this.setModel(model);
}
private setModel(model: IModel) {
if (this._model !== model) {
this.disposeModelListeners();
this._model = model;
this._modelDisposables.push(this._model.onDidChangeDecorations((e) => {
this.disposeModelListeners();
this.removeHighlightRange();
this._model = null;
}));
this._modelDisposables.push(this._model.onWillDispose(() => {
this.disposeModelListeners();
this.removeHighlightRange();
this._model = null;
}));
}
}
private disposeModelListeners() {
this._modelDisposables.forEach(disposable => disposable.dispose());
this._modelDisposables = [];
}
public dispose() {
if (this._model) {
this.removeHighlightRange();
this.disposeModelListeners();
this._model = null;
}
}
private static _RANGE_HIGHLIGHT_DECORATION = ModelDecorationOptions.register({
stickiness: TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,
className: 'rangeHighlight',
isWholeLine: true
});
}
......@@ -12,11 +12,11 @@ import { IConfigurationResolverService } from 'vs/workbench/services/configurati
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { ICommandService } from 'vs/platform/commands/common/commands';
import { ICommonCodeEditor } from 'vs/editor/common/editorCommon';
import { IWorkspaceFolder } from 'vs/platform/workspace/common/workspace';
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
import { toResource } from 'vs/workbench/common/editor';
import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
export class ConfigurationResolverService implements IConfigurationResolverService {
_serviceBrand: any;
......@@ -92,7 +92,7 @@ export class ConfigurationResolverService implements IConfigurationResolverServi
private get lineNumber(): string {
const activeEditor = this.editorService.getActiveEditor();
if (activeEditor) {
const editorControl = (<ICommonCodeEditor>activeEditor.getControl());
const editorControl = (<ICodeEditor>activeEditor.getControl());
if (editorControl) {
const lineNumber = editorControl.getSelection().positionLineNumber;
return String(lineNumber);
......
......@@ -10,7 +10,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
import { IConfigurationService, getConfigurationValue, IConfigurationOverrides } from 'vs/platform/configuration/common/configuration';
import { ICommandService } from 'vs/platform/commands/common/commands';
import { IConfigurationResolverService } from 'vs/workbench/services/configurationResolver/common/configurationResolver';
import { ConfigurationResolverService } from 'vs/workbench/services/configurationResolver/node/configurationResolverService';
import { ConfigurationResolverService } from 'vs/workbench/services/configurationResolver/electron-browser/configurationResolverService';
import { IWorkspaceFolder } from 'vs/platform/workspace/common/workspace';
import { TestEnvironmentService, TestEditorService } from 'vs/workbench/test/workbenchTestServices';
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
......
......@@ -11,7 +11,7 @@ import { IModelService } from 'vs/editor/common/services/modelService';
import { IModeService } from 'vs/editor/common/services/modeService';
import { ModeServiceImpl } from 'vs/editor/common/services/modeServiceImpl';
import WorkbenchEditorService = require('vs/workbench/services/editor/common/editorService');
import { RangeHighlightDecorations } from 'vs/workbench/common/editor/rangeDecorations';
import { RangeHighlightDecorations } from 'vs/workbench/browser/parts/editor/rangeDecorations';
import { Model } from 'vs/editor/common/model/model';
import { createTestCodeEditor } from 'vs/editor/test/browser/testCodeEditor';
import { IEditorInput } from 'vs/platform/editor/common/editor';
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册