From 0cd492040c44073c8986679c8f1b13559ab0e067 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Tue, 21 Jan 2020 17:55:35 +0100 Subject: [PATCH] recover from EditorGroup.isOpen({ resource }) change --- src/vs/workbench/browser/dnd.ts | 4 ++-- .../files/browser/editors/fileEditorTracker.ts | 3 ++- .../services/search/common/searchService.ts | 18 ++++-------------- .../services/search/node/searchService.ts | 4 +--- 4 files changed, 9 insertions(+), 20 deletions(-) diff --git a/src/vs/workbench/browser/dnd.ts b/src/vs/workbench/browser/dnd.ts index 9009fead0dc..5fab49f84df 100644 --- a/src/vs/workbench/browser/dnd.ts +++ b/src/vs/workbench/browser/dnd.ts @@ -243,8 +243,8 @@ export class ResourcesDropHandler { droppedDirtyEditor.resource = this.textFileService.untitled.create({ mode: droppedDirtyEditor.mode, encoding: droppedDirtyEditor.encoding }).getResource(); } - // Return early if the resource is already dirty in target or opened already as file - if (this.textFileService.isDirty(droppedDirtyEditor.resource) || this.editorService.isOpen(this.editorService.createInput({ resource: droppedDirtyEditor.resource, forceFile: true }))) { + // File: ensure the file is not dirty or opened already + else if (this.textFileService.isDirty(droppedDirtyEditor.resource) || this.editorService.isOpen(this.editorService.createInput({ resource: droppedDirtyEditor.resource, forceFile: true }))) { return false; } diff --git a/src/vs/workbench/contrib/files/browser/editors/fileEditorTracker.ts b/src/vs/workbench/contrib/files/browser/editors/fileEditorTracker.ts index 25e73fc5a7c..ae100449e1f 100644 --- a/src/vs/workbench/contrib/files/browser/editors/fileEditorTracker.ts +++ b/src/vs/workbench/contrib/files/browser/editors/fileEditorTracker.ts @@ -25,6 +25,7 @@ import { timeout, RunOnceWorker } from 'vs/base/common/async'; import { withNullAsUndefined } from 'vs/base/common/types'; import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; import { isEqualOrParent, joinPath } from 'vs/base/common/resources'; +import { Schemas } from 'vs/base/common/network'; export class FileEditorTracker extends Disposable implements IWorkbenchContribution { @@ -288,7 +289,7 @@ export class FileEditorTracker extends Disposable implements IWorkbenchContribut return false; // resource must not be pending to save } - if (this.editorService.isOpen(this.editorService.createInput({ resource, forceFile: true }))) { + if (this.editorService.isOpen(this.editorService.createInput({ resource, forceFile: resource.scheme !== Schemas.untitled, forceUntitled: resource.scheme === Schemas.untitled }))) { return false; // model must not be opened already as file } diff --git a/src/vs/workbench/services/search/common/searchService.ts b/src/vs/workbench/services/search/common/searchService.ts index 08101224dd3..44fc4a83259 100644 --- a/src/vs/workbench/services/search/common/searchService.ts +++ b/src/vs/workbench/services/search/common/searchService.ts @@ -19,7 +19,6 @@ 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 { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; export class SearchService extends Disposable implements ISearchService { @@ -32,7 +31,6 @@ export class SearchService extends Disposable implements ISearchService { constructor( private readonly modelService: IModelService, - private readonly textFileService: ITextFileService, private readonly editorService: IEditorService, private readonly telemetryService: ITelemetryService, private readonly logService: ILogService, @@ -391,8 +389,8 @@ export class SearchService extends Disposable implements ISearchService { return; } - // Skip if editor is not opened as text file - if (this.editorService.isOpen(this.editorService.createInput({ resource, forceFile: true }))) { + // Skip files that are not opened as text file + if (!this.editorService.isOpen(this.editorService.createInput({ resource, forceFile: resource.scheme !== Schemas.untitled, forceUntitled: resource.scheme === Schemas.untitled }))) { return; } @@ -402,15 +400,8 @@ export class SearchService extends Disposable implements ISearchService { return; } - // Support untitled files - if (resource.scheme === Schemas.untitled) { - if (!this.textFileService.untitled.exists(resource)) { - return; - } - } - // Block walkthrough, webview, etc. - else if (!this.fileService.canHandleResource(resource)) { + if (resource.scheme !== Schemas.untitled && !this.fileService.canHandleResource(resource)) { return; } @@ -458,14 +449,13 @@ export class SearchService extends Disposable implements ISearchService { export class RemoteSearchService extends SearchService { constructor( @IModelService modelService: IModelService, - @ITextFileService textFileService: ITextFileService, @IEditorService editorService: IEditorService, @ITelemetryService telemetryService: ITelemetryService, @ILogService logService: ILogService, @IExtensionService extensionService: IExtensionService, @IFileService fileService: IFileService ) { - super(modelService, textFileService, editorService, telemetryService, logService, extensionService, fileService); + super(modelService, 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 5b730237b01..7ab50167bc1 100644 --- a/src/vs/workbench/services/search/node/searchService.ts +++ b/src/vs/workbench/services/search/node/searchService.ts @@ -21,7 +21,6 @@ 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 { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; 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 +30,6 @@ import { parseSearchPort } from 'vs/platform/environment/node/environmentService export class LocalSearchService extends SearchService { constructor( @IModelService modelService: IModelService, - @ITextFileService textFileService: ITextFileService, @IEditorService editorService: IEditorService, @ITelemetryService telemetryService: ITelemetryService, @ILogService logService: ILogService, @@ -40,7 +38,7 @@ export class LocalSearchService extends SearchService { @IWorkbenchEnvironmentService readonly environmentService: IWorkbenchEnvironmentService, @IInstantiationService readonly instantiationService: IInstantiationService ) { - super(modelService, textFileService, editorService, telemetryService, logService, extensionService, fileService); + super(modelService, editorService, telemetryService, logService, extensionService, fileService); this.diskSearch = instantiationService.createInstance(DiskSearch, !environmentService.isBuilt || environmentService.verbose, parseSearchPort(environmentService.args, environmentService.isBuilt)); -- GitLab