mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-26 19:44:25 +01:00
add TextSearchOptions, only search in folder contributed by provider, #41536
This commit is contained in:
@@ -16,6 +16,7 @@ import { ISearchResultProvider, ISearchQuery, ISearchComplete, ISearchProgressIt
|
||||
import { IWorkspaceEditingService } from 'vs/workbench/services/workspace/common/workspaceEditing';
|
||||
import { onUnexpectedError } from 'vs/base/common/errors';
|
||||
import { values } from 'vs/base/common/map';
|
||||
import { isFalsyOrEmpty } from 'vs/base/common/arrays';
|
||||
|
||||
@extHostNamedCustomer(MainContext.MainThreadFileSystem)
|
||||
export class MainThreadFileSystem implements MainThreadFileSystemShape {
|
||||
@@ -103,12 +104,12 @@ class RemoteFileSystemProvider implements IFileSystemProvider, ISearchResultProv
|
||||
constructor(
|
||||
fileService: IFileService,
|
||||
searchService: ISearchService,
|
||||
scheme: string,
|
||||
private readonly _scheme: string,
|
||||
private readonly _handle: number,
|
||||
private readonly _proxy: ExtHostFileSystemShape
|
||||
) {
|
||||
this._registrations = [
|
||||
fileService.registerProvider(scheme, this),
|
||||
fileService.registerProvider(_scheme, this),
|
||||
searchService.registerSearchResultProvider(this),
|
||||
];
|
||||
}
|
||||
@@ -170,6 +171,20 @@ class RemoteFileSystemProvider implements IFileSystemProvider, ISearchResultProv
|
||||
|
||||
search(query: ISearchQuery): PPromise<ISearchComplete, ISearchProgressItem> {
|
||||
|
||||
if (isFalsyOrEmpty(query.folderQueries)) {
|
||||
return PPromise.as(undefined);
|
||||
}
|
||||
|
||||
let includes = { ...query.includePattern };
|
||||
let excludes = { ...query.excludePattern };
|
||||
|
||||
for (const folderQuery of query.folderQueries) {
|
||||
if (folderQuery.folder.scheme === this._scheme) {
|
||||
includes = { ...includes, ...folderQuery.includePattern };
|
||||
excludes = { ...excludes, ...folderQuery.excludePattern };
|
||||
}
|
||||
}
|
||||
|
||||
return new PPromise((resolve, reject, report) => {
|
||||
|
||||
const search = new SearchOperation(report);
|
||||
@@ -177,7 +192,7 @@ class RemoteFileSystemProvider implements IFileSystemProvider, ISearchResultProv
|
||||
|
||||
const promise = query.type === QueryType.File
|
||||
? this._proxy.$findFiles(this._handle, search.id, query.filePattern)
|
||||
: this._proxy.$provideTextSearchResults(this._handle, search.id, query.contentPattern, undefined, undefined);
|
||||
: this._proxy.$provideTextSearchResults(this._handle, search.id, query.contentPattern, { excludes: Object.keys(excludes), includes: Object.keys(includes) });
|
||||
|
||||
promise.then(() => {
|
||||
this._searches.delete(search.id);
|
||||
|
||||
Reference in New Issue
Block a user