From 9ef2f07234cafc2e14e61279a0dff415a1fa4dcf Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Fri, 13 Aug 2021 13:31:00 -0700 Subject: [PATCH] Add a setting forcing search to run in EH --- src/vs/workbench/api/node/extHostSearch.ts | 21 +++++++-------- .../sandbox.simpleservices.ts | 26 +++++++++---------- .../services/search/common/searchService.ts | 2 +- .../search/electron-browser/searchService.ts | 6 ++++- 4 files changed, 29 insertions(+), 26 deletions(-) diff --git a/src/vs/workbench/api/node/extHostSearch.ts b/src/vs/workbench/api/node/extHostSearch.ts index be31f4ad1e0..be459bf9c2d 100644 --- a/src/vs/workbench/api/node/extHostSearch.ts +++ b/src/vs/workbench/api/node/extHostSearch.ts @@ -4,21 +4,21 @@ *--------------------------------------------------------------------------------------------*/ import { IDisposable, toDisposable } from 'vs/base/common/lifecycle'; +import { Schemas } from 'vs/base/common/network'; import { URI } from 'vs/base/common/uri'; import * as pfs from 'vs/base/node/pfs'; import { ILogService } from 'vs/platform/log/common/log'; -import { IFileQuery, IRawFileQuery, ISearchCompleteStats, isSerializedFileMatch, ISerializedSearchProgressItem, ITextQuery } from 'vs/workbench/services/search/common/search'; +import { IExtHostInitDataService } from 'vs/workbench/api/common/extHostInitDataService'; +import { IExtHostRpcService } from 'vs/workbench/api/common/extHostRpcService'; +import { ExtHostSearch, reviveQuery } from 'vs/workbench/api/common/extHostSearch'; +import { IURITransformerService } from 'vs/workbench/api/common/extHostUriTransformerService'; +import { IFileQuery, IRawFileQuery, ISearchCompleteStats, ISerializedSearchProgressItem, isSerializedFileMatch, ITextQuery } from 'vs/workbench/services/search/common/search'; +import { TextSearchManager } from 'vs/workbench/services/search/common/textSearchManager'; import { SearchService } from 'vs/workbench/services/search/node/rawSearchService'; import { RipgrepSearchProvider } from 'vs/workbench/services/search/node/ripgrepSearchProvider'; import { OutputChannel } from 'vs/workbench/services/search/node/ripgrepSearchUtils'; -import type * as vscode from 'vscode'; -import { IExtHostRpcService } from 'vs/workbench/api/common/extHostRpcService'; -import { IURITransformerService } from 'vs/workbench/api/common/extHostUriTransformerService'; -import { IExtHostInitDataService } from 'vs/workbench/api/common/extHostInitDataService'; -import { ExtHostSearch, reviveQuery } from 'vs/workbench/api/common/extHostSearch'; -import { Schemas } from 'vs/base/common/network'; import { NativeTextSearchManager } from 'vs/workbench/services/search/node/textSearchManager'; -import { TextSearchManager } from 'vs/workbench/services/search/common/textSearchManager'; +import type * as vscode from 'vscode'; export class NativeExtHostSearch extends ExtHostSearch { @@ -37,9 +37,8 @@ export class NativeExtHostSearch extends ExtHostSearch { const outputChannel = new OutputChannel('RipgrepSearchUD', this._logService); this.registerTextSearchProvider(Schemas.userData, new RipgrepSearchProvider(outputChannel)); - if (initData.remote.isRemote && initData.remote.authority) { - this._registerEHSearchProviders(); - } + + this._registerEHSearchProviders(); } private _registerEHSearchProviders(): void { diff --git a/src/vs/workbench/electron-sandbox/sandbox.simpleservices.ts b/src/vs/workbench/electron-sandbox/sandbox.simpleservices.ts index b0a3ecc756f..d878ddc4252 100644 --- a/src/vs/workbench/electron-sandbox/sandbox.simpleservices.ts +++ b/src/vs/workbench/electron-sandbox/sandbox.simpleservices.ts @@ -5,26 +5,26 @@ /* eslint-disable code-import-patterns */ -import { URI } from 'vs/base/common/uri'; -import { InMemoryFileSystemProvider } from 'vs/platform/files/common/inMemoryFilesystemProvider'; -import { Event } from 'vs/base/common/event'; -import { IAddressProvider } from 'vs/platform/remote/common/remoteAgentConnection'; -import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; -import { IExtensionService, NullExtensionService } from 'vs/workbench/services/extensions/common/extensions'; -import { isWindows } from 'vs/base/common/platform'; -import { ITunnelProvider, ITunnelService, RemoteTunnel, TunnelProviderFeatures } from 'vs/platform/remote/common/tunnel'; -import { Disposable, IDisposable } from 'vs/base/common/lifecycle'; -import { joinPath } from 'vs/base/common/resources'; import { VSBuffer } from 'vs/base/common/buffer'; -import { SearchService } from 'vs/workbench/services/search/common/searchService'; -import { ISearchService } from 'vs/workbench/services/search/common/search'; +import { Event } from 'vs/base/common/event'; +import { Disposable, IDisposable } from 'vs/base/common/lifecycle'; +import { isWindows } from 'vs/base/common/platform'; +import { joinPath } from 'vs/base/common/resources'; +import { URI } from 'vs/base/common/uri'; import { IModelService } from 'vs/editor/common/services/modelService'; import { IFileService } from 'vs/platform/files/common/files'; +import { InMemoryFileSystemProvider } from 'vs/platform/files/common/inMemoryFilesystemProvider'; +import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { ILogService } from 'vs/platform/log/common/log'; +import { IAddressProvider } from 'vs/platform/remote/common/remoteAgentConnection'; +import { ITunnelProvider, ITunnelService, RemoteTunnel, TunnelProviderFeatures } from 'vs/platform/remote/common/tunnel'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; -import { IUriIdentityService } from 'vs/workbench/services/uriIdentity/common/uriIdentity'; import { INativeWorkbenchEnvironmentService } from 'vs/workbench/services/environment/electron-sandbox/environmentService'; +import { IExtensionService, NullExtensionService } from 'vs/workbench/services/extensions/common/extensions'; +import { ISearchService } from 'vs/workbench/services/search/common/search'; +import { SearchService } from 'vs/workbench/services/search/common/searchService'; +import { IUriIdentityService } from 'vs/workbench/services/uriIdentity/common/uriIdentity'; //#region Environment diff --git a/src/vs/workbench/services/search/common/searchService.ts b/src/vs/workbench/services/search/common/searchService.ts index b51bdd1c0aa..3b1626b8275 100644 --- a/src/vs/workbench/services/search/common/searchService.ts +++ b/src/vs/workbench/services/search/common/searchService.ts @@ -209,7 +209,7 @@ export class SearchService extends Disposable implements ISearchService { this.fileSearchProviders.get(scheme) : this.textSearchProviders.get(scheme); - if (!provider && scheme === Schemas.file) { + if (scheme === Schemas.file && (!provider || this.diskSearch)) { diskSearchQueries.push(...schemeFQs); } else { if (!provider) { diff --git a/src/vs/workbench/services/search/electron-browser/searchService.ts b/src/vs/workbench/services/search/electron-browser/searchService.ts index 3e742a28ace..d14aaadcfe2 100644 --- a/src/vs/workbench/services/search/electron-browser/searchService.ts +++ b/src/vs/workbench/services/search/electron-browser/searchService.ts @@ -40,10 +40,14 @@ export class LocalSearchService extends SearchService { @INativeWorkbenchEnvironmentService readonly environmentService: INativeWorkbenchEnvironmentService, @IInstantiationService readonly instantiationService: IInstantiationService, @IUriIdentityService uriIdentityService: IUriIdentityService, + @IConfigurationService configurationService: IConfigurationService, ) { super(modelService, editorService, telemetryService, logService, extensionService, fileService, uriIdentityService); - this.diskSearch = instantiationService.createInstance(DiskSearch, !environmentService.isBuilt || environmentService.verbose, parseSearchPort(environmentService.args, environmentService.isBuilt)); + const forceEHSearch = configurationService.getValue('search.experimental.forceExtensionHostSearch'); + if (!forceEHSearch) { + this.diskSearch = instantiationService.createInstance(DiskSearch, !environmentService.isBuilt || environmentService.verbose, parseSearchPort(environmentService.args, environmentService.isBuilt)); + } } }