diff --git a/src/vs/workbench/api/browser/mainThreadDocuments.ts b/src/vs/workbench/api/browser/mainThreadDocuments.ts index 30c8a366e90..05eb4662f39 100644 --- a/src/vs/workbench/api/browser/mainThreadDocuments.ts +++ b/src/vs/workbench/api/browser/mainThreadDocuments.ts @@ -16,7 +16,7 @@ import { MainThreadDocumentsAndEditors } from 'vs/workbench/api/browser/mainThre import { ExtHostContext, ExtHostDocumentsShape, IExtHostContext, MainThreadDocumentsShape } from 'vs/workbench/api/common/extHost.protocol'; import { ITextEditorModel } from 'vs/workbench/common/editor'; import { ITextFileService, TextFileModelChangeEvent } from 'vs/workbench/services/textfile/common/textfiles'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { toLocalResource } from 'vs/base/common/resources'; @@ -70,7 +70,7 @@ export class MainThreadDocuments implements MainThreadDocumentsShape { private readonly _textModelResolverService: ITextModelService; private readonly _textFileService: ITextFileService; private readonly _fileService: IFileService; - private readonly _untitledEditorService: IUntitledEditorService; + private readonly _untitledTextEditorService: IUntitledTextEditorService; private readonly _environmentService: IWorkbenchEnvironmentService; private readonly _toDispose = new DisposableStore(); @@ -87,14 +87,14 @@ export class MainThreadDocuments implements MainThreadDocumentsShape { @ITextFileService textFileService: ITextFileService, @IFileService fileService: IFileService, @ITextModelService textModelResolverService: ITextModelService, - @IUntitledEditorService untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService untitledTextEditorService: IUntitledTextEditorService, @IWorkbenchEnvironmentService environmentService: IWorkbenchEnvironmentService ) { this._modelService = modelService; this._textModelResolverService = textModelResolverService; this._textFileService = textFileService; this._fileService = fileService; - this._untitledEditorService = untitledEditorService; + this._untitledTextEditorService = untitledTextEditorService; this._environmentService = environmentService; this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostDocuments); @@ -227,7 +227,7 @@ export class MainThreadDocuments implements MainThreadDocumentsShape { } private _doCreateUntitled(resource?: URI, mode?: string, initialValue?: string): Promise { - return this._untitledEditorService.loadOrCreate({ + return this._untitledTextEditorService.loadOrCreate({ resource, mode, initialValue, diff --git a/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.ts b/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.ts index fdd407e642a..edc1470d929 100644 --- a/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.ts +++ b/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.ts @@ -28,7 +28,7 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; namespace delta { @@ -327,7 +327,7 @@ export class MainThreadDocumentsAndEditors { @IModeService modeService: IModeService, @IFileService fileService: IFileService, @ITextModelService textModelResolverService: ITextModelService, - @IUntitledEditorService untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService untitledTextEditorService: IUntitledTextEditorService, @IEditorGroupsService private readonly _editorGroupService: IEditorGroupsService, @IBulkEditService bulkEditService: IBulkEditService, @IPanelService panelService: IPanelService, @@ -335,7 +335,7 @@ export class MainThreadDocumentsAndEditors { ) { this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostDocumentsAndEditors); - const mainThreadDocuments = this._toDispose.add(new MainThreadDocuments(this, extHostContext, this._modelService, modeService, this._textFileService, fileService, textModelResolverService, untitledEditorService, environmentService)); + const mainThreadDocuments = this._toDispose.add(new MainThreadDocuments(this, extHostContext, this._modelService, modeService, this._textFileService, fileService, textModelResolverService, untitledTextEditorService, environmentService)); extHostContext.set(MainContext.MainThreadDocuments, mainThreadDocuments); const mainThreadTextEditors = this._toDispose.add(new MainThreadTextEditors(this, extHostContext, codeEditorService, bulkEditService, this._editorService, this._editorGroupService)); diff --git a/src/vs/workbench/browser/dnd.ts b/src/vs/workbench/browser/dnd.ts index 9b75bfa7da4..0ae62d5354f 100644 --- a/src/vs/workbench/browser/dnd.ts +++ b/src/vs/workbench/browser/dnd.ts @@ -12,7 +12,7 @@ import { URI } from 'vs/base/common/uri'; import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; import { IBackupFileService } from 'vs/workbench/services/backup/common/backup'; import { Schemas } from 'vs/base/common/network'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { DefaultEndOfLine } from 'vs/editor/common/model'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IEditorViewState } from 'vs/editor/common/editorCommon'; @@ -163,7 +163,7 @@ export class ResourcesDropHandler { @IWorkspacesService private readonly workspacesService: IWorkspacesService, @ITextFileService private readonly textFileService: ITextFileService, @IBackupFileService private readonly backupFileService: IBackupFileService, - @IUntitledEditorService private readonly untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService private readonly untitledTextEditorService: IUntitledTextEditorService, @IEditorService private readonly editorService: IEditorService, @IConfigurationService private readonly configurationService: IConfigurationService, @IWorkspaceEditingService private readonly workspaceEditingService: IWorkspaceEditingService, @@ -234,7 +234,7 @@ export class ResourcesDropHandler { // Untitled: always ensure that we open a new untitled for each file we drop if (droppedDirtyEditor.resource.scheme === Schemas.untitled) { - droppedDirtyEditor.resource = this.untitledEditorService.createOrGet().getResource(); + droppedDirtyEditor.resource = this.untitledTextEditorService.createOrGet().getResource(); } // Return early if the resource is already dirty in target or opened already diff --git a/src/vs/workbench/browser/labels.ts b/src/vs/workbench/browser/labels.ts index f547fb72eee..ecb0b7fbf9a 100644 --- a/src/vs/workbench/browser/labels.ts +++ b/src/vs/workbench/browser/labels.ts @@ -13,7 +13,7 @@ import { PLAINTEXT_MODE_ID } from 'vs/editor/common/modes/modesRegistry'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IModelService } from 'vs/editor/common/services/modelService'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { IDecorationsService, IResourceDecorationChangeEvent } from 'vs/workbench/services/decorations/browser/decorations'; import { Schemas } from 'vs/base/common/network'; import { FileKind, FILES_ASSOCIATIONS_CONFIG, IFileService } from 'vs/platform/files/common/files'; @@ -259,7 +259,7 @@ class ResourceLabelWidget extends IconLabel { @IModelService private readonly modelService: IModelService, @IDecorationsService private readonly decorationsService: IDecorationsService, @ILabelService private readonly labelService: ILabelService, - @IUntitledEditorService private readonly untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService private readonly untitledTextEditorService: IUntitledTextEditorService, @IWorkspaceContextService private readonly contextService: IWorkspaceContextService ) { super(container, options); @@ -389,7 +389,7 @@ class ResourceLabelWidget extends IconLabel { } let description: string | undefined; - const hidePath = (options && options.hidePath) || (resource.scheme === Schemas.untitled && !this.untitledEditorService.hasAssociatedFilePath(resource)); + const hidePath = (options && options.hidePath) || (resource.scheme === Schemas.untitled && !this.untitledTextEditorService.hasAssociatedFilePath(resource)); if (!hidePath) { description = this.labelService.getUriLabel(resources.dirname(resource), { relative: true }); } diff --git a/src/vs/workbench/browser/parts/editor/editor.contribution.ts b/src/vs/workbench/browser/parts/editor/editor.contribution.ts index 48c613127ca..7de63db891a 100644 --- a/src/vs/workbench/browser/parts/editor/editor.contribution.ts +++ b/src/vs/workbench/browser/parts/editor/editor.contribution.ts @@ -13,7 +13,7 @@ import { EditorInput, IEditorInputFactory, SideBySideEditorInput, IEditorInputFa import { TextResourceEditor } from 'vs/workbench/browser/parts/editor/textResourceEditor'; import { SideBySideEditor } from 'vs/workbench/browser/parts/editor/sideBySideEditor'; import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput'; -import { UntitledEditorInput } from 'vs/workbench/common/editor/untitledEditorInput'; +import { UntitledTextEditorInput } from 'vs/workbench/common/editor/untitledTextEditorInput'; import { ResourceEditorInput } from 'vs/workbench/common/editor/resourceEditorInput'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { TextDiffEditor } from 'vs/workbench/browser/parts/editor/textDiffEditor'; @@ -62,7 +62,7 @@ Registry.as(EditorExtensions.Editors).registerEditor( nls.localize('textEditor', "Text Editor"), ), [ - new SyncDescriptor(UntitledEditorInput), + new SyncDescriptor(UntitledTextEditorInput), new SyncDescriptor(ResourceEditorInput) ] ); @@ -102,7 +102,7 @@ Registry.as(EditorExtensions.Editors).registerEditor( ] ); -interface ISerializedUntitledEditorInput { +interface ISerializedUntitledTextEditorInput { resource: string; resourceJSON: object; modeId: string | undefined; @@ -110,7 +110,7 @@ interface ISerializedUntitledEditorInput { } // Register Editor Input Factory -class UntitledEditorInputFactory implements IEditorInputFactory { +class UntitledTextEditorInputFactory implements IEditorInputFactory { constructor( @ITextFileService private readonly textFileService: ITextFileService, @@ -122,36 +122,36 @@ class UntitledEditorInputFactory implements IEditorInputFactory { return undefined; // never restore untitled unless hot exit is enabled } - const untitledEditorInput = editorInput; + const untitledTextEditorInput = editorInput; - let resource = untitledEditorInput.getResource(); - if (untitledEditorInput.hasAssociatedFilePath) { + let resource = untitledTextEditorInput.getResource(); + if (untitledTextEditorInput.hasAssociatedFilePath) { resource = toLocalResource(resource, this.environmentService.configuration.remoteAuthority); // untitled with associated file path use the local schema } - const serialized: ISerializedUntitledEditorInput = { + const serialized: ISerializedUntitledTextEditorInput = { resource: resource.toString(), // Keep for backwards compatibility resourceJSON: resource.toJSON(), - modeId: untitledEditorInput.getMode(), - encoding: untitledEditorInput.getEncoding() + modeId: untitledTextEditorInput.getMode(), + encoding: untitledTextEditorInput.getEncoding() }; return JSON.stringify(serialized); } - deserialize(instantiationService: IInstantiationService, serializedEditorInput: string): UntitledEditorInput { - return instantiationService.invokeFunction(accessor => { - const deserialized: ISerializedUntitledEditorInput = JSON.parse(serializedEditorInput); + deserialize(instantiationService: IInstantiationService, serializedEditorInput: string): UntitledTextEditorInput { + return instantiationService.invokeFunction(accessor => { + const deserialized: ISerializedUntitledTextEditorInput = JSON.parse(serializedEditorInput); const resource = !!deserialized.resourceJSON ? URI.revive(deserialized.resourceJSON) : URI.parse(deserialized.resource); const mode = deserialized.modeId; const encoding = deserialized.encoding; - return accessor.get(IEditorService).createInput({ resource, mode, encoding, forceUntitled: true }) as UntitledEditorInput; + return accessor.get(IEditorService).createInput({ resource, mode, encoding, forceUntitled: true }) as UntitledTextEditorInput; }); } } -Registry.as(EditorInputExtensions.EditorInputFactories).registerEditorInputFactory(UntitledEditorInput.ID, UntitledEditorInputFactory); +Registry.as(EditorInputExtensions.EditorInputFactories).registerEditorInputFactory(UntitledTextEditorInput.ID, UntitledTextEditorInputFactory); interface ISerializedSideBySideEditorInput { name: string; diff --git a/src/vs/workbench/browser/parts/editor/editorGroupView.ts b/src/vs/workbench/browser/parts/editor/editorGroupView.ts index e88315780d5..60c90b3c842 100644 --- a/src/vs/workbench/browser/parts/editor/editorGroupView.ts +++ b/src/vs/workbench/browser/parts/editor/editorGroupView.ts @@ -32,7 +32,7 @@ import { RunOnceWorker } from 'vs/base/common/async'; import { EventType as TouchEventType, GestureEvent } from 'vs/base/browser/touch'; import { TitleControl } from 'vs/workbench/browser/parts/editor/titleControl'; import { IEditorGroupsAccessor, IEditorGroupView, IEditorPartOptionsChangeEvent, getActiveTextEditorOptions, IEditorOpeningEvent } from 'vs/workbench/browser/parts/editor/editor'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { ActionRunner, IAction, Action } from 'vs/base/common/actions'; @@ -128,7 +128,7 @@ export class EditorGroupView extends Themable implements IEditorGroupView { @INotificationService private readonly notificationService: INotificationService, @IDialogService private readonly dialogService: IDialogService, @ITelemetryService private readonly telemetryService: ITelemetryService, - @IUntitledEditorService private readonly untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService private readonly untitledTextEditorService: IUntitledTextEditorService, @IKeybindingService private readonly keybindingService: IKeybindingService, @IMenuService private readonly menuService: IMenuService, @IContextMenuService private readonly contextMenuService: IContextMenuService @@ -255,7 +255,7 @@ export class EditorGroupView extends Themable implements IEditorGroupView { if (this.isEmpty) { EventHelper.stop(e); - this.openEditor(this.untitledEditorService.createOrGet(), EditorOptions.create({ pinned: true })); + this.openEditor(this.untitledTextEditorService.createOrGet(), EditorOptions.create({ pinned: true })); } })); diff --git a/src/vs/workbench/browser/parts/editor/editorStatus.ts b/src/vs/workbench/browser/parts/editor/editorStatus.ts index 5bcf1ff5f5d..b7ecb1411b0 100644 --- a/src/vs/workbench/browser/parts/editor/editorStatus.ts +++ b/src/vs/workbench/browser/parts/editor/editorStatus.ts @@ -12,10 +12,10 @@ import { areFunctions, withNullAsUndefined, withUndefinedAsNull } from 'vs/base/ import { URI } from 'vs/base/common/uri'; import { Action } from 'vs/base/common/actions'; import { Language } from 'vs/base/common/platform'; -import { UntitledEditorInput } from 'vs/workbench/common/editor/untitledEditorInput'; +import { UntitledTextEditorInput } from 'vs/workbench/common/editor/untitledTextEditorInput'; import { IFileEditorInput, EncodingMode, IEncodingSupport, toResource, SideBySideEditorInput, IEditor as IBaseEditor, IEditorInput, SideBySideEditor, IModeSupport } from 'vs/workbench/common/editor'; import { Disposable, MutableDisposable, DisposableStore } from 'vs/base/common/lifecycle'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { IEditorAction } from 'vs/editor/common/editorCommon'; import { EndOfLineSequence } from 'vs/editor/common/model'; import { IModelLanguageChangedEvent, IModelOptionsChangedEvent } from 'vs/editor/common/model/textModelEvents'; @@ -73,8 +73,8 @@ class SideBySideEditorModeSupport implements IModeSupport { function toEditorWithEncodingSupport(input: IEditorInput): IEncodingSupport | null { - // Untitled Editor - if (input instanceof UntitledEditorInput) { + // Untitled Text Editor + if (input instanceof UntitledTextEditorInput) { return input; } @@ -102,8 +102,8 @@ function toEditorWithEncodingSupport(input: IEditorInput): IEncodingSupport | nu function toEditorWithModeSupport(input: IEditorInput): IModeSupport | null { - // Untitled Editor - if (input instanceof UntitledEditorInput) { + // Untitled Text Editor + if (input instanceof UntitledTextEditorInput) { return input; } @@ -293,7 +293,7 @@ export class EditorStatus extends Disposable implements IWorkbenchContribution { constructor( @IEditorService private readonly editorService: IEditorService, @IQuickInputService private readonly quickInputService: IQuickInputService, - @IUntitledEditorService private readonly untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService private readonly untitledTextEditorService: IUntitledTextEditorService, @IModeService private readonly modeService: IModeService, @ITextFileService private readonly textFileService: ITextFileService, @IConfigurationService private readonly configurationService: IConfigurationService, @@ -309,7 +309,7 @@ export class EditorStatus extends Disposable implements IWorkbenchContribution { private registerListeners(): void { this._register(this.editorService.onDidActiveEditorChange(() => this.updateStatusBar())); - this._register(this.untitledEditorService.onDidChangeEncoding(r => this.onResourceEncodingChange(r))); + this._register(this.untitledTextEditorService.onDidChangeEncoding(r => this.onResourceEncodingChange(r))); this._register(this.textFileService.models.onModelEncodingChanged(e => this.onResourceEncodingChange((e.resource)))); this._register(TabFocus.onDidChangeTabFocus(e => this.onTabFocusModeChange())); } @@ -869,7 +869,7 @@ export class ChangeModeAction extends Action { @IQuickInputService private readonly quickInputService: IQuickInputService, @IPreferencesService private readonly preferencesService: IPreferencesService, @IInstantiationService private readonly instantiationService: IInstantiationService, - @IUntitledEditorService private readonly untitledEditorService: IUntitledEditorService + @IUntitledTextEditorService private readonly untitledTextEditorService: IUntitledTextEditorService ) { super(actionId, actionLabel); } @@ -884,7 +884,7 @@ export class ChangeModeAction extends Action { const resource = this.editorService.activeEditor ? toResource(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }) : null; let hasLanguageSupport = !!resource; - if (resource?.scheme === Schemas.untitled && !this.untitledEditorService.hasAssociatedFilePath(resource)) { + if (resource?.scheme === Schemas.untitled && !this.untitledTextEditorService.hasAssociatedFilePath(resource)) { hasLanguageSupport = false; // no configuration for untitled resources (e.g. "Untitled-1") } @@ -1152,7 +1152,7 @@ export class ChangeEncodingAction extends Action { } let action: IQuickPickItem; - if (encodingSupport instanceof UntitledEditorInput) { + if (encodingSupport instanceof UntitledTextEditorInput) { action = saveWithEncodingPick; } else if (!isWritableBaseEditor(activeControl)) { action = reopenWithEncodingPick; diff --git a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts index f360d3c9fbb..d22c4b9ec41 100644 --- a/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts +++ b/src/vs/workbench/browser/parts/editor/tabsTitleControl.ts @@ -32,7 +32,7 @@ import { Color } from 'vs/base/common/color'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; import { MergeGroupMode, IMergeGroupOptions, GroupsArrangement } from 'vs/workbench/services/editor/common/editorGroupsService'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { addClass, addDisposableListener, hasClass, EventType, EventHelper, removeClass, Dimension, scheduleAtNextAnimationFrame, findParentWithClass, clearNode } from 'vs/base/browser/dom'; import { localize } from 'vs/nls'; import { IEditorGroupsAccessor, IEditorGroupView } from 'vs/workbench/browser/parts/editor/editor'; @@ -74,7 +74,7 @@ export class TabsTitleControl extends TitleControl { group: IEditorGroupView, @IContextMenuService contextMenuService: IContextMenuService, @IInstantiationService instantiationService: IInstantiationService, - @IUntitledEditorService private readonly untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService private readonly untitledTextEditorService: IUntitledTextEditorService, @IContextKeyService contextKeyService: IContextKeyService, @IKeybindingService keybindingService: IKeybindingService, @ITelemetryService telemetryService: ITelemetryService, @@ -177,7 +177,7 @@ export class TabsTitleControl extends TitleControl { if (e.target === tabsContainer) { EventHelper.stop(e); - this.group.openEditor(this.untitledEditorService.createOrGet(), { pinned: true /* untitled is always pinned */, index: this.group.count /* always at the end */ }); + this.group.openEditor(this.untitledTextEditorService.createOrGet(), { pinned: true /* untitled is always pinned */, index: this.group.count /* always at the end */ }); } })); diff --git a/src/vs/workbench/browser/parts/editor/textResourceEditor.ts b/src/vs/workbench/browser/parts/editor/textResourceEditor.ts index 157918075dd..640af28854b 100644 --- a/src/vs/workbench/browser/parts/editor/textResourceEditor.ts +++ b/src/vs/workbench/browser/parts/editor/textResourceEditor.ts @@ -10,7 +10,7 @@ import { IEditorOptions } from 'vs/editor/common/config/editorOptions'; import { TextEditorOptions, EditorInput, EditorOptions } from 'vs/workbench/common/editor'; import { ResourceEditorInput } from 'vs/workbench/common/editor/resourceEditorInput'; import { BaseTextEditorModel } from 'vs/workbench/common/editor/textEditorModel'; -import { UntitledEditorInput } from 'vs/workbench/common/editor/untitledEditorInput'; +import { UntitledTextEditorInput } from 'vs/workbench/common/editor/untitledTextEditorInput'; import { BaseTextEditor } from 'vs/workbench/browser/parts/editor/textEditor'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IStorageService } from 'vs/platform/storage/common/storage'; @@ -92,7 +92,7 @@ export class AbstractTextResourceEditor extends BaseTextEditor { } private restoreTextResourceEditorViewState(editor: EditorInput, control: IEditor) { - if (editor instanceof UntitledEditorInput || editor instanceof ResourceEditorInput) { + if (editor instanceof UntitledTextEditorInput || editor instanceof ResourceEditorInput) { const viewState = this.loadTextEditorViewState(editor.getResource()); if (viewState) { control.restoreViewState(viewState); @@ -111,14 +111,14 @@ export class AbstractTextResourceEditor extends BaseTextEditor { protected getConfigurationOverrides(): IEditorOptions { const options = super.getConfigurationOverrides(); - options.readOnly = !(this.input instanceof UntitledEditorInput); // all resource editors are readonly except for the untitled one; + options.readOnly = !(this.input instanceof UntitledTextEditorInput); // all resource editors are readonly except for the untitled one; return options; } protected getAriaLabel(): string { const input = this.input; - const isReadonly = !(this.input instanceof UntitledEditorInput); + const isReadonly = !(this.input instanceof UntitledTextEditorInput); let ariaLabel: string; const inputName = input?.getName(); @@ -161,7 +161,7 @@ export class AbstractTextResourceEditor extends BaseTextEditor { protected saveState(): void { // Save View State (only for untitled) - if (this.input instanceof UntitledEditorInput) { + if (this.input instanceof UntitledTextEditorInput) { this.saveTextResourceEditorViewState(this.input); } @@ -169,7 +169,7 @@ export class AbstractTextResourceEditor extends BaseTextEditor { } private saveTextResourceEditorViewState(input: EditorInput | undefined): void { - if (!(input instanceof UntitledEditorInput) && !(input instanceof ResourceEditorInput)) { + if (!(input instanceof UntitledTextEditorInput) && !(input instanceof ResourceEditorInput)) { return; // only enabled for untitled and resource inputs } diff --git a/src/vs/workbench/common/editor.ts b/src/vs/workbench/common/editor.ts index c25eb41dc75..4ac59c9c71c 100644 --- a/src/vs/workbench/common/editor.ts +++ b/src/vs/workbench/common/editor.ts @@ -205,11 +205,11 @@ export interface IEditorInputFactory { deserialize(instantiationService: IInstantiationService, serializedEditorInput: string): EditorInput | undefined; } -export interface IUntitledResourceInput extends IBaseResourceInput { +export interface IUntitledTextResourceInput extends IBaseResourceInput { /** * Optional resource. If the resource is not provided a new untitled file is created (e.g. Untitled-1). - * Otherwise the untitled editor will have an associated path and use that when saving. + * Otherwise the untitled text editor will have an associated path and use that when saving. */ resource?: URI; @@ -1149,7 +1149,7 @@ export const Extensions = { Registry.add(Extensions.EditorInputFactories, new EditorInputFactoryRegistry()); -export async function pathsToEditors(paths: IPathData[] | undefined, fileService: IFileService): Promise<(IResourceInput | IUntitledResourceInput)[]> { +export async function pathsToEditors(paths: IPathData[] | undefined, fileService: IFileService): Promise<(IResourceInput | IUntitledTextResourceInput)[]> { if (!paths || !paths.length) { return []; } @@ -1170,7 +1170,7 @@ export async function pathsToEditors(paths: IPathData[] | undefined, fileService }; } - let input: IResourceInput | IUntitledResourceInput; + let input: IResourceInput | IUntitledTextResourceInput; if (!exists) { input = { resource, options, forceUntitled: true }; } else { diff --git a/src/vs/workbench/common/editor/untitledEditorInput.ts b/src/vs/workbench/common/editor/untitledTextEditorInput.ts similarity index 86% rename from src/vs/workbench/common/editor/untitledEditorInput.ts rename to src/vs/workbench/common/editor/untitledTextEditorInput.ts index ec1db939455..466216f9840 100644 --- a/src/vs/workbench/common/editor/untitledEditorInput.ts +++ b/src/vs/workbench/common/editor/untitledTextEditorInput.ts @@ -9,7 +9,7 @@ import { createMemoizer } from 'vs/base/common/decorators'; import { PLAINTEXT_MODE_ID } from 'vs/editor/common/modes/modesRegistry'; import { basenameOrAuthority, dirname } from 'vs/base/common/resources'; import { EditorInput, IEncodingSupport, EncodingMode, ConfirmResult, Verbosity, IModeSupport } from 'vs/workbench/common/editor'; -import { UntitledEditorModel } from 'vs/workbench/common/editor/untitledEditorModel'; +import { UntitledTextEditorModel } from 'vs/workbench/common/editor/untitledTextEditorModel'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { Event, Emitter } from 'vs/base/common/event'; import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; @@ -19,13 +19,13 @@ import { IResolvedTextEditorModel } from 'vs/editor/common/services/resolverServ /** * An editor input to be used for untitled text buffers. */ -export class UntitledEditorInput extends EditorInput implements IEncodingSupport, IModeSupport { +export class UntitledTextEditorInput extends EditorInput implements IEncodingSupport, IModeSupport { static readonly ID: string = 'workbench.editors.untitledEditorInput'; private static readonly MEMOIZER = createMemoizer(); - private cachedModel: UntitledEditorModel | null = null; - private modelResolve: Promise | null = null; + private cachedModel: UntitledTextEditorModel | null = null; + private modelResolve: Promise | null = null; private readonly _onDidModelChangeContent: Emitter = this._register(new Emitter()); readonly onDidModelChangeContent: Event = this._onDidModelChangeContent.event; @@ -44,7 +44,7 @@ export class UntitledEditorInput extends EditorInput implements IEncodingSupport @ILabelService private readonly labelService: ILabelService ) { super(); - this._register(this.labelService.onDidChangeFormatters(() => UntitledEditorInput.MEMOIZER.clear())); + this._register(this.labelService.onDidChangeFormatters(() => UntitledTextEditorInput.MEMOIZER.clear())); } get hasAssociatedFilePath(): boolean { @@ -52,7 +52,7 @@ export class UntitledEditorInput extends EditorInput implements IEncodingSupport } getTypeId(): string { - return UntitledEditorInput.ID; + return UntitledTextEditorInput.ID; } getResource(): URI { @@ -63,17 +63,17 @@ export class UntitledEditorInput extends EditorInput implements IEncodingSupport return this.hasAssociatedFilePath ? basenameOrAuthority(this.resource) : this.resource.path; } - @UntitledEditorInput.MEMOIZER + @UntitledTextEditorInput.MEMOIZER private get shortDescription(): string { return this.labelService.getUriBasenameLabel(dirname(this.resource)); } - @UntitledEditorInput.MEMOIZER + @UntitledTextEditorInput.MEMOIZER private get mediumDescription(): string { return this.labelService.getUriLabel(dirname(this.resource), { relative: true }); } - @UntitledEditorInput.MEMOIZER + @UntitledTextEditorInput.MEMOIZER private get longDescription(): string { return this.labelService.getUriLabel(dirname(this.resource)); } @@ -94,17 +94,17 @@ export class UntitledEditorInput extends EditorInput implements IEncodingSupport } } - @UntitledEditorInput.MEMOIZER + @UntitledTextEditorInput.MEMOIZER private get shortTitle(): string { return this.getName(); } - @UntitledEditorInput.MEMOIZER + @UntitledTextEditorInput.MEMOIZER private get mediumTitle(): string { return this.labelService.getUriLabel(this.resource, { relative: true }); } - @UntitledEditorInput.MEMOIZER + @UntitledTextEditorInput.MEMOIZER private get longTitle(): string { return this.labelService.getUriLabel(this.resource); } @@ -161,7 +161,7 @@ export class UntitledEditorInput extends EditorInput implements IEncodingSupport this.cachedModel.revert(); } - this.dispose(); // a reverted untitled editor is no longer valid, so we dispose it + this.dispose(); // a reverted untitled text editor is no longer valid, so we dispose it return Promise.resolve(true); } @@ -211,7 +211,7 @@ export class UntitledEditorInput extends EditorInput implements IEncodingSupport return this.preferredMode; } - resolve(): Promise { + resolve(): Promise { // Join a model resolve if we have had one before if (this.modelResolve) { @@ -225,8 +225,8 @@ export class UntitledEditorInput extends EditorInput implements IEncodingSupport return this.modelResolve; } - private createModel(): UntitledEditorModel { - const model = this._register(this.instantiationService.createInstance(UntitledEditorModel, this.preferredMode, this.resource, this.hasAssociatedFilePath, this.initialValue, this.preferredEncoding)); + private createModel(): UntitledTextEditorModel { + const model = this._register(this.instantiationService.createInstance(UntitledTextEditorModel, this.preferredMode, this.resource, this.hasAssociatedFilePath, this.initialValue, this.preferredEncoding)); // re-emit some events from the model this._register(model.onDidChangeContent(() => this._onDidModelChangeContent.fire())); @@ -242,7 +242,7 @@ export class UntitledEditorInput extends EditorInput implements IEncodingSupport } // Otherwise compare by properties - if (otherInput instanceof UntitledEditorInput) { + if (otherInput instanceof UntitledTextEditorInput) { return otherInput.resource.toString() === this.resource.toString(); } diff --git a/src/vs/workbench/common/editor/untitledEditorModel.ts b/src/vs/workbench/common/editor/untitledTextEditorModel.ts similarity index 93% rename from src/vs/workbench/common/editor/untitledEditorModel.ts rename to src/vs/workbench/common/editor/untitledTextEditorModel.ts index a72aaa52f1a..917f7feeff1 100644 --- a/src/vs/workbench/common/editor/untitledEditorModel.ts +++ b/src/vs/workbench/common/editor/untitledTextEditorModel.ts @@ -17,7 +17,7 @@ import { ITextBufferFactory } from 'vs/editor/common/model'; import { createTextBufferFactory } from 'vs/editor/common/model/textModel'; import { IResolvedTextEditorModel } from 'vs/editor/common/services/resolverService'; -export class UntitledEditorModel extends BaseTextEditorModel implements IEncodingSupport { +export class UntitledTextEditorModel extends BaseTextEditorModel implements IEncodingSupport { static DEFAULT_CONTENT_CHANGE_BUFFER_DELAY = CONTENT_CHANGE_EVENT_BUFFER_DELAY; @@ -48,7 +48,7 @@ export class UntitledEditorModel extends BaseTextEditorModel implements IEncodin ) { super(modelService, modeService); - this.contentChangeEventScheduler = this._register(new RunOnceScheduler(() => this._onDidChangeContent.fire(), UntitledEditorModel.DEFAULT_CONTENT_CHANGE_BUFFER_DELAY)); + this.contentChangeEventScheduler = this._register(new RunOnceScheduler(() => this._onDidChangeContent.fire(), UntitledTextEditorModel.DEFAULT_CONTENT_CHANGE_BUFFER_DELAY)); this.registerListeners(); } @@ -137,7 +137,7 @@ export class UntitledEditorModel extends BaseTextEditorModel implements IEncodin return this.backupFileService.hasBackupSync(this.resource, this.versionId); } - async load(): Promise { + async load(): Promise { // Check for backups first let backup: IResolvedBackup | undefined = undefined; @@ -178,7 +178,7 @@ export class UntitledEditorModel extends BaseTextEditorModel implements IEncodin // Listen to mode changes this._register(textEditorModel.onDidChangeLanguage(() => this.onConfigurationChange())); // mode change can have impact on config - return this as UntitledEditorModel & IResolvedTextEditorModel; + return this as UntitledTextEditorModel & IResolvedTextEditorModel; } private onModelContentChanged(): void { @@ -188,7 +188,7 @@ export class UntitledEditorModel extends BaseTextEditorModel implements IEncodin this.versionId++; - // mark the untitled editor as non-dirty once its content becomes empty and we do + // mark the untitled text editor as non-dirty once its content becomes empty and we do // not have an associated path set. we never want dirty indicator in that case. if (!this._hasAssociatedFilePath && this.textEditorModel.getLineCount() === 1 && this.textEditorModel.getLineContent(1) === '') { this.setDirty(false); diff --git a/src/vs/workbench/contrib/backup/common/backupModelTracker.ts b/src/vs/workbench/contrib/backup/common/backupModelTracker.ts index 21960a95a6c..484a7ddce40 100644 --- a/src/vs/workbench/contrib/backup/common/backupModelTracker.ts +++ b/src/vs/workbench/contrib/backup/common/backupModelTracker.ts @@ -7,7 +7,7 @@ import { URI as Uri } from 'vs/base/common/uri'; import { IBackupFileService } from 'vs/workbench/services/backup/common/backup'; import { Disposable } from 'vs/base/common/lifecycle'; import { ITextFileService, TextFileModelChangeEvent, StateChange, IAutoSaveConfiguration } from 'vs/workbench/services/textfile/common/textfiles'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { IWorkbenchContribution } from 'vs/workbench/common/contributions'; import { CONTENT_CHANGE_EVENT_BUFFER_DELAY } from 'vs/platform/files/common/files'; @@ -20,7 +20,7 @@ export class BackupModelTracker extends Disposable implements IWorkbenchContribu constructor( @IBackupFileService private readonly backupFileService: IBackupFileService, @ITextFileService private readonly textFileService: ITextFileService, - @IUntitledEditorService private readonly untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService private readonly untitledTextEditorService: IUntitledTextEditorService, ) { super(); @@ -35,8 +35,8 @@ export class BackupModelTracker extends Disposable implements IWorkbenchContribu this._register(this.textFileService.models.onModelDisposed(e => this.discardBackup(e))); // Listen for untitled model changes - this._register(this.untitledEditorService.onDidChangeContent(e => this.onUntitledModelChanged(e))); - this._register(this.untitledEditorService.onDidDisposeModel(e => this.discardBackup(e))); + this._register(this.untitledTextEditorService.onDidChangeContent(e => this.onUntitledModelChanged(e))); + this._register(this.untitledTextEditorService.onDidDisposeModel(e => this.discardBackup(e))); // Listen to config changes this._register(this.textFileService.onAutoSaveConfigurationChange(c => this.onAutoSaveConfigurationChange(c))); @@ -63,8 +63,8 @@ export class BackupModelTracker extends Disposable implements IWorkbenchContribu } private onUntitledModelChanged(resource: Uri): void { - if (this.untitledEditorService.isDirty(resource)) { - this.untitledEditorService.loadOrCreate({ resource }).then(model => model.backup()); + if (this.untitledTextEditorService.isDirty(resource)) { + this.untitledTextEditorService.loadOrCreate({ resource }).then(model => model.backup()); } else { this.discardBackup(resource); } diff --git a/src/vs/workbench/contrib/backup/common/backupRestorer.ts b/src/vs/workbench/contrib/backup/common/backupRestorer.ts index 89117d73483..cfe126edd4b 100644 --- a/src/vs/workbench/contrib/backup/common/backupRestorer.ts +++ b/src/vs/workbench/contrib/backup/common/backupRestorer.ts @@ -10,7 +10,7 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic import { IResourceInput } from 'vs/platform/editor/common/editor'; import { Schemas } from 'vs/base/common/network'; import { ILifecycleService, LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; -import { IUntitledResourceInput } from 'vs/workbench/common/editor'; +import { IUntitledTextResourceInput } from 'vs/workbench/common/editor'; import { toLocalResource } from 'vs/base/common/resources'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; @@ -74,7 +74,7 @@ export class BackupRestorer implements IWorkbenchContribution { await this.editorService.openEditors(inputs); } - private resolveInput(resource: URI, index: number, hasOpenedEditors: boolean): IResourceInput | IUntitledResourceInput { + private resolveInput(resource: URI, index: number, hasOpenedEditors: boolean): IResourceInput | IUntitledTextResourceInput { const options = { pinned: true, preserveFocus: true, inactive: index > 0 || hasOpenedEditors }; // this is a (weak) strategy to find out if the untitled input had @@ -86,4 +86,4 @@ export class BackupRestorer implements IWorkbenchContribution { return { resource, options }; } -} \ No newline at end of file +} diff --git a/src/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.ts b/src/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.ts index 381de357c7e..218ba69adf9 100644 --- a/src/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.ts +++ b/src/vs/workbench/contrib/codeEditor/browser/inspectKeybindings.ts @@ -7,7 +7,7 @@ import * as nls from 'vs/nls'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { EditorAction, ServicesAccessor, registerEditorAction } from 'vs/editor/browser/editorExtensions'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; -import { IUntitledResourceInput } from 'vs/workbench/common/editor'; +import { IUntitledTextResourceInput } from 'vs/workbench/common/editor'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { Registry } from 'vs/platform/registry/common/platform'; import { Extensions as ActionExtensions, IWorkbenchActionRegistry } from 'vs/workbench/common/actions'; @@ -29,7 +29,7 @@ class InspectKeyMap extends EditorAction { const keybindingService = accessor.get(IKeybindingService); const editorService = accessor.get(IEditorService); - editorService.openEditor({ contents: keybindingService._dumpDebugInfo(), options: { pinned: true } } as IUntitledResourceInput); + editorService.openEditor({ contents: keybindingService._dumpDebugInfo(), options: { pinned: true } } as IUntitledTextResourceInput); } } @@ -49,7 +49,7 @@ class InspectKeyMapJSON extends Action { } public run(): Promise { - return this._editorService.openEditor({ contents: this._keybindingService._dumpDebugInfoJSON(), options: { pinned: true } } as IUntitledResourceInput); + return this._editorService.openEditor({ contents: this._keybindingService._dumpDebugInfoJSON(), options: { pinned: true } } as IUntitledTextResourceInput); } } diff --git a/src/vs/workbench/contrib/files/browser/fileActions.ts b/src/vs/workbench/contrib/files/browser/fileActions.ts index cc1be00aadd..ec20bae93dd 100644 --- a/src/vs/workbench/contrib/files/browser/fileActions.ts +++ b/src/vs/workbench/contrib/files/browser/fileActions.ts @@ -20,7 +20,7 @@ import { ITextFileService } from 'vs/workbench/services/textfile/common/textfile import { IFileService, AutoSaveConfiguration } from 'vs/platform/files/common/files'; import { toResource, SideBySideEditor } from 'vs/workbench/common/editor'; import { ExplorerViewlet } from 'vs/workbench/contrib/files/browser/explorerViewlet'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; @@ -526,7 +526,7 @@ export abstract class BaseSaveAllAction extends Action { id: string, label: string, @ITextFileService private readonly textFileService: ITextFileService, - @IUntitledEditorService private readonly untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService private readonly untitledTextEditorService: IUntitledTextEditorService, @ICommandService protected commandService: ICommandService, @INotificationService private notificationService: INotificationService, ) { @@ -550,7 +550,7 @@ export abstract class BaseSaveAllAction extends Action { this._register(this.textFileService.models.onModelsSaveError(e => this.updateEnablement(true))); if (this.includeUntitled()) { - this._register(this.untitledEditorService.onDidChangeDirty(resource => this.updateEnablement(this.untitledEditorService.isDirty(resource)))); + this._register(this.untitledTextEditorService.onDidChangeDirty(resource => this.updateEnablement(this.untitledTextEditorService.isDirty(resource)))); } } diff --git a/src/vs/workbench/contrib/files/browser/fileCommands.ts b/src/vs/workbench/contrib/files/browser/fileCommands.ts index 53b68253a86..e6192c5c094 100644 --- a/src/vs/workbench/contrib/files/browser/fileCommands.ts +++ b/src/vs/workbench/contrib/files/browser/fileCommands.ts @@ -21,7 +21,7 @@ import { CommandsRegistry } from 'vs/platform/commands/common/commands'; import { RawContextKey, IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IResourceInput } from 'vs/platform/editor/common/editor'; import { IFileService } from 'vs/platform/files/common/files'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { IEditorViewState } from 'vs/editor/common/editorCommon'; import { getCodeEditor } from 'vs/editor/browser/editorBrowser'; import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; @@ -109,7 +109,7 @@ async function save( options: ISaveOptions | undefined, editorService: IEditorService, fileService: IFileService, - untitledEditorService: IUntitledEditorService, + untitledTextEditorService: IUntitledTextEditorService, textFileService: ITextFileService, editorGroupService: IEditorGroupsService, environmentService: IWorkbenchEnvironmentService @@ -120,7 +120,7 @@ async function save( // Save As (or Save untitled with associated path) if (isSaveAs || resource.scheme === Schemas.untitled) { - return doSaveAs(resource, isSaveAs, options, editorService, fileService, untitledEditorService, textFileService, editorGroupService, environmentService); + return doSaveAs(resource, isSaveAs, options, editorService, fileService, untitledTextEditorService, textFileService, editorGroupService, environmentService); } // Save @@ -133,7 +133,7 @@ async function doSaveAs( options: ISaveOptions | undefined, editorService: IEditorService, fileService: IFileService, - untitledEditorService: IUntitledEditorService, + untitledTextEditorService: IUntitledTextEditorService, textFileService: ITextFileService, editorGroupService: IEditorGroupsService, environmentService: IWorkbenchEnvironmentService @@ -149,7 +149,7 @@ async function doSaveAs( // Special case: an untitled file with associated path gets saved directly unless "saveAs" is true let target: URI | undefined; - if (!isSaveAs && resource.scheme === Schemas.untitled && untitledEditorService.hasAssociatedFilePath(resource)) { + if (!isSaveAs && resource.scheme === Schemas.untitled && untitledTextEditorService.hasAssociatedFilePath(resource)) { const result = await textFileService.save(resource, options); if (result) { target = toLocalResource(resource, environmentService.configuration.remoteAuthority); @@ -217,7 +217,7 @@ function ensureForcedSave(options?: ISaveOptions): ISaveOptions { return options; } -async function saveAll(saveAllArguments: any, editorService: IEditorService, untitledEditorService: IUntitledEditorService, +async function saveAll(saveAllArguments: any, editorService: IEditorService, untitledTextEditorService: IUntitledTextEditorService, textFileService: ITextFileService, editorGroupService: IEditorGroupsService): Promise { // Store some properties per untitled file to restore later after save is completed @@ -227,13 +227,13 @@ async function saveAll(saveAllArguments: any, editorService: IEditorService, unt const activeEditorResource = group.activeEditor && group.activeEditor.getResource(); group.editors.forEach(e => { const resource = e.getResource(); - if (resource && untitledEditorService.isDirty(resource)) { + if (resource && untitledTextEditorService.isDirty(resource)) { if (!groupIdToUntitledResourceInput.has(group.id)) { groupIdToUntitledResourceInput.set(group.id, []); } groupIdToUntitledResourceInput.get(group.id)!.push({ - encoding: untitledEditorService.getEncoding(resource), + encoding: untitledTextEditorService.getEncoding(resource), resource, options: { inactive: activeEditorResource ? !isEqual(activeEditorResource, resource) : true, @@ -497,7 +497,7 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ resource = withUndefinedAsNull(getResourceForCommand(resourceOrObject, accessor.get(IListService), editorService)); } - return save(resource, true, undefined, editorService, accessor.get(IFileService), accessor.get(IUntitledEditorService), accessor.get(ITextFileService), accessor.get(IEditorGroupsService), accessor.get(IWorkbenchEnvironmentService)); + return save(resource, true, undefined, editorService, accessor.get(IFileService), accessor.get(IUntitledTextEditorService), accessor.get(ITextFileService), accessor.get(IEditorGroupsService), accessor.get(IWorkbenchEnvironmentService)); } }); @@ -512,9 +512,9 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ if (resources.length === 1) { // If only one resource is selected explictly call save since the behavior is a bit different than save all #41841 - return save(resources[0], false, undefined, editorService, accessor.get(IFileService), accessor.get(IUntitledEditorService), accessor.get(ITextFileService), accessor.get(IEditorGroupsService), accessor.get(IWorkbenchEnvironmentService)); + return save(resources[0], false, undefined, editorService, accessor.get(IFileService), accessor.get(IUntitledTextEditorService), accessor.get(ITextFileService), accessor.get(IEditorGroupsService), accessor.get(IWorkbenchEnvironmentService)); } - return saveAll(resources, editorService, accessor.get(IUntitledEditorService), accessor.get(ITextFileService), accessor.get(IEditorGroupsService)); + return saveAll(resources, editorService, accessor.get(IUntitledTextEditorService), accessor.get(ITextFileService), accessor.get(IEditorGroupsService)); } }); @@ -529,7 +529,7 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ const resource = toResource(editorService.activeEditor, { supportSideBySide: SideBySideEditor.MASTER }); if (resource) { - return save(resource, false, { skipSaveParticipants: true }, editorService, accessor.get(IFileService), accessor.get(IUntitledEditorService), accessor.get(ITextFileService), accessor.get(IEditorGroupsService), accessor.get(IWorkbenchEnvironmentService)); + return save(resource, false, { skipSaveParticipants: true }, editorService, accessor.get(IFileService), accessor.get(IUntitledTextEditorService), accessor.get(ITextFileService), accessor.get(IEditorGroupsService), accessor.get(IWorkbenchEnvironmentService)); } return undefined; @@ -539,7 +539,7 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({ CommandsRegistry.registerCommand({ id: SAVE_ALL_COMMAND_ID, handler: (accessor) => { - return saveAll(true, accessor.get(IEditorService), accessor.get(IUntitledEditorService), accessor.get(ITextFileService), accessor.get(IEditorGroupsService)); + return saveAll(true, accessor.get(IEditorService), accessor.get(IUntitledTextEditorService), accessor.get(ITextFileService), accessor.get(IEditorGroupsService)); } }); @@ -567,14 +567,14 @@ CommandsRegistry.registerCommand({ }); } - return saveAll(saveAllArg, accessor.get(IEditorService), accessor.get(IUntitledEditorService), accessor.get(ITextFileService), accessor.get(IEditorGroupsService)); + return saveAll(saveAllArg, accessor.get(IEditorService), accessor.get(IUntitledTextEditorService), accessor.get(ITextFileService), accessor.get(IEditorGroupsService)); } }); CommandsRegistry.registerCommand({ id: SAVE_FILES_COMMAND_ID, handler: (accessor) => { - return saveAll(false, accessor.get(IEditorService), accessor.get(IUntitledEditorService), accessor.get(ITextFileService), accessor.get(IEditorGroupsService)); + return saveAll(false, accessor.get(IEditorService), accessor.get(IUntitledTextEditorService), accessor.get(ITextFileService), accessor.get(IEditorGroupsService)); } }); diff --git a/src/vs/workbench/contrib/files/browser/views/openEditorsView.ts b/src/vs/workbench/contrib/files/browser/views/openEditorsView.ts index 76d622c83bb..abbc65cacae 100644 --- a/src/vs/workbench/contrib/files/browser/views/openEditorsView.ts +++ b/src/vs/workbench/contrib/files/browser/views/openEditorsView.ts @@ -16,7 +16,7 @@ import { IEditorInput, Verbosity } from 'vs/workbench/common/editor'; import { SaveAllAction, SaveAllInGroupAction, CloseGroupAction } from 'vs/workbench/contrib/files/browser/fileActions'; import { OpenEditorsFocusedContext, ExplorerFocusedContext, IFilesConfiguration, OpenEditor } from 'vs/workbench/contrib/files/common/files'; import { ITextFileService, AutoSaveMode } from 'vs/workbench/services/textfile/common/textfiles'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { CloseAllEditorsAction, CloseEditorAction } from 'vs/workbench/browser/parts/editor/editorActions'; import { ToggleEditorLayoutAction } from 'vs/workbench/browser/actions/layoutActions'; import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey'; @@ -72,7 +72,7 @@ export class OpenEditorsView extends ViewletPanel { @IEditorGroupsService private readonly editorGroupService: IEditorGroupsService, @IConfigurationService configurationService: IConfigurationService, @IKeybindingService keybindingService: IKeybindingService, - @IUntitledEditorService private readonly untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService private readonly untitledTextEditorService: IUntitledTextEditorService, @IContextKeyService private readonly contextKeyService: IContextKeyService, @IThemeService private readonly themeService: IThemeService, @ITelemetryService private readonly telemetryService: ITelemetryService, @@ -100,7 +100,7 @@ export class OpenEditorsView extends ViewletPanel { this._register(this.configurationService.onDidChangeConfiguration(e => this.onConfigurationChange(e))); // Handle dirty counter - this._register(this.untitledEditorService.onDidChangeDirty(() => this.updateDirtyIndicator())); + this._register(this.untitledTextEditorService.onDidChangeDirty(() => this.updateDirtyIndicator())); this._register(this.textFileService.models.onModelsDirty(() => this.updateDirtyIndicator())); this._register(this.textFileService.models.onModelsSaved(() => this.updateDirtyIndicator())); this._register(this.textFileService.models.onModelsSaveError(() => this.updateDirtyIndicator())); @@ -414,7 +414,7 @@ export class OpenEditorsView extends ViewletPanel { private updateDirtyIndicator(): void { let dirty = this.textFileService.getAutoSaveMode() !== AutoSaveMode.AFTER_SHORT_DELAY ? this.textFileService.getDirty().length - : this.untitledEditorService.getDirty().length; + : this.untitledTextEditorService.getDirty().length; if (dirty === 0) { dom.addClass(this.dirtyCountElement, 'hidden'); } else { diff --git a/src/vs/workbench/contrib/files/common/dirtyFilesTracker.ts b/src/vs/workbench/contrib/files/common/dirtyFilesTracker.ts index e0ac1a77a18..6d070bd03e4 100644 --- a/src/vs/workbench/contrib/files/common/dirtyFilesTracker.ts +++ b/src/vs/workbench/contrib/files/common/dirtyFilesTracker.ts @@ -11,7 +11,7 @@ import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { Disposable, MutableDisposable } from 'vs/base/common/lifecycle'; import { URI } from 'vs/base/common/uri'; import { IActivityService, NumberBadge } from 'vs/workbench/services/activity/common/activity'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import * as arrays from 'vs/base/common/arrays'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; @@ -24,7 +24,7 @@ export class DirtyFilesTracker extends Disposable implements IWorkbenchContribut @ILifecycleService private readonly lifecycleService: ILifecycleService, @IEditorService private readonly editorService: IEditorService, @IActivityService private readonly activityService: IActivityService, - @IUntitledEditorService protected readonly untitledEditorService: IUntitledEditorService + @IUntitledTextEditorService protected readonly untitledTextEditorService: IUntitledTextEditorService ) { super(); @@ -34,7 +34,7 @@ export class DirtyFilesTracker extends Disposable implements IWorkbenchContribut private registerListeners(): void { // Local text file changes - this._register(this.untitledEditorService.onDidChangeDirty(e => this.onUntitledDidChangeDirty(e))); + this._register(this.untitledTextEditorService.onDidChangeDirty(e => this.onUntitledDidChangeDirty(e))); this._register(this.textFileService.models.onModelsDirty(e => this.onTextFilesDirty(e))); this._register(this.textFileService.models.onModelsSaved(e => this.onTextFilesSaved(e))); this._register(this.textFileService.models.onModelsSaveError(e => this.onTextFilesSaveError(e))); @@ -49,7 +49,7 @@ export class DirtyFilesTracker extends Disposable implements IWorkbenchContribut } protected onUntitledDidChangeDirty(resource: URI): void { - const gotDirty = this.untitledEditorService.isDirty(resource); + const gotDirty = this.untitledTextEditorService.isDirty(resource); if (gotDirty || this.hasDirtyCount) { this.updateActivityBadge(); diff --git a/src/vs/workbench/contrib/files/common/files.ts b/src/vs/workbench/contrib/files/common/files.ts index a55bbfa8ed4..d4e85e31ccf 100644 --- a/src/vs/workbench/contrib/files/common/files.ts +++ b/src/vs/workbench/contrib/files/common/files.ts @@ -30,6 +30,7 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic * Explorer viewlet id. */ export const VIEWLET_ID = 'workbench.view.explorer'; + /** * Explorer viewlet container. */ @@ -101,7 +102,6 @@ export const FILE_EDITOR_INPUT_ID = 'workbench.editors.files.fileEditorInput'; */ export const BINARY_FILE_EDITOR_ID = 'workbench.editors.files.binaryFileEditor'; - export interface IFilesConfiguration extends PlatformIFilesConfiguration, IWorkbenchEditorConfiguration { explorer: { openEditors: { @@ -219,39 +219,39 @@ export class OpenEditor implements IEditorIdentifier { // noop } - public get editor() { + get editor() { return this._editor; } - public get editorIndex() { + get editorIndex() { return this._group.getIndexOfEditor(this.editor); } - public get group() { + get group() { return this._group; } - public get groupId() { + get groupId() { return this._group.id; } - public getId(): string { + getId(): string { return `openeditor:${this.groupId}:${this.editorIndex}:${this.editor.getName()}:${this.editor.getDescription()}`; } - public isPreview(): boolean { + isPreview(): boolean { return this._group.previewEditor === this.editor; } - public isUntitled(): boolean { + isUntitled(): boolean { return !!toResource(this.editor, { supportSideBySide: SideBySideEditor.MASTER, filterByScheme: Schemas.untitled }); } - public isDirty(): boolean { + isDirty(): boolean { return this.editor.isDirty(); } - public getResource(): URI | undefined { + getResource(): URI | undefined { return toResource(this.editor, { supportSideBySide: SideBySideEditor.MASTER }); } } diff --git a/src/vs/workbench/contrib/files/electron-browser/dirtyFilesTracker.ts b/src/vs/workbench/contrib/files/electron-browser/dirtyFilesTracker.ts index 698fbb6acb9..6f85e8d1bdc 100644 --- a/src/vs/workbench/contrib/files/electron-browser/dirtyFilesTracker.ts +++ b/src/vs/workbench/contrib/files/electron-browser/dirtyFilesTracker.ts @@ -8,7 +8,7 @@ import { platform, Platform } from 'vs/base/common/platform'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { URI } from 'vs/base/common/uri'; import { IActivityService } from 'vs/workbench/services/activity/common/activity'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { DirtyFilesTracker } from 'vs/workbench/contrib/files/common/dirtyFilesTracker'; import { IElectronService } from 'vs/platform/electron/node/electron'; @@ -21,16 +21,16 @@ export class NativeDirtyFilesTracker extends DirtyFilesTracker { @ILifecycleService lifecycleService: ILifecycleService, @IEditorService editorService: IEditorService, @IActivityService activityService: IActivityService, - @IUntitledEditorService protected readonly untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService protected readonly untitledTextEditorService: IUntitledTextEditorService, @IElectronService private readonly electronService: IElectronService ) { - super(textFileService, lifecycleService, editorService, activityService, untitledEditorService); + super(textFileService, lifecycleService, editorService, activityService, untitledTextEditorService); this.isDocumentedEdited = false; } protected onUntitledDidChangeDirty(resource: URI): void { - const gotDirty = this.untitledEditorService.isDirty(resource); + const gotDirty = this.untitledTextEditorService.isDirty(resource); if ((!this.isDocumentedEdited && gotDirty) || (this.isDocumentedEdited && !gotDirty)) { this.updateDocumentEdited(); } diff --git a/src/vs/workbench/contrib/search/browser/searchView.ts b/src/vs/workbench/contrib/search/browser/searchView.ts index 0e0a0adb48c..b9c4496424f 100644 --- a/src/vs/workbench/contrib/search/browser/searchView.ts +++ b/src/vs/workbench/contrib/search/browser/searchView.ts @@ -53,7 +53,7 @@ import { getOutOfWorkspaceEditorResources } from 'vs/workbench/contrib/search/co import { FileMatch, FileMatchOrMatch, IChangeEvent, ISearchWorkbenchService, Match, RenderableMatch, searchMatchComparer, SearchModel, SearchResult, FolderMatch, FolderMatchWithResource } from 'vs/workbench/contrib/search/common/searchModel'; import { ACTIVE_GROUP, IEditorService, SIDE_GROUP } from 'vs/workbench/services/editor/common/editorService'; import { IPreferencesService, ISettingsEditorOptions } from 'vs/workbench/services/preferences/common/preferences'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { relativePath } from 'vs/base/common/resources'; import { IAccessibilityService, AccessibilitySupport } from 'vs/platform/accessibility/common/accessibility'; import { ViewletPanel, IViewletPanelOptions } from 'vs/workbench/browser/parts/views/panelViewlet'; @@ -143,7 +143,7 @@ export class SearchView extends ViewletPanel { @ISearchWorkbenchService private readonly searchWorkbenchService: ISearchWorkbenchService, @IContextKeyService private readonly contextKeyService: IContextKeyService, @IReplaceService private readonly replaceService: IReplaceService, - @IUntitledEditorService private readonly untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService private readonly untitledTextEditorService: IUntitledTextEditorService, @IPreferencesService private readonly preferencesService: IPreferencesService, @IThemeService protected themeService: IThemeService, @ISearchHistoryService private readonly searchHistoryService: ISearchHistoryService, @@ -176,7 +176,7 @@ export class SearchView extends ViewletPanel { this.viewletState = this.memento.getMemento(StorageScope.WORKSPACE); this._register(this.fileService.onFileChanges(e => this.onFilesChanged(e))); - this._register(this.untitledEditorService.onDidChangeDirty(e => this.onUntitledDidChangeDirty(e))); + this._register(this.untitledTextEditorService.onDidChangeDirty(e => this.onUntitledDidChangeDirty(e))); this._register(this.contextService.onDidChangeWorkbenchState(() => this.onDidChangeWorkbenchState())); this._register(this.searchHistoryService.onDidClearHistory(() => this.clearHistory())); @@ -1570,7 +1570,7 @@ export class SearchView extends ViewletPanel { } // remove search results from this resource as it got disposed - if (!this.untitledEditorService.isDirty(resource)) { + if (!this.untitledTextEditorService.isDirty(resource)) { const matches = this.viewModel.searchResult.matches(); for (let i = 0, len = matches.length; i < len; i++) { if (resource.toString() === matches[i].resource.toString()) { diff --git a/src/vs/workbench/electron-browser/window.ts b/src/vs/workbench/electron-browser/window.ts index 23ea962fdf8..d5933e71057 100644 --- a/src/vs/workbench/electron-browser/window.ts +++ b/src/vs/workbench/electron-browser/window.ts @@ -11,7 +11,7 @@ import * as DOM from 'vs/base/browser/dom'; import { Separator } from 'vs/base/browser/ui/actionbar/actionbar'; import { IAction } from 'vs/base/common/actions'; import { IFileService } from 'vs/platform/files/common/files'; -import { toResource, IUntitledResourceInput, SideBySideEditor, pathsToEditors } from 'vs/workbench/common/editor'; +import { toResource, IUntitledTextResourceInput, SideBySideEditor, pathsToEditors } from 'vs/workbench/common/editor'; import { IEditorService, IResourceEditor } from 'vs/workbench/services/editor/common/editorService'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IWindowSettings, IOpenFileRequest, IWindowsConfiguration, IAddFoldersRequest, IRunActionInWindowRequest, IRunKeybindingInWindowRequest, getTitleBarStyle } from 'vs/platform/windows/common/windows'; @@ -628,7 +628,7 @@ export class ElectronWindow extends Disposable { }); } - private async openResources(resources: Array, diffMode: boolean): Promise { + private async openResources(resources: Array, diffMode: boolean): Promise { await this.lifecycleService.when(LifecyclePhase.Ready); // In diffMode we open 2 resources as diff diff --git a/src/vs/workbench/services/editor/browser/editorService.ts b/src/vs/workbench/services/editor/browser/editorService.ts index 9a1f593fa48..fcdb63ab519 100644 --- a/src/vs/workbench/services/editor/browser/editorService.ts +++ b/src/vs/workbench/services/editor/browser/editorService.ts @@ -5,12 +5,12 @@ import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { IResourceInput, ITextEditorOptions, IEditorOptions, EditorActivation } from 'vs/platform/editor/common/editor'; -import { IEditorInput, IEditor, GroupIdentifier, IFileEditorInput, IUntitledResourceInput, IResourceDiffInput, IResourceSideBySideInput, IEditorInputFactoryRegistry, Extensions as EditorExtensions, IFileInputFactory, EditorInput, SideBySideEditorInput, IEditorInputWithOptions, isEditorInputWithOptions, EditorOptions, TextEditorOptions, IEditorIdentifier, IEditorCloseEvent, ITextEditor, ITextDiffEditor, ITextSideBySideEditor, toResource, SideBySideEditor } from 'vs/workbench/common/editor'; +import { IEditorInput, IEditor, GroupIdentifier, IFileEditorInput, IUntitledTextResourceInput, IResourceDiffInput, IResourceSideBySideInput, IEditorInputFactoryRegistry, Extensions as EditorExtensions, IFileInputFactory, EditorInput, SideBySideEditorInput, IEditorInputWithOptions, isEditorInputWithOptions, EditorOptions, TextEditorOptions, IEditorIdentifier, IEditorCloseEvent, ITextEditor, ITextDiffEditor, ITextSideBySideEditor, toResource, SideBySideEditor } from 'vs/workbench/common/editor'; import { ResourceEditorInput } from 'vs/workbench/common/editor/resourceEditorInput'; import { DataUriEditorInput } from 'vs/workbench/common/editor/dataUriEditorInput'; import { Registry } from 'vs/platform/registry/common/platform'; import { ResourceMap } from 'vs/base/common/map'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { IFileService } from 'vs/platform/files/common/files'; import { Schemas } from 'vs/base/common/network'; import { Event, Emitter } from 'vs/base/common/event'; @@ -62,7 +62,7 @@ export class EditorService extends Disposable implements EditorServiceImpl { constructor( @IEditorGroupsService private readonly editorGroupService: IEditorGroupsService, - @IUntitledEditorService private readonly untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService private readonly untitledTextEditorService: IUntitledTextEditorService, @IInstantiationService private readonly instantiationService: IInstantiationService, @ILabelService private readonly labelService: ILabelService, @IFileService private readonly fileService: IFileService, @@ -221,7 +221,7 @@ export class EditorService extends Disposable implements EditorServiceImpl { //#region openEditor() openEditor(editor: IEditorInput, options?: IEditorOptions | ITextEditorOptions, group?: OpenInEditorGroup): Promise; - openEditor(editor: IResourceInput | IUntitledResourceInput, group?: OpenInEditorGroup): Promise; + openEditor(editor: IResourceInput | IUntitledTextResourceInput, group?: OpenInEditorGroup): Promise; openEditor(editor: IResourceDiffInput, group?: OpenInEditorGroup): Promise; openEditor(editor: IResourceSideBySideInput, group?: OpenInEditorGroup): Promise; async openEditor(editor: IEditorInput | IResourceEditor, optionsOrGroup?: IEditorOptions | ITextEditorOptions | OpenInEditorGroup, group?: OpenInEditorGroup): Promise { @@ -424,7 +424,7 @@ export class EditorService extends Disposable implements EditorServiceImpl { //#region isOpen() - isOpen(editor: IEditorInput | IResourceInput | IUntitledResourceInput): boolean { + isOpen(editor: IEditorInput | IResourceInput | IUntitledTextResourceInput): boolean { return !!this.doGetOpened(editor); } @@ -432,13 +432,13 @@ export class EditorService extends Disposable implements EditorServiceImpl { //#region getOpend() - getOpened(editor: IResourceInput | IUntitledResourceInput): IEditorInput | undefined { + getOpened(editor: IResourceInput | IUntitledTextResourceInput): IEditorInput | undefined { return this.doGetOpened(editor); } - private doGetOpened(editor: IEditorInput | IResourceInput | IUntitledResourceInput): IEditorInput | undefined { + private doGetOpened(editor: IEditorInput | IResourceInput | IUntitledTextResourceInput): IEditorInput | undefined { if (!(editor instanceof EditorInput)) { - const resourceInput = editor as IResourceInput | IUntitledResourceInput; + const resourceInput = editor as IResourceInput | IUntitledTextResourceInput; if (!resourceInput.resource) { return undefined; // we need a resource at least } @@ -462,7 +462,7 @@ export class EditorService extends Disposable implements EditorServiceImpl { continue; // need a resource to compare with } - const resourceInput = editor as IResourceInput | IUntitledResourceInput; + const resourceInput = editor as IResourceInput | IUntitledTextResourceInput; if (resourceInput.resource && isEqual(resource, resourceInput.resource)) { return editorInGroup; } @@ -568,9 +568,9 @@ export class EditorService extends Disposable implements EditorServiceImpl { } // Untitled file support - const untitledInput = input as IUntitledResourceInput; + const untitledInput = input as IUntitledTextResourceInput; if (untitledInput.forceUntitled || !untitledInput.resource || (untitledInput.resource && untitledInput.resource.scheme === Schemas.untitled)) { - return this.untitledEditorService.createOrGet(untitledInput.resource, untitledInput.mode, untitledInput.contents, untitledInput.encoding); + return this.untitledTextEditorService.createOrGet(untitledInput.resource, untitledInput.mode, untitledInput.contents, untitledInput.encoding); } // Resource Editor Support @@ -644,8 +644,8 @@ export class EditorService extends Disposable implements EditorServiceImpl { return undefined; } - // Do not try to extract any paths from simple untitled editors - if (res.scheme === Schemas.untitled && !this.untitledEditorService.hasAssociatedFilePath(res)) { + // Do not try to extract any paths from simple untitled text editors + if (res.scheme === Schemas.untitled && !this.untitledTextEditorService.hasAssociatedFilePath(res)) { return input.getName(); } @@ -674,7 +674,7 @@ export class DelegatingEditorService extends EditorService { constructor( @IEditorGroupsService editorGroupService: IEditorGroupsService, - @IUntitledEditorService untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService untitledTextEditorService: IUntitledTextEditorService, @IInstantiationService instantiationService: IInstantiationService, @ILabelService labelService: ILabelService, @IFileService fileService: IFileService, @@ -682,7 +682,7 @@ export class DelegatingEditorService extends EditorService { ) { super( editorGroupService, - untitledEditorService, + untitledTextEditorService, instantiationService, labelService, fileService, diff --git a/src/vs/workbench/services/editor/common/editorService.ts b/src/vs/workbench/services/editor/common/editorService.ts index 13825b028f0..e6411b1adb8 100644 --- a/src/vs/workbench/services/editor/common/editorService.ts +++ b/src/vs/workbench/services/editor/common/editorService.ts @@ -5,7 +5,7 @@ import { createDecorator, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { IResourceInput, IEditorOptions, ITextEditorOptions } from 'vs/platform/editor/common/editor'; -import { IEditorInput, IEditor, GroupIdentifier, IEditorInputWithOptions, IUntitledResourceInput, IResourceDiffInput, IResourceSideBySideInput, ITextEditor, ITextDiffEditor, ITextSideBySideEditor } from 'vs/workbench/common/editor'; +import { IEditorInput, IEditor, GroupIdentifier, IEditorInputWithOptions, IUntitledTextResourceInput, IResourceDiffInput, IResourceSideBySideInput, ITextEditor, ITextDiffEditor, ITextSideBySideEditor } from 'vs/workbench/common/editor'; import { Event } from 'vs/base/common/event'; import { IEditor as ICodeEditor } from 'vs/editor/common/editorCommon'; import { IEditorGroup, IEditorReplacement } from 'vs/workbench/services/editor/common/editorGroupsService'; @@ -13,7 +13,7 @@ import { IDisposable } from 'vs/base/common/lifecycle'; export const IEditorService = createDecorator('editorService'); -export type IResourceEditor = IResourceInput | IUntitledResourceInput | IResourceDiffInput | IResourceSideBySideInput; +export type IResourceEditor = IResourceInput | IUntitledTextResourceInput | IResourceDiffInput | IResourceSideBySideInput; export interface IResourceEditorReplacement { editor: IResourceEditor; @@ -121,7 +121,7 @@ export interface IEditorService { * opened to be active. */ openEditor(editor: IEditorInput, options?: IEditorOptions | ITextEditorOptions, group?: IEditorGroup | GroupIdentifier | SIDE_GROUP_TYPE | ACTIVE_GROUP_TYPE): Promise; - openEditor(editor: IResourceInput | IUntitledResourceInput, group?: IEditorGroup | GroupIdentifier | SIDE_GROUP_TYPE | ACTIVE_GROUP_TYPE): Promise; + openEditor(editor: IResourceInput | IUntitledTextResourceInput, group?: IEditorGroup | GroupIdentifier | SIDE_GROUP_TYPE | ACTIVE_GROUP_TYPE): Promise; openEditor(editor: IResourceDiffInput, group?: IEditorGroup | GroupIdentifier | SIDE_GROUP_TYPE | ACTIVE_GROUP_TYPE): Promise; openEditor(editor: IResourceSideBySideInput, group?: IEditorGroup | GroupIdentifier | SIDE_GROUP_TYPE | ACTIVE_GROUP_TYPE): Promise; @@ -158,7 +158,7 @@ export interface IEditorService { * * @param group optional to specify a group to check for the editor being opened */ - isOpen(editor: IEditorInput | IResourceInput | IUntitledResourceInput, group?: IEditorGroup | GroupIdentifier): boolean; + isOpen(editor: IEditorInput | IResourceInput | IUntitledTextResourceInput, group?: IEditorGroup | GroupIdentifier): boolean; /** * Get the actual opened editor input in any or a specific editor group based on the resource. @@ -167,7 +167,7 @@ export interface IEditorService { * * @param group optional to specify a group to check for the editor */ - getOpened(editor: IResourceInput | IUntitledResourceInput, group?: IEditorGroup | GroupIdentifier): IEditorInput | undefined; + getOpened(editor: IResourceInput | IUntitledTextResourceInput, group?: IEditorGroup | GroupIdentifier): IEditorInput | undefined; /** * Allows to override the opening of editors by installing a handler that will diff --git a/src/vs/workbench/services/editor/test/browser/editorService.test.ts b/src/vs/workbench/services/editor/test/browser/editorService.test.ts index c55ecf8cc50..9bfe2984f58 100644 --- a/src/vs/workbench/services/editor/test/browser/editorService.test.ts +++ b/src/vs/workbench/services/editor/test/browser/editorService.test.ts @@ -22,7 +22,7 @@ import { IEditorRegistry, EditorDescriptor, Extensions } from 'vs/workbench/brow import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { Registry } from 'vs/platform/registry/common/platform'; import { FileEditorInput } from 'vs/workbench/contrib/files/common/editors/fileEditorInput'; -import { UntitledEditorInput } from 'vs/workbench/common/editor/untitledEditorInput'; +import { UntitledTextEditorInput } from 'vs/workbench/common/editor/untitledTextEditorInput'; import { EditorServiceImpl } from 'vs/workbench/browser/parts/editor/editor'; import { CancellationToken } from 'vs/base/common/cancellation'; import { timeout } from 'vs/base/common/async'; @@ -30,7 +30,7 @@ import { toResource } from 'vs/base/test/common/utils'; import { IFileService } from 'vs/platform/files/common/files'; import { Disposable } from 'vs/base/common/lifecycle'; import { ModesRegistry } from 'vs/editor/common/modes/modesRegistry'; -import { UntitledEditorModel } from 'vs/workbench/common/editor/untitledEditorModel'; +import { UntitledTextEditorModel } from 'vs/workbench/common/editor/untitledTextEditorModel'; import { NullFileSystemProvider } from 'vs/platform/files/test/common/nullFileSystemProvider'; export class TestEditorControl extends BaseEditor { @@ -270,36 +270,36 @@ suite('EditorService', () => { // Untyped Input (untitled) input = service.createInput({ options: { selection: { startLineNumber: 1, startColumn: 1 } } }); - assert(input instanceof UntitledEditorInput); + assert(input instanceof UntitledTextEditorInput); // Untyped Input (untitled with contents) input = service.createInput({ contents: 'Hello Untitled', options: { selection: { startLineNumber: 1, startColumn: 1 } } }); - assert(input instanceof UntitledEditorInput); - let model = await input.resolve() as UntitledEditorModel; + assert(input instanceof UntitledTextEditorInput); + let model = await input.resolve() as UntitledTextEditorModel; assert.equal(model.textEditorModel!.getValue(), 'Hello Untitled'); // Untyped Input (untitled with mode) input = service.createInput({ mode, options: { selection: { startLineNumber: 1, startColumn: 1 } } }); - assert(input instanceof UntitledEditorInput); - model = await input.resolve() as UntitledEditorModel; + assert(input instanceof UntitledTextEditorInput); + model = await input.resolve() as UntitledTextEditorModel; assert.equal(model.getMode(), mode); // Untyped Input (untitled with file path) input = service.createInput({ resource: URI.file('/some/path.txt'), forceUntitled: true, options: { selection: { startLineNumber: 1, startColumn: 1 } } }); - assert(input instanceof UntitledEditorInput); - assert.ok((input as UntitledEditorInput).hasAssociatedFilePath); + assert(input instanceof UntitledTextEditorInput); + assert.ok((input as UntitledTextEditorInput).hasAssociatedFilePath); // Untyped Input (untitled with untitled resource) input = service.createInput({ resource: URI.parse('untitled://Untitled-1'), forceUntitled: true, options: { selection: { startLineNumber: 1, startColumn: 1 } } }); - assert(input instanceof UntitledEditorInput); - assert.ok(!(input as UntitledEditorInput).hasAssociatedFilePath); + assert(input instanceof UntitledTextEditorInput); + assert.ok(!(input as UntitledTextEditorInput).hasAssociatedFilePath); // Untyped Input (untitled with custom resource) const provider = instantiationService.createInstance(FileServiceProvider, 'untitled-custom'); input = service.createInput({ resource: URI.parse('untitled-custom://some/path'), forceUntitled: true, options: { selection: { startLineNumber: 1, startColumn: 1 } } }); - assert(input instanceof UntitledEditorInput); - assert.ok((input as UntitledEditorInput).hasAssociatedFilePath); + assert(input instanceof UntitledTextEditorInput); + assert.ok((input as UntitledTextEditorInput).hasAssociatedFilePath); provider.dispose(); diff --git a/src/vs/workbench/services/extensions/common/extensionHostProcessManager.ts b/src/vs/workbench/services/extensions/common/extensionHostProcessManager.ts index 8950a9e8c96..9ed5187fabe 100644 --- a/src/vs/workbench/services/extensions/common/extensionHostProcessManager.ts +++ b/src/vs/workbench/services/extensions/common/extensionHostProcessManager.ts @@ -22,7 +22,7 @@ import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; import { Registry } from 'vs/platform/registry/common/platform'; import { Extensions as ActionExtensions, IWorkbenchActionRegistry } from 'vs/workbench/common/actions'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; -import { IUntitledResourceInput } from 'vs/workbench/common/editor'; +import { IUntitledTextResourceInput } from 'vs/workbench/common/editor'; import { StopWatch } from 'vs/base/common/stopwatch'; import { VSBuffer } from 'vs/base/common/buffer'; import { IExtensionHostStarter } from 'vs/workbench/services/extensions/common/extensions'; @@ -403,7 +403,7 @@ export class MeasureExtHostLatencyAction extends Action { public async run(): Promise { const measurements = await Promise.all(getLatencyTestProviders().map(provider => provider.measure())); - this._editorService.openEditor({ contents: measurements.map(MeasureExtHostLatencyAction._print).join('\n\n'), options: { pinned: true } } as IUntitledResourceInput); + this._editorService.openEditor({ contents: measurements.map(MeasureExtHostLatencyAction._print).join('\n\n'), options: { pinned: true } } as IUntitledTextResourceInput); } private static _print(m: ExtHostLatencyResult): string { diff --git a/src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts b/src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts index 92cb4333d15..d4be17512c0 100644 --- a/src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts +++ b/src/vs/workbench/services/keybinding/test/electron-browser/keybindingEditing.test.ts @@ -38,7 +38,7 @@ import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editor import { KeybindingsEditingService } from 'vs/workbench/services/keybinding/common/keybindingEditing'; import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; import { TextModelResolverService } from 'vs/workbench/services/textmodelResolver/common/textModelResolverService'; -import { IUntitledEditorService, UntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService, UntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { TestBackupFileService, TestContextService, TestEditorGroupsService, TestEditorService, TestLifecycleService, TestTextFileService, TestTextResourcePropertiesService } from 'vs/workbench/test/workbenchTestServices'; import { FileService } from 'vs/platform/files/common/fileService'; import { Schemas } from 'vs/base/common/network'; @@ -103,7 +103,7 @@ suite('KeybindingsEditing', () => { fileService.registerProvider(Schemas.file, diskFileSystemProvider); fileService.registerProvider(Schemas.userData, new FileUserDataProvider(environmentService.appSettingsHome, environmentService.backupHome, diskFileSystemProvider, environmentService)); instantiationService.stub(IFileService, fileService); - instantiationService.stub(IUntitledEditorService, instantiationService.createInstance(UntitledEditorService)); + instantiationService.stub(IUntitledTextEditorService, instantiationService.createInstance(UntitledTextEditorService)); instantiationService.stub(ITextFileService, instantiationService.createInstance(TestTextFileService)); instantiationService.stub(ITextModelService, instantiationService.createInstance(TextModelResolverService)); instantiationService.stub(IBackupFileService, new TestBackupFileService()); diff --git a/src/vs/workbench/services/search/common/searchService.ts b/src/vs/workbench/services/search/common/searchService.ts index cdb840a46b3..b9c252c2ca0 100644 --- a/src/vs/workbench/services/search/common/searchService.ts +++ b/src/vs/workbench/services/search/common/searchService.ts @@ -19,7 +19,7 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; import { deserializeSearchError, FileMatch, ICachedSearchStats, IFileMatch, IFileQuery, IFileSearchStats, IFolderQuery, IProgressMessage, ISearchComplete, ISearchEngineStats, ISearchProgressItem, ISearchQuery, ISearchResultProvider, ISearchService, ITextQuery, pathIncludedInQuery, QueryType, SearchError, SearchErrorCode, SearchProviderType, isFileMatch, isProgressMessage } from 'vs/workbench/services/search/common/search'; import { addContextToEditorMatches, editorMatchesToTextSearchResults } from 'vs/workbench/services/search/common/searchHelpers'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; export class SearchService extends Disposable implements ISearchService { @@ -32,7 +32,7 @@ export class SearchService extends Disposable implements ISearchService { constructor( private readonly modelService: IModelService, - private readonly untitledEditorService: IUntitledEditorService, + private readonly untitledTextEditorService: IUntitledTextEditorService, private readonly editorService: IEditorService, private readonly telemetryService: ITelemetryService, private readonly logService: ILogService, @@ -393,7 +393,7 @@ export class SearchService extends Disposable implements ISearchService { // Support untitled files if (resource.scheme === Schemas.untitled) { - if (!this.untitledEditorService.exists(resource)) { + if (!this.untitledTextEditorService.exists(resource)) { return; } } @@ -442,14 +442,14 @@ export class SearchService extends Disposable implements ISearchService { export class RemoteSearchService extends SearchService { constructor( @IModelService modelService: IModelService, - @IUntitledEditorService untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService untitledTextEditorService: IUntitledTextEditorService, @IEditorService editorService: IEditorService, @ITelemetryService telemetryService: ITelemetryService, @ILogService logService: ILogService, @IExtensionService extensionService: IExtensionService, @IFileService fileService: IFileService ) { - super(modelService, untitledEditorService, editorService, telemetryService, logService, extensionService, fileService); + super(modelService, untitledTextEditorService, editorService, telemetryService, logService, extensionService, fileService); } } diff --git a/src/vs/workbench/services/search/node/searchService.ts b/src/vs/workbench/services/search/node/searchService.ts index 161dfdfc8d0..112134ad703 100644 --- a/src/vs/workbench/services/search/node/searchService.ts +++ b/src/vs/workbench/services/search/node/searchService.ts @@ -21,7 +21,7 @@ import { SearchChannelClient } from './searchIpc'; import { SearchService } from 'vs/workbench/services/search/common/searchService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IModelService } from 'vs/editor/common/services/modelService'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; @@ -31,7 +31,7 @@ import { parseSearchPort } from 'vs/platform/environment/node/environmentService export class LocalSearchService extends SearchService { constructor( @IModelService modelService: IModelService, - @IUntitledEditorService untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService untitledTextEditorService: IUntitledTextEditorService, @IEditorService editorService: IEditorService, @ITelemetryService telemetryService: ITelemetryService, @ILogService logService: ILogService, @@ -40,7 +40,7 @@ export class LocalSearchService extends SearchService { @IWorkbenchEnvironmentService readonly environmentService: IWorkbenchEnvironmentService, @IInstantiationService readonly instantiationService: IInstantiationService ) { - super(modelService, untitledEditorService, editorService, telemetryService, logService, extensionService, fileService); + super(modelService, untitledTextEditorService, editorService, telemetryService, logService, extensionService, fileService); this.diskSearch = instantiationService.createInstance(DiskSearch, !environmentService.isBuilt || environmentService.verbose, parseSearchPort(environmentService.args, environmentService.isBuilt)); diff --git a/src/vs/workbench/services/textfile/browser/browserTextFileService.ts b/src/vs/workbench/services/textfile/browser/browserTextFileService.ts index faf8c4f881a..39e02d196e3 100644 --- a/src/vs/workbench/services/textfile/browser/browserTextFileService.ts +++ b/src/vs/workbench/services/textfile/browser/browserTextFileService.ts @@ -46,7 +46,7 @@ export class BrowserTextFileService extends AbstractTextFileService { const model = this.models.get(dirtyResource); hasBackup = !!(model?.hasBackup()); } else if (dirtyResource.scheme === Schemas.untitled) { - hasBackup = this.untitledEditorService.hasBackup(dirtyResource); + hasBackup = this.untitledTextEditorService.hasBackup(dirtyResource); } if (!hasBackup) { diff --git a/src/vs/workbench/services/textfile/browser/textFileService.ts b/src/vs/workbench/services/textfile/browser/textFileService.ts index dd23e60c1c5..b77eb7be4c0 100644 --- a/src/vs/workbench/services/textfile/browser/textFileService.ts +++ b/src/vs/workbench/services/textfile/browser/textFileService.ts @@ -6,7 +6,7 @@ import * as nls from 'vs/nls'; import { URI } from 'vs/base/common/uri'; import * as objects from 'vs/base/common/objects'; -import { Event, Emitter, AsyncEmitter } from 'vs/base/common/event'; +import { Emitter, AsyncEmitter } from 'vs/base/common/event'; import * as platform from 'vs/base/common/platform'; import { IBackupFileService } from 'vs/workbench/services/backup/common/backup'; import { IResult, ITextFileOperationResult, ITextFileService, ITextFileStreamContent, IAutoSaveConfiguration, AutoSaveMode, SaveReason, ITextFileEditorModelManager, ITextFileEditorModel, ModelState, ISaveOptions, AutoSaveContext, ITextFileContent, IResourceEncodings, IReadTextFileOptions, IWriteTextFileOptions, toBufferOrReadable, TextFileOperationError, TextFileOperationResult, FileOperationWillRunEvent, FileOperationDidRunEvent } from 'vs/workbench/services/textfile/common/textfiles'; @@ -17,8 +17,8 @@ import { IFileService, IFilesConfiguration, FileOperationError, FileOperationRes import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { Disposable } from 'vs/base/common/lifecycle'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; -import { UntitledEditorModel } from 'vs/workbench/common/editor/untitledEditorModel'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; +import { UntitledTextEditorModel } from 'vs/workbench/common/editor/untitledTextEditorModel'; import { TextFileEditorModelManager } from 'vs/workbench/services/textfile/common/textFileEditorModelManager'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ResourceMap } from 'vs/base/common/map'; @@ -46,12 +46,13 @@ export abstract class AbstractTextFileService extends Disposable implements ITex _serviceBrand: undefined; - private readonly _onAutoSaveConfigurationChange: Emitter = this._register(new Emitter()); - readonly onAutoSaveConfigurationChange: Event = this._onAutoSaveConfigurationChange.event; + //#region events - private readonly _onFilesAssociationChange: Emitter = this._register(new Emitter()); - readonly onFilesAssociationChange: Event = this._onFilesAssociationChange.event; + private readonly _onAutoSaveConfigurationChange = this._register(new Emitter()); + readonly onAutoSaveConfigurationChange = this._onAutoSaveConfigurationChange.event; + private readonly _onFilesAssociationChange = this._register(new Emitter()); + readonly onFilesAssociationChange = this._onFilesAssociationChange.event; private _onWillRunOperation = this._register(new AsyncEmitter()); readonly onWillRunOperation = this._onWillRunOperation.event; @@ -59,6 +60,7 @@ export abstract class AbstractTextFileService extends Disposable implements ITex private _onDidRunOperation = this._register(new Emitter()); readonly onDidRunOperation = this._onDidRunOperation.event; + //#endregion private _models: TextFileEditorModelManager; get models(): ITextFileEditorModelManager { return this._models; } @@ -75,7 +77,7 @@ export abstract class AbstractTextFileService extends Disposable implements ITex constructor( @IWorkspaceContextService private readonly contextService: IWorkspaceContextService, @IFileService protected readonly fileService: IFileService, - @IUntitledEditorService protected readonly untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService protected readonly untitledTextEditorService: IUntitledTextEditorService, @ILifecycleService private readonly lifecycleService: ILifecycleService, @IInstantiationService protected readonly instantiationService: IInstantiationService, @IConfigurationService private readonly configurationService: IConfigurationService, @@ -243,8 +245,8 @@ export abstract class AbstractTextFileService extends Disposable implements ITex // Handle untitled resources await Promise.all(untitledResources - .filter(untitled => this.untitledEditorService.exists(untitled)) - .map(async untitled => (await this.untitledEditorService.loadOrCreate({ resource: untitled })).backup())); + .filter(untitled => this.untitledTextEditorService.exists(untitled)) + .map(async untitled => (await this.untitledTextEditorService.loadOrCreate({ resource: untitled })).backup())); } private async confirmBeforeShutdown(): Promise { @@ -266,7 +268,7 @@ export abstract class AbstractTextFileService extends Disposable implements ITex // Make sure to revert untitled so that they do not restore // see https://github.com/Microsoft/vscode/issues/29572 - this.untitledEditorService.revertAll(); + this.untitledTextEditorService.revertAll(); return this.noVeto({ cleanUpBackups: true }); } @@ -444,18 +446,21 @@ export abstract class AbstractTextFileService extends Disposable implements ITex async delete(resource: URI, options?: { useTrash?: boolean, recursive?: boolean }): Promise { + // before event await this._onWillRunOperation.fireAsync(promises => new FileOperationWillRunEvent(promises, FileOperation.DELETE, resource)); const dirtyFiles = this.getDirty().filter(dirty => isEqualOrParent(dirty, resource)); await this.revertAll(dirtyFiles, { soft: true }); await this.fileService.del(resource, options); + + // after event this._onDidRunOperation.fire(new FileOperationDidRunEvent(FileOperation.DELETE, resource)); } async move(source: URI, target: URI, overwrite?: boolean): Promise { - // before events + // before event await this._onWillRunOperation.fireAsync(promises => new FileOperationWillRunEvent(promises, FileOperation.MOVE, target, source)); // find all models that related to either source or target (can be many if resource is a folder) @@ -622,11 +627,11 @@ export abstract class AbstractTextFileService extends Disposable implements ITex // Preflight for untitled to handle cancellation from the dialog const targetsForUntitled: URI[] = []; for (const untitled of untitledResources) { - if (this.untitledEditorService.exists(untitled)) { + if (this.untitledTextEditorService.exists(untitled)) { let targetUri: URI; // Untitled with associated file path don't need to prompt - if (this.untitledEditorService.hasAssociatedFilePath(untitled)) { + if (this.untitledTextEditorService.hasAssociatedFilePath(untitled)) { targetUri = toLocalResource(untitled, this.environmentService.configuration.remoteAuthority); } @@ -797,11 +802,11 @@ export abstract class AbstractTextFileService extends Disposable implements ITex private async doSaveAs(resource: URI, target: URI, options?: ISaveOptions): Promise { // Retrieve text model from provided resource if any - let model: ITextFileEditorModel | UntitledEditorModel | undefined; + let model: ITextFileEditorModel | UntitledTextEditorModel | undefined; if (this.fileService.canHandleResource(resource)) { model = this._models.get(resource); - } else if (resource.scheme === Schemas.untitled && this.untitledEditorService.exists(resource)) { - model = await this.untitledEditorService.loadOrCreate({ resource }); + } else if (resource.scheme === Schemas.untitled && this.untitledTextEditorService.exists(resource)) { + model = await this.untitledTextEditorService.loadOrCreate({ resource }); } // We have a model: Use it (can be null e.g. if this file is binary and not a text file or was never opened before) @@ -828,7 +833,7 @@ export abstract class AbstractTextFileService extends Disposable implements ITex return target; } - private async doSaveTextFileAs(sourceModel: ITextFileEditorModel | UntitledEditorModel, resource: URI, target: URI, options?: ISaveOptions): Promise { + private async doSaveTextFileAs(sourceModel: ITextFileEditorModel | UntitledTextEditorModel, resource: URI, target: URI, options?: ISaveOptions): Promise { // Prefer an existing model if it is already loaded for the given target resource let targetExists: boolean = false; @@ -856,7 +861,7 @@ export abstract class AbstractTextFileService extends Disposable implements ITex // path. This can happen if the file was created after the untitled file was opened. // See https://github.com/Microsoft/vscode/issues/67946 let write: boolean; - if (sourceModel instanceof UntitledEditorModel && sourceModel.hasAssociatedFilePath && targetExists && isEqual(target, toLocalResource(sourceModel.getResource(), this.environmentService.configuration.remoteAuthority))) { + if (sourceModel instanceof UntitledTextEditorModel && sourceModel.hasAssociatedFilePath && targetExists && isEqual(target, toLocalResource(sourceModel.getResource(), this.environmentService.configuration.remoteAuthority))) { write = await this.confirmOverwrite(target); } else { write = true; @@ -899,7 +904,7 @@ export abstract class AbstractTextFileService extends Disposable implements ITex } private suggestFileName(untitledResource: URI): URI { - const untitledFileName = this.untitledEditorService.suggestFileName(untitledResource); + const untitledFileName = this.untitledTextEditorService.suggestFileName(untitledResource); const remoteAuthority = this.environmentService.configuration.remoteAuthority; const schemeFilter = remoteAuthority ? Schemas.vscodeRemote : Schemas.file; @@ -929,7 +934,7 @@ export abstract class AbstractTextFileService extends Disposable implements ITex const revertOperationResult = await this.doRevertAllFiles(resources, options); // Revert untitled - const untitledReverted = this.untitledEditorService.revertAll(resources); + const untitledReverted = this.untitledTextEditorService.revertAll(resources); untitledReverted.forEach(untitled => revertOperationResult.results.push({ source: untitled, success: true })); return revertOperationResult; @@ -981,7 +986,7 @@ export abstract class AbstractTextFileService extends Disposable implements ITex const dirty = this.getDirtyFileModels(resources).map(m => m.getResource()); // Add untitled ones - dirty.push(...this.untitledEditorService.getDirty(resources)); + dirty.push(...this.untitledTextEditorService.getDirty(resources)); return dirty; } @@ -994,7 +999,7 @@ export abstract class AbstractTextFileService extends Disposable implements ITex } // Check for dirty untitled - return this.untitledEditorService.getDirty().some(dirty => !resource || dirty.toString() === resource.toString()); + return this.untitledTextEditorService.getDirty().some(dirty => !resource || dirty.toString() === resource.toString()); } //#endregion @@ -1062,4 +1067,3 @@ export async function promptSave(dialogService: IDialogService, resourcesToConfi default: return ConfirmResult.CANCEL; } } - diff --git a/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts b/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts index 10cba0883ad..23cf1f058dc 100644 --- a/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts +++ b/src/vs/workbench/services/textfile/electron-browser/nativeTextFileService.ts @@ -28,7 +28,7 @@ import { createTextBufferFactoryFromStream } from 'vs/editor/common/model/textMo import { ITextSnapshot } from 'vs/editor/common/model'; import { nodeReadableToString, streamToNodeReadable, nodeStreamToVSBufferReadable } from 'vs/base/node/stream'; import { IElectronService } from 'vs/platform/electron/node/electron'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; @@ -49,7 +49,7 @@ export class NativeTextFileService extends AbstractTextFileService { constructor( @IWorkspaceContextService contextService: IWorkspaceContextService, @IFileService fileService: IFileService, - @IUntitledEditorService untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService untitledTextEditorService: IUntitledTextEditorService, @ILifecycleService lifecycleService: ILifecycleService, @IInstantiationService instantiationService: IInstantiationService, @IConfigurationService configurationService: IConfigurationService, @@ -67,7 +67,7 @@ export class NativeTextFileService extends AbstractTextFileService { @IElectronService private readonly electronService: IElectronService, @IProductService private readonly productService: IProductService ) { - super(contextService, fileService, untitledEditorService, lifecycleService, instantiationService, configurationService, modeService, modelService, environmentService, notificationService, backupFileService, historyService, contextKeyService, dialogService, fileDialogService, editorService, textResourceConfigurationService); + super(contextService, fileService, untitledTextEditorService, lifecycleService, instantiationService, configurationService, modeService, modelService, environmentService, notificationService, backupFileService, historyService, contextKeyService, dialogService, fileDialogService, editorService, textResourceConfigurationService); } private _encoding: EncodingOracle | undefined; diff --git a/src/vs/workbench/services/textfile/test/textFileService.io.test.ts b/src/vs/workbench/services/textfile/test/textFileService.io.test.ts index 6d8282d7830..79eedaa0e67 100644 --- a/src/vs/workbench/services/textfile/test/textFileService.io.test.ts +++ b/src/vs/workbench/services/textfile/test/textFileService.io.test.ts @@ -6,7 +6,7 @@ import * as assert from 'assert'; import { URI } from 'vs/base/common/uri'; import { workbenchInstantiationService, TestTextFileService } from 'vs/workbench/test/workbenchTestServices'; import { ITextFileService, snapshotToString, TextFileOperationResult, TextFileOperationError } from 'vs/workbench/services/textfile/common/textfiles'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { IFileService } from 'vs/platform/files/common/files'; import { TextFileEditorModelManager } from 'vs/workbench/services/textfile/common/textFileEditorModelManager'; import { Schemas } from 'vs/base/common/network'; @@ -32,7 +32,7 @@ import { detectEncodingByBOM } from 'vs/base/test/node/encoding/encoding.test'; class ServiceAccessor { constructor( @ITextFileService public textFileService: TestTextFileService, - @IUntitledEditorService public untitledEditorService: IUntitledEditorService + @IUntitledTextEditorService public untitledTextEditorService: IUntitledTextEditorService ) { } } @@ -96,7 +96,7 @@ suite('Files - TextFileService i/o', () => { teardown(async () => { (accessor.textFileService.models).clear(); (accessor.textFileService.models).dispose(); - accessor.untitledEditorService.revertAll(); + accessor.untitledTextEditorService.revertAll(); disposables.clear(); diff --git a/src/vs/workbench/services/textfile/test/textFileService.test.ts b/src/vs/workbench/services/textfile/test/textFileService.test.ts index e1eda1bcc27..d8f09e50b79 100644 --- a/src/vs/workbench/services/textfile/test/textFileService.test.ts +++ b/src/vs/workbench/services/textfile/test/textFileService.test.ts @@ -13,7 +13,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { TextFileEditorModel } from 'vs/workbench/services/textfile/common/textFileEditorModel'; import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; import { ConfirmResult } from 'vs/workbench/common/editor'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { HotExitConfiguration, IFileService } from 'vs/platform/files/common/files'; import { TextFileEditorModelManager } from 'vs/workbench/services/textfile/common/textFileEditorModelManager'; import { IWorkspaceContextService, Workspace } from 'vs/platform/workspace/common/workspace'; @@ -26,7 +26,7 @@ class ServiceAccessor { constructor( @ILifecycleService public lifecycleService: TestLifecycleService, @ITextFileService public textFileService: TestTextFileService, - @IUntitledEditorService public untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService public untitledTextEditorService: IUntitledTextEditorService, @IWorkspaceContextService public contextService: TestContextService, @IModelService public modelService: ModelServiceImpl, @IFileService public fileService: TestFileService, @@ -62,7 +62,7 @@ suite('Files - TextFileService', () => { } (accessor.textFileService.models).clear(); (accessor.textFileService.models).dispose(); - accessor.untitledEditorService.revertAll(); + accessor.untitledTextEditorService.revertAll(); }); test('confirm onWillShutdown - no veto', async function () { @@ -156,7 +156,7 @@ suite('Files - TextFileService', () => { assert.equal(service.getDirty().length, 1); assert.equal(service.getDirty([model.getResource()])[0].toString(), model.getResource().toString()); - const untitled = accessor.untitledEditorService.createOrGet(); + const untitled = accessor.untitledTextEditorService.createOrGet(); const untitledModel = await untitled.resolve(); assert.ok(!service.isDirty(untitled.getResource())); @@ -192,8 +192,8 @@ suite('Files - TextFileService', () => { const mockedEditorInput = instantiationService.createInstance(TextFileEditorModel, mockedFileUri, 'utf8', undefined); const loadOrCreateStub = sinon.stub(accessor.textFileService.models, 'loadOrCreate', () => Promise.resolve(mockedEditorInput)); - sinon.stub(accessor.untitledEditorService, 'exists', () => true); - sinon.stub(accessor.untitledEditorService, 'hasAssociatedFilePath', () => true); + sinon.stub(accessor.untitledTextEditorService, 'exists', () => true); + sinon.stub(accessor.untitledTextEditorService, 'hasAssociatedFilePath', () => true); sinon.stub(accessor.modelService, 'updateModel', () => { }); await model.load(); diff --git a/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts b/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts index aaa60c08768..154daabf6bb 100644 --- a/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts +++ b/src/vs/workbench/services/textmodelResolver/common/textModelResolverService.ts @@ -13,7 +13,7 @@ import { ResourceEditorModel } from 'vs/workbench/common/editor/resourceEditorMo import { ITextFileService, LoadReason } from 'vs/workbench/services/textfile/common/textfiles'; import * as network from 'vs/base/common/network'; import { ITextModelService, ITextModelContentProvider, ITextEditorModel, IResolvedTextEditorModel } from 'vs/editor/common/services/resolverService'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { TextFileEditorModel } from 'vs/workbench/services/textfile/common/textFileEditorModel'; import { IFileService } from 'vs/platform/files/common/files'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; @@ -126,7 +126,7 @@ export class TextModelResolverService implements ITextModelService { private resourceModelCollection: ResourceModelCollection; constructor( - @IUntitledEditorService private readonly untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService private readonly untitledTextEditorService: IUntitledTextEditorService, @IInstantiationService private readonly instantiationService: IInstantiationService, @IModelService private readonly modelService: IModelService ) { @@ -141,7 +141,7 @@ export class TextModelResolverService implements ITextModelService { // Untitled Schema: go through cached input if (resource.scheme === network.Schemas.untitled) { - const model = await this.untitledEditorService.loadOrCreate({ resource }); + const model = await this.untitledTextEditorService.loadOrCreate({ resource }); return new ImmortalReference(model as IResolvedTextEditorModel); } @@ -179,4 +179,4 @@ export class TextModelResolverService implements ITextModelService { } } -registerSingleton(ITextModelService, TextModelResolverService, true); \ No newline at end of file +registerSingleton(ITextModelService, TextModelResolverService, true); diff --git a/src/vs/workbench/services/textmodelResolver/test/textModelResolverService.test.ts b/src/vs/workbench/services/textmodelResolver/test/textModelResolverService.test.ts index b924c55963d..a404c7e86e5 100644 --- a/src/vs/workbench/services/textmodelResolver/test/textModelResolverService.test.ts +++ b/src/vs/workbench/services/textmodelResolver/test/textModelResolverService.test.ts @@ -16,7 +16,7 @@ import { IModelService } from 'vs/editor/common/services/modelService'; import { IModeService } from 'vs/editor/common/services/modeService'; import { TextFileEditorModel } from 'vs/workbench/services/textfile/common/textFileEditorModel'; import { ITextFileService, snapshotToString } from 'vs/workbench/services/textfile/common/textfiles'; -import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { TextFileEditorModelManager } from 'vs/workbench/services/textfile/common/textFileEditorModelManager'; import { Event } from 'vs/base/common/event'; import { timeout } from 'vs/base/common/async'; @@ -27,7 +27,7 @@ class ServiceAccessor { @IModelService public modelService: IModelService, @IModeService public modeService: IModeService, @ITextFileService public textFileService: TestTextFileService, - @IUntitledEditorService public untitledEditorService: IUntitledEditorService + @IUntitledTextEditorService public untitledTextEditorService: IUntitledTextEditorService ) { } } @@ -50,7 +50,7 @@ suite('Workbench - TextModelResolverService', () => { } (accessor.textFileService.models).clear(); (accessor.textFileService.models).dispose(); - accessor.untitledEditorService.revertAll(); + accessor.untitledTextEditorService.revertAll(); }); test('resolve resource', async () => { @@ -111,7 +111,7 @@ suite('Workbench - TextModelResolverService', () => { }); test('resolve untitled', async () => { - const service = accessor.untitledEditorService; + const service = accessor.untitledTextEditorService; const input = service.createOrGet(); await input.resolve(); diff --git a/src/vs/workbench/services/untitled/common/untitledEditorService.ts b/src/vs/workbench/services/untitled/common/untitledTextEditorService.ts similarity index 85% rename from src/vs/workbench/services/untitled/common/untitledEditorService.ts rename to src/vs/workbench/services/untitled/common/untitledTextEditorService.ts index ced3aebe36d..696b628c7ed 100644 --- a/src/vs/workbench/services/untitled/common/untitledEditorService.ts +++ b/src/vs/workbench/services/untitled/common/untitledTextEditorService.ts @@ -6,18 +6,18 @@ import { URI } from 'vs/base/common/uri'; import { createDecorator, IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import * as arrays from 'vs/base/common/arrays'; -import { UntitledEditorInput } from 'vs/workbench/common/editor/untitledEditorInput'; +import { UntitledTextEditorInput } from 'vs/workbench/common/editor/untitledTextEditorInput'; import { IFilesConfiguration, IFileService } from 'vs/platform/files/common/files'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { Event, Emitter } from 'vs/base/common/event'; import { ResourceMap } from 'vs/base/common/map'; -import { UntitledEditorModel } from 'vs/workbench/common/editor/untitledEditorModel'; +import { UntitledTextEditorModel } from 'vs/workbench/common/editor/untitledTextEditorModel'; import { Schemas } from 'vs/base/common/network'; import { Disposable } from 'vs/base/common/lifecycle'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { basename } from 'vs/base/common/resources'; -export const IUntitledEditorService = createDecorator('untitledEditorService'); +export const IUntitledTextEditorService = createDecorator('untitledTextEditorService'); export interface IModelLoadOrCreateOptions { resource?: URI; @@ -27,27 +27,27 @@ export interface IModelLoadOrCreateOptions { useResourcePath?: boolean; } -export interface IUntitledEditorService { +export interface IUntitledTextEditorService { _serviceBrand: undefined; /** - * Events for when untitled editors content changes (e.g. any keystroke). + * Events for when untitled text editors content changes (e.g. any keystroke). */ readonly onDidChangeContent: Event; /** - * Events for when untitled editors change (e.g. getting dirty, saved or reverted). + * Events for when untitled text editors change (e.g. getting dirty, saved or reverted). */ readonly onDidChangeDirty: Event; /** - * Events for when untitled editor encodings change. + * Events for when untitled text editor encodings change. */ readonly onDidChangeEncoding: Event; /** - * Events for when untitled editors are disposed. + * Events for when untitled text editors are disposed. */ readonly onDidDisposeModel: Event; @@ -57,7 +57,7 @@ export interface IUntitledEditorService { exists(resource: URI): boolean; /** - * Returns dirty untitled editors as resource URIs. + * Returns dirty untitled text editors as resource URIs. */ getDirty(resources?: URI[]): URI[]; @@ -83,7 +83,7 @@ export interface IUntitledEditorService { * It is valid to pass in a file resource. In that case the path will be used as identifier. * The use case is to be able to create a new file with a specific path with VSCode. */ - createOrGet(resource?: URI, mode?: string, initialValue?: string, encoding?: string): UntitledEditorInput; + createOrGet(resource?: URI, mode?: string, initialValue?: string, encoding?: string): UntitledTextEditorInput; /** * Creates a new untitled model with the optional resource URI or returns an existing one @@ -92,7 +92,7 @@ export interface IUntitledEditorService { * It is valid to pass in a file resource. In that case the path will be used as identifier. * The use case is to be able to create a new file with a specific path with VSCode. */ - loadOrCreate(options: IModelLoadOrCreateOptions): Promise; + loadOrCreate(options: IModelLoadOrCreateOptions): Promise; /** * A check to find out if a untitled resource has a file path associated or not. @@ -110,11 +110,11 @@ export interface IUntitledEditorService { getEncoding(resource: URI): string | undefined; } -export class UntitledEditorService extends Disposable implements IUntitledEditorService { +export class UntitledTextEditorService extends Disposable implements IUntitledTextEditorService { _serviceBrand: undefined; - private mapResourceToInput = new ResourceMap(); + private mapResourceToInput = new ResourceMap(); private mapResourceToAssociatedFilePath = new ResourceMap(); private readonly _onDidChangeContent: Emitter = this._register(new Emitter()); @@ -137,11 +137,11 @@ export class UntitledEditorService extends Disposable implements IUntitledEditor super(); } - protected get(resource: URI): UntitledEditorInput | undefined { + protected get(resource: URI): UntitledTextEditorInput | undefined { return this.mapResourceToInput.get(resource); } - protected getAll(resources?: URI[]): UntitledEditorInput[] { + protected getAll(resources?: URI[]): UntitledTextEditorInput[] { if (resources) { return arrays.coalesce(resources.map(r => this.get(r))); } @@ -182,7 +182,7 @@ export class UntitledEditorService extends Disposable implements IUntitledEditor } getDirty(resources?: URI[]): URI[] { - let inputs: UntitledEditorInput[]; + let inputs: UntitledTextEditorInput[]; if (resources) { inputs = arrays.coalesce(resources.map(r => this.get(r))); } else { @@ -194,11 +194,11 @@ export class UntitledEditorService extends Disposable implements IUntitledEditor .map(i => i.getResource()); } - loadOrCreate(options: IModelLoadOrCreateOptions = Object.create(null)): Promise { + loadOrCreate(options: IModelLoadOrCreateOptions = Object.create(null)): Promise { return this.createOrGet(options.resource, options.mode, options.initialValue, options.encoding, options.useResourcePath).resolve(); } - createOrGet(resource?: URI, mode?: string, initialValue?: string, encoding?: string, hasAssociatedFilePath: boolean = false): UntitledEditorInput { + createOrGet(resource?: URI, mode?: string, initialValue?: string, encoding?: string, hasAssociatedFilePath: boolean = false): UntitledTextEditorInput { if (resource) { // Massage resource if it comes with known file based resource @@ -221,7 +221,7 @@ export class UntitledEditorService extends Disposable implements IUntitledEditor return this.doCreate(resource, hasAssociatedFilePath, mode, initialValue, encoding); } - private doCreate(resource?: URI, hasAssociatedFilePath?: boolean, mode?: string, initialValue?: string, encoding?: string): UntitledEditorInput { + private doCreate(resource?: URI, hasAssociatedFilePath?: boolean, mode?: string, initialValue?: string, encoding?: string): UntitledTextEditorInput { let untitledResource: URI; if (resource) { untitledResource = resource; @@ -243,7 +243,7 @@ export class UntitledEditorService extends Disposable implements IUntitledEditor } } - const input = this.instantiationService.createInstance(UntitledEditorInput, untitledResource, !!hasAssociatedFilePath, mode, initialValue, encoding); + const input = this.instantiationService.createInstance(UntitledTextEditorInput, untitledResource, !!hasAssociatedFilePath, mode, initialValue, encoding); const contentListener = input.onDidModelChangeContent(() => this._onDidChangeContent.fire(untitledResource)); const dirtyListener = input.onDidChangeDirty(() => this._onDidChangeDirty.fire(untitledResource)); @@ -284,4 +284,4 @@ export class UntitledEditorService extends Disposable implements IUntitledEditor } } -registerSingleton(IUntitledEditorService, UntitledEditorService, true); +registerSingleton(IUntitledTextEditorService, UntitledTextEditorService, true); diff --git a/src/vs/workbench/test/common/editor/editor.test.ts b/src/vs/workbench/test/common/editor/editor.test.ts index 9f0a16799d5..d89ecd8db5b 100644 --- a/src/vs/workbench/test/common/editor/editor.test.ts +++ b/src/vs/workbench/test/common/editor/editor.test.ts @@ -8,13 +8,13 @@ import { EditorInput, toResource, SideBySideEditor } from 'vs/workbench/common/e import { DiffEditorInput } from 'vs/workbench/common/editor/diffEditorInput'; import { IEditorModel } from 'vs/platform/editor/common/editor'; import { URI } from 'vs/base/common/uri'; -import { IUntitledEditorService, UntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService, UntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { workbenchInstantiationService } from 'vs/workbench/test/workbenchTestServices'; import { Schemas } from 'vs/base/common/network'; class ServiceAccessor { - constructor(@IUntitledEditorService public untitledEditorService: UntitledEditorService) { + constructor(@IUntitledTextEditorService public untitledTextEditorService: UntitledTextEditorService) { } } @@ -48,12 +48,12 @@ suite('Workbench editor', () => { }); teardown(() => { - accessor.untitledEditorService.revertAll(); - accessor.untitledEditorService.dispose(); + accessor.untitledTextEditorService.revertAll(); + accessor.untitledTextEditorService.dispose(); }); test('toResource', () => { - const service = accessor.untitledEditorService; + const service = accessor.untitledTextEditorService; assert.ok(!toResource(null!)); @@ -82,4 +82,4 @@ suite('Workbench editor', () => { assert.equal(toResource(file, { supportSideBySide: SideBySideEditor.MASTER, filterByScheme: Schemas.file })!.toString(), file.getResource().toString()); assert.equal(toResource(file, { supportSideBySide: SideBySideEditor.MASTER, filterByScheme: [Schemas.file, Schemas.untitled] })!.toString(), file.getResource().toString()); }); -}); \ No newline at end of file +}); diff --git a/src/vs/workbench/test/common/editor/untitledEditor.test.ts b/src/vs/workbench/test/common/editor/untitledTextEditor.test.ts similarity index 84% rename from src/vs/workbench/test/common/editor/untitledEditor.test.ts rename to src/vs/workbench/test/common/editor/untitledTextEditor.test.ts index 001ad7a6a2b..b963b547b00 100644 --- a/src/vs/workbench/test/common/editor/untitledEditor.test.ts +++ b/src/vs/workbench/test/common/editor/untitledTextEditor.test.ts @@ -6,32 +6,32 @@ import { URI } from 'vs/base/common/uri'; import * as assert from 'assert'; import { join } from 'vs/base/common/path'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { IUntitledEditorService, UntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService, UntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { workbenchInstantiationService } from 'vs/workbench/test/workbenchTestServices'; -import { UntitledEditorModel } from 'vs/workbench/common/editor/untitledEditorModel'; +import { UntitledTextEditorModel } from 'vs/workbench/common/editor/untitledTextEditorModel'; import { IModeService } from 'vs/editor/common/services/modeService'; import { ModeServiceImpl } from 'vs/editor/common/services/modeServiceImpl'; -import { UntitledEditorInput } from 'vs/workbench/common/editor/untitledEditorInput'; +import { UntitledTextEditorInput } from 'vs/workbench/common/editor/untitledTextEditorInput'; import { timeout } from 'vs/base/common/async'; import { snapshotToString } from 'vs/workbench/services/textfile/common/textfiles'; import { ModesRegistry, PLAINTEXT_MODE_ID } from 'vs/editor/common/modes/modesRegistry'; -export class TestUntitledEditorService extends UntitledEditorService { +export class TestUntitledTextEditorService extends UntitledTextEditorService { get(resource: URI) { return super.get(resource); } - getAll(resources?: URI[]): UntitledEditorInput[] { return super.getAll(resources); } + getAll(resources?: URI[]): UntitledTextEditorInput[] { return super.getAll(resources); } } class ServiceAccessor { constructor( - @IUntitledEditorService public untitledEditorService: TestUntitledEditorService, + @IUntitledTextEditorService public untitledTextEditorService: TestUntitledTextEditorService, @IModeService public modeService: ModeServiceImpl, @IConfigurationService public testConfigurationService: TestConfigurationService) { } } -suite('Workbench untitled editors', () => { +suite('Workbench untitled text editors', () => { let instantiationService: IInstantiationService; let accessor: ServiceAccessor; @@ -42,12 +42,12 @@ suite('Workbench untitled editors', () => { }); teardown(() => { - accessor.untitledEditorService.revertAll(); - accessor.untitledEditorService.dispose(); + accessor.untitledTextEditorService.revertAll(); + accessor.untitledTextEditorService.dispose(); }); - test('Untitled Editor Service', async (done) => { - const service = accessor.untitledEditorService; + test('Untitled Text Editor Service', async (done) => { + const service = accessor.untitledTextEditorService; assert.equal(service.getAll().length, 0); const input1 = service.createOrGet(); @@ -98,7 +98,7 @@ suite('Workbench untitled editors', () => { }); test('Untitled with associated resource', () => { - const service = accessor.untitledEditorService; + const service = accessor.untitledTextEditorService; const file = URI.file(join('C:\\', '/foo/file.txt')); const untitled = service.createOrGet(file); @@ -108,7 +108,7 @@ suite('Workbench untitled editors', () => { }); test('Untitled no longer dirty when content gets empty', async () => { - const service = accessor.untitledEditorService; + const service = accessor.untitledTextEditorService; const input = service.createOrGet(); // dirty @@ -121,7 +121,7 @@ suite('Workbench untitled editors', () => { }); test('Untitled via loadOrCreate', async () => { - const service = accessor.untitledEditorService; + const service = accessor.untitledTextEditorService; const model1 = await service.loadOrCreate(); @@ -153,14 +153,14 @@ suite('Workbench untitled editors', () => { }); test('Untitled suggest name', function () { - const service = accessor.untitledEditorService; + const service = accessor.untitledTextEditorService; const input = service.createOrGet(); assert.ok(service.suggestFileName(input.getResource())); }); test('Untitled with associated path remains dirty when content gets empty', async () => { - const service = accessor.untitledEditorService; + const service = accessor.untitledTextEditorService; const file = URI.file(join('C:\\', '/foo/file.txt')); const input = service.createOrGet(file); @@ -174,7 +174,7 @@ suite('Workbench untitled editors', () => { }); test('Untitled with initial content is dirty', async () => { - const service = accessor.untitledEditorService; + const service = accessor.untitledTextEditorService; const input = service.createOrGet(undefined, undefined, 'Hello World'); // dirty @@ -188,7 +188,7 @@ suite('Workbench untitled editors', () => { const config = accessor.testConfigurationService; config.setUserConfiguration('files', { 'defaultLanguage': defaultLanguage }); - const service = accessor.untitledEditorService; + const service = accessor.untitledTextEditorService; const input = service.createOrGet(); assert.equal(input.getMode(), defaultLanguage); @@ -204,7 +204,7 @@ suite('Workbench untitled editors', () => { const config = accessor.testConfigurationService; config.setUserConfiguration('files', { 'defaultLanguage': defaultLanguage }); - const service = accessor.untitledEditorService; + const service = accessor.untitledTextEditorService; const input = service.createOrGet(null!, mode); assert.equal(input.getMode(), mode); @@ -221,7 +221,7 @@ suite('Workbench untitled editors', () => { id: mode, }); - const service = accessor.untitledEditorService; + const service = accessor.untitledTextEditorService; const input = service.createOrGet(null!, mode); assert.equal(input.getMode(), mode); @@ -237,7 +237,7 @@ suite('Workbench untitled editors', () => { }); test('encoding change event', async () => { - const service = accessor.untitledEditorService; + const service = accessor.untitledTextEditorService; const input = service.createOrGet(); let counter = 0; @@ -255,10 +255,10 @@ suite('Workbench untitled editors', () => { }); test('onDidChangeContent event', async () => { - const service = accessor.untitledEditorService; + const service = accessor.untitledTextEditorService; const input = service.createOrGet(); - UntitledEditorModel.DEFAULT_CONTENT_CHANGE_BUFFER_DELAY = 0; + UntitledTextEditorModel.DEFAULT_CONTENT_CHANGE_BUFFER_DELAY = 0; let counter = 0; @@ -293,7 +293,7 @@ suite('Workbench untitled editors', () => { }); test('onDidDisposeModel event', async () => { - const service = accessor.untitledEditorService; + const service = accessor.untitledTextEditorService; const input = service.createOrGet(); let counter = 0; @@ -308,4 +308,4 @@ suite('Workbench untitled editors', () => { input.dispose(); assert.equal(counter, 1); }); -}); \ No newline at end of file +}); diff --git a/src/vs/workbench/test/electron-browser/quickopen.perf.integrationTest.ts b/src/vs/workbench/test/electron-browser/quickopen.perf.integrationTest.ts index 0c8f3e9a711..e8161804b96 100644 --- a/src/vs/workbench/test/electron-browser/quickopen.perf.integrationTest.ts +++ b/src/vs/workbench/test/electron-browser/quickopen.perf.integrationTest.ts @@ -27,7 +27,7 @@ import 'vs/workbench/contrib/search/browser/search.contribution'; // load contri import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; import { LocalSearchService } from 'vs/workbench/services/search/node/searchService'; -import { IUntitledEditorService, UntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService, UntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { TestContextService, TestEditorGroupsService, TestEditorService, TestEnvironmentService, TestTextResourcePropertiesService } from 'vs/workbench/test/workbenchTestServices'; import { ClassifiedEvent, StrictPropertyCheck, GDPRClassification } from 'vs/platform/telemetry/common/gdprTypings'; @@ -78,7 +78,7 @@ suite.skip('QuickOpen performance (integration)', () => { [IEditorService, new TestEditorService()], [IEditorGroupsService, new TestEditorGroupsService()], [IEnvironmentService, TestEnvironmentService], - [IUntitledEditorService, createSyncDescriptor(UntitledEditorService)], + [IUntitledTextEditorService, createSyncDescriptor(UntitledTextEditorService)], [ISearchService, createSyncDescriptor(LocalSearchService)] )); diff --git a/src/vs/workbench/test/electron-browser/textsearch.perf.integrationTest.ts b/src/vs/workbench/test/electron-browser/textsearch.perf.integrationTest.ts index 88372504ee9..76aa1c7f8f2 100644 --- a/src/vs/workbench/test/electron-browser/textsearch.perf.integrationTest.ts +++ b/src/vs/workbench/test/electron-browser/textsearch.perf.integrationTest.ts @@ -11,7 +11,7 @@ import { createSyncDescriptor } from 'vs/platform/instantiation/common/descripto import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; import { ISearchService } from 'vs/workbench/services/search/common/search'; import { ITelemetryService, ITelemetryInfo } from 'vs/platform/telemetry/common/telemetry'; -import { IUntitledEditorService, UntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService, UntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import * as minimist from 'vscode-minimist'; import * as path from 'vs/base/common/path'; @@ -68,7 +68,7 @@ suite.skip('TextSearch performance (integration)', () => { [IEditorService, new TestEditorService()], [IEditorGroupsService, new TestEditorGroupsService()], [IEnvironmentService, TestEnvironmentService], - [IUntitledEditorService, createSyncDescriptor(UntitledEditorService)], + [IUntitledTextEditorService, createSyncDescriptor(UntitledTextEditorService)], [ISearchService, createSyncDescriptor(LocalSearchService)], [ILogService, new NullLogService()] )); diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index 2fab94fd260..9b4fbf6b47c 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -11,7 +11,7 @@ import * as resources from 'vs/base/common/resources'; import { URI, UriComponents } from 'vs/base/common/uri'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils'; -import { ConfirmResult, IEditorInputWithOptions, CloseDirection, IEditorIdentifier, IUntitledResourceInput, IResourceDiffInput, IResourceSideBySideInput, IEditorInput, IEditor, IEditorCloseEvent, IEditorPartOptions } from 'vs/workbench/common/editor'; +import { ConfirmResult, IEditorInputWithOptions, CloseDirection, IEditorIdentifier, IUntitledTextResourceInput, IResourceDiffInput, IResourceSideBySideInput, IEditorInput, IEditor, IEditorCloseEvent, IEditorPartOptions } from 'vs/workbench/common/editor'; import { IEditorOpeningEvent, EditorServiceImpl, IEditorGroupView } from 'vs/workbench/browser/parts/editor/editor'; import { Event, Emitter } from 'vs/base/common/event'; import Severity from 'vs/base/common/severity'; @@ -21,7 +21,7 @@ import { IWorkbenchLayoutService, Parts, Position as PartPosition } from 'vs/wor import { TextModelResolverService } from 'vs/workbench/services/textmodelResolver/common/textModelResolverService'; import { ITextModelService } from 'vs/editor/common/services/resolverService'; import { IEditorOptions, IResourceInput } from 'vs/platform/editor/common/editor'; -import { IUntitledEditorService, UntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; +import { IUntitledTextEditorService, UntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService'; import { IWorkspaceContextService, IWorkspace as IWorkbenchWorkspace, WorkbenchState, IWorkspaceFolder, IWorkspaceFoldersChangeEvent, Workspace } from 'vs/platform/workspace/common/workspace'; import { ILifecycleService, BeforeShutdownEvent, ShutdownReason, StartupKind, LifecyclePhase, WillShutdownEvent } from 'vs/platform/lifecycle/common/lifecycle'; import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection'; @@ -196,7 +196,7 @@ export class TestTextFileService extends NativeTextFileService { constructor( @IWorkspaceContextService contextService: IWorkspaceContextService, @IFileService protected fileService: IFileService, - @IUntitledEditorService untitledEditorService: IUntitledEditorService, + @IUntitledTextEditorService untitledTextEditorService: IUntitledTextEditorService, @ILifecycleService lifecycleService: ILifecycleService, @IInstantiationService instantiationService: IInstantiationService, @IConfigurationService configurationService: IConfigurationService, @@ -217,7 +217,7 @@ export class TestTextFileService extends NativeTextFileService { super( contextService, fileService, - untitledEditorService, + untitledTextEditorService, lifecycleService, instantiationService, configurationService, @@ -301,7 +301,7 @@ export function workbenchInstantiationService(): IInstantiationService { const configService = new TestConfigurationService(); instantiationService.stub(IConfigurationService, configService); instantiationService.stub(ITextResourceConfigurationService, new TestTextResourceConfigurationService(configService)); - instantiationService.stub(IUntitledEditorService, instantiationService.createInstance(UntitledEditorService)); + instantiationService.stub(IUntitledTextEditorService, instantiationService.createInstance(UntitledTextEditorService)); instantiationService.stub(IStorageService, new TestStorageService()); instantiationService.stub(IWorkbenchLayoutService, new TestLayoutService()); instantiationService.stub(IElectronService, new TestElectronService()); @@ -313,7 +313,7 @@ export function workbenchInstantiationService(): IInstantiationService { instantiationService.stub(IBackupFileService, new TestBackupFileService()); instantiationService.stub(ITelemetryService, NullTelemetryService); instantiationService.stub(INotificationService, new TestNotificationService()); - instantiationService.stub(IUntitledEditorService, instantiationService.createInstance(UntitledEditorService)); + instantiationService.stub(IUntitledTextEditorService, instantiationService.createInstance(UntitledTextEditorService)); instantiationService.stub(IMenuService, new TestMenuService()); instantiationService.stub(IKeybindingService, new MockKeybindingService()); instantiationService.stub(IDecorationsService, new TestDecorationsService()); @@ -898,11 +898,11 @@ export class TestEditorService implements EditorServiceImpl { throw new Error('not implemented'); } - isOpen(_editor: IEditorInput | IResourceInput | IUntitledResourceInput): boolean { + isOpen(_editor: IEditorInput | IResourceInput | IUntitledTextResourceInput): boolean { return false; } - getOpened(_editor: IEditorInput | IResourceInput | IUntitledResourceInput): IEditorInput { + getOpened(_editor: IEditorInput | IResourceInput | IUntitledTextResourceInput): IEditorInput { throw new Error('not implemented'); } @@ -914,7 +914,7 @@ export class TestEditorService implements EditorServiceImpl { throw new Error('not implemented'); } - createInput(_input: IResourceInput | IUntitledResourceInput | IResourceDiffInput | IResourceSideBySideInput): IEditorInput { + createInput(_input: IResourceInput | IUntitledTextResourceInput | IResourceDiffInput | IResourceSideBySideInput): IEditorInput { throw new Error('not implemented'); } } diff --git a/src/vs/workbench/workbench.common.main.ts b/src/vs/workbench/workbench.common.main.ts index 8a48a4c1528..9a714a0f96a 100644 --- a/src/vs/workbench/workbench.common.main.ts +++ b/src/vs/workbench/workbench.common.main.ts @@ -70,7 +70,7 @@ import 'vs/workbench/services/editor/browser/editorService'; import 'vs/workbench/services/history/browser/history'; import 'vs/workbench/services/activity/browser/activityService'; import 'vs/workbench/services/keybinding/browser/keybindingService'; -import 'vs/workbench/services/untitled/common/untitledEditorService'; +import 'vs/workbench/services/untitled/common/untitledTextEditorService'; import 'vs/workbench/services/textfile/common/textResourcePropertiesService'; import 'vs/workbench/services/mode/common/workbenchModeService'; import 'vs/workbench/services/commands/common/commandService';