提交 a09e7bd1 编写于 作者: R Rob Lourens

Fix #64575 - delete FileIndexProvider

上级 fc859f29
......@@ -103,7 +103,6 @@
"./vs/workbench/api/node/extHostProgress.ts",
"./vs/workbench/api/node/extHostQuickOpen.ts",
"./vs/workbench/api/node/extHostSCM.ts",
"./vs/workbench/api/node/extHostSearch.fileIndex.ts",
"./vs/workbench/api/node/extHostSearch.ts",
"./vs/workbench/api/node/extHostStorage.ts",
"./vs/workbench/api/node/extHostTextEditor.ts",
......
......@@ -316,11 +316,6 @@ declare module 'vscode' {
session?: CancellationToken;
}
/**
* Options that apply to requesting the file index.
*/
export interface FileIndexOptions extends SearchOptions { }
/**
* A preview of the text result.
*/
......@@ -380,26 +375,6 @@ declare module 'vscode' {
export type TextSearchResult = TextSearchMatch | TextSearchContext;
/**
* A FileIndexProvider provides a list of files in the given folder. VS Code will filter that list for searching with quickopen or from other extensions.
*
* A FileIndexProvider is the simpler of two ways to implement file search in VS Code. Use a FileIndexProvider if you are able to provide a listing of all files
* in a folder, and want VS Code to filter them according to the user's search query.
*
* The FileIndexProvider will be invoked once when quickopen is opened, and VS Code will filter the returned list. It will also be invoked when
* `workspace.findFiles` is called.
*
* If a [`FileSearchProvider`](#FileSearchProvider) is registered for the scheme, that provider will be used instead.
*/
export interface FileIndexProvider {
/**
* Provide the set of files in the folder.
* @param options A set of options to consider while searching.
* @param token A cancellation token.
*/
provideFileIndex(options: FileIndexOptions, token: CancellationToken): ProviderResult<Uri[]>;
}
/**
* A FileSearchProvider provides search results for files in the given folder that match a query string. It can be invoked by quickopen or other extensions.
*
......@@ -408,8 +383,6 @@ declare module 'vscode' {
*
* The FileSearchProvider will be invoked on every keypress in quickopen. When `workspace.findFiles` is called, it will be invoked with an empty query string,
* and in that case, every file in the folder should be returned.
*
* @see [FileIndexProvider](#FileIndexProvider)
*/
export interface FileSearchProvider {
/**
......@@ -505,17 +478,6 @@ declare module 'vscode' {
*/
export function registerSearchProvider(): Disposable;
/**
* Register a file index provider.
*
* Only one provider can be registered per scheme.
*
* @param scheme The provider will be invoked for workspace folders that have this file scheme.
* @param provider The provider.
* @return A [disposable](#Disposable) that unregisters this provider when being disposed.
*/
export function registerFileIndexProvider(scheme: string, provider: FileIndexProvider): Disposable;
/**
* Register a search provider.
*
......
......@@ -40,10 +40,6 @@ export class MainThreadSearch implements MainThreadSearchShape {
this._searchProvider.set(handle, new RemoteSearchProvider(this._searchService, SearchProviderType.file, scheme, handle, this._proxy));
}
$registerFileIndexProvider(handle: number, scheme: string): void {
this._searchProvider.set(handle, new RemoteSearchProvider(this._searchService, SearchProviderType.fileIndex, scheme, handle, this._proxy));
}
$unregisterProvider(handle: number): void {
dispose(this._searchProvider.get(handle));
this._searchProvider.delete(handle);
......
......@@ -624,9 +624,6 @@ export function createApiFactory(
registerTextSearchProvider: proposedApiFunction(extension, (scheme, provider) => {
return extHostSearch.registerTextSearchProvider(scheme, provider);
}),
registerFileIndexProvider: proposedApiFunction(extension, (scheme, provider) => {
return extHostSearch.registerFileIndexProvider(scheme, provider);
}),
registerDocumentCommentProvider: proposedApiFunction(extension, (provider: vscode.DocumentCommentProvider) => {
return extHostComment.registerDocumentCommentProvider(extension.identifier, provider);
}),
......
......@@ -550,7 +550,6 @@ export interface MainThreadFileSystemShape extends IDisposable {
export interface MainThreadSearchShape extends IDisposable {
$registerFileSearchProvider(handle: number, scheme: string): void;
$registerTextSearchProvider(handle: number, scheme: string): void;
$registerFileIndexProvider(handle: number, scheme: string): void;
$unregisterProvider(handle: number): void;
$handleFileMatch(handle: number, session: number, data: UriComponents[]): void;
$handleTextMatch(handle: number, session: number, data: IRawFileMatch2[]): void;
......
......@@ -9,7 +9,6 @@ import { URI, UriComponents } from 'vs/base/common/uri';
import * as extfs from 'vs/base/node/extfs';
import { ILogService } from 'vs/platform/log/common/log';
import { IFileQuery, IFolderQuery, IRawFileQuery, IRawQuery, IRawTextQuery, ISearchCompleteStats, ITextQuery } from 'vs/workbench/services/search/common/search';
import { FileIndexSearchManager } from 'vs/workbench/api/node/extHostSearch.fileIndex';
import { FileSearchManager } from 'vs/workbench/services/search/node/fileSearchManager';
import { SearchService } from 'vs/workbench/services/search/node/rawSearchService';
import { RipgrepSearchProvider } from 'vs/workbench/services/search/node/ripgrepSearchProvider';
......@@ -30,20 +29,16 @@ export class ExtHostSearch implements ExtHostSearchShape {
private readonly _textSearchUsedSchemes = new Set<string>();
private readonly _fileSearchProvider = new Map<number, vscode.FileSearchProvider>();
private readonly _fileSearchUsedSchemes = new Set<string>();
private readonly _fileIndexProvider = new Map<number, vscode.FileIndexProvider>();
private readonly _fileIndexUsedSchemes = new Set<string>();
private _handlePool: number = 0;
private _internalFileSearchHandle: number;
private _internalFileSearchProvider: SearchService | null;
private _fileSearchManager: FileSearchManager;
private _fileIndexSearchManager: FileIndexSearchManager;
constructor(mainContext: IMainContext, private _schemeTransformer: ISchemeTransformer | null, private _logService: ILogService, private _extfs = extfs) {
this._proxy = mainContext.getProxy(MainContext.MainThreadSearch);
this._fileSearchManager = new FileSearchManager();
this._fileIndexSearchManager = new FileIndexSearchManager();
}
private _transformScheme(scheme: string): string {
......@@ -96,22 +91,6 @@ export class ExtHostSearch implements ExtHostSearchShape {
});
}
registerFileIndexProvider(scheme: string, provider: vscode.FileIndexProvider): IDisposable {
if (this._fileIndexUsedSchemes.has(scheme)) {
throw new Error(`a provider for the scheme '${scheme}' is already registered`);
}
this._fileIndexUsedSchemes.add(scheme);
const handle = this._handlePool++;
this._fileIndexProvider.set(handle, provider);
this._proxy.$registerFileIndexProvider(handle, this._transformScheme(scheme));
return toDisposable(() => {
this._fileIndexUsedSchemes.delete(scheme);
this._fileSearchProvider.delete(handle);
this._proxy.$unregisterProvider(handle); // TODO@roblou - unregisterFileIndexProvider
});
}
$provideFileSearchResults(handle: number, session: number, rawQuery: IRawFileQuery, token: CancellationToken): Promise<ISearchCompleteStats> {
const query = reviveQuery(rawQuery);
if (handle === this._internalFileSearchHandle) {
......@@ -123,14 +102,7 @@ export class ExtHostSearch implements ExtHostSearchShape {
this._proxy.$handleFileMatch(handle, session, batch.map(p => p.resource));
}, token);
} else {
const indexProvider = this._fileIndexProvider.get(handle);
if (!indexProvider) {
throw new Error('unknown provider: ' + handle);
}
return this._fileIndexSearchManager.fileSearch(query, indexProvider, batch => {
this._proxy.$handleFileMatch(handle, session, batch.map(p => p.resource));
}, token);
throw new Error('unknown provider: ' + handle);
}
}
}
......@@ -164,7 +136,6 @@ export class ExtHostSearch implements ExtHostSearchShape {
}
this._fileSearchManager.clearCache(cacheKey);
this._fileIndexSearchManager.clearCache(cacheKey);
return Promise.resolve(undefined);
}
......
......@@ -34,7 +34,6 @@ export interface ISearchService {
*/
export const enum SearchProviderType {
file,
fileIndex,
text
}
......@@ -195,10 +194,10 @@ export interface ITextSearchStats {
export interface IFileSearchStats {
fromCache: boolean;
detailStats: ISearchEngineStats | ICachedSearchStats | IFileSearchProviderStats | IFileIndexProviderStats;
detailStats: ISearchEngineStats | ICachedSearchStats | IFileSearchProviderStats;
resultCount: number;
type: 'fileIndexProvider' | 'fileSearchProvider' | 'searchProcess';
type: 'fileSearchProvider' | 'searchProcess';
sortingTime?: number;
}
......@@ -222,14 +221,6 @@ export interface IFileSearchProviderStats {
postProcessTime: number;
}
export interface IFileIndexProviderStats {
providerTime: number;
providerResultCount: number;
fileWalkTime: number;
directoriesWalked: number;
filesWalked: number;
}
export class FileMatch implements IFileMatch {
results: ITextSearchResult[] = [];
constructor(public resource: URI) {
......
......@@ -37,7 +37,6 @@ export class SearchService extends Disposable implements ISearchService {
private diskSearch: DiskSearch;
private readonly fileSearchProviders = new Map<string, ISearchResultProvider>();
private readonly textSearchProviders = new Map<string, ISearchResultProvider>();
private readonly fileIndexProviders = new Map<string, ISearchResultProvider>();
constructor(
@IInstantiationService private readonly instantiationService: IInstantiationService,
......@@ -59,8 +58,6 @@ export class SearchService extends Disposable implements ISearchService {
list = this.fileSearchProviders;
} else if (type === SearchProviderType.text) {
list = this.textSearchProviders;
} else if (type === SearchProviderType.fileIndex) {
list = this.fileIndexProviders;
} else {
throw new Error('Unknown SearchProviderType');
}
......@@ -182,7 +179,7 @@ export class SearchService extends Disposable implements ISearchService {
keys(fqs).forEach(scheme => {
const schemeFQs = fqs.get(scheme);
const provider = query.type === QueryType.File ?
this.fileSearchProviders.get(scheme) || this.fileIndexProviders.get(scheme) :
this.fileSearchProviders.get(scheme) :
this.textSearchProviders.get(scheme);
if (!provider && scheme === 'file') {
......@@ -421,7 +418,6 @@ export class SearchService extends Disposable implements ISearchService {
clearCache(cacheKey: string): Promise<void> {
const clearPs = [
this.diskSearch,
...values(this.fileIndexProviders),
...values(this.fileSearchProviders)
].map(provider => provider && provider.clearCache(cacheKey));
......
......@@ -33,10 +33,6 @@ class MockMainThreadSearch implements MainThreadSearchShape {
this.lastHandle = handle;
}
$registerFileIndexProvider(handle: number, scheme: string): void {
this.lastHandle = handle;
}
$registerTextSearchProvider(handle: number, scheme: string): void {
this.lastHandle = handle;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册