提交 4a26b7d3 编写于 作者: R Rob Lourens

Use configured excludes for workspaceContains activationEvent

上级 e91e03f4
......@@ -214,8 +214,13 @@ export class MainThreadWorkspace implements MainThreadWorkspaceShape {
return search;
}
$checkExists(query: ISearchQuery, requestId: number): Thenable<boolean> {
query.exists = true;
$checkExists(includes: string[], requestId: number): Thenable<boolean> {
const queryBuilder = this._instantiationService.createInstance(QueryBuilder);
const folders = this._contextService.getWorkspace().folders.map(folder => folder.uri);
const query = queryBuilder.file(folders, {
includePattern: includes.join(', '),
exists: true
});
const tokenSource = new CancellationTokenSource();
const search = this._searchService.search(query, tokenSource.token).then(
......
......@@ -26,7 +26,7 @@ import { LabelRules } from 'vs/platform/label/common/label';
import { LogLevel } from 'vs/platform/log/common/log';
import { IMarkerData } from 'vs/platform/markers/common/markers';
import { IPickOptions, IQuickInputButton, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput';
import { IPatternInfo, IQueryOptions, IRawFileMatch2, IRawSearchQuery, ISearchCompleteStats, ISearchQuery } from 'vs/platform/search/common/search';
import { IPatternInfo, IQueryOptions, IRawFileMatch2, IRawSearchQuery, ISearchCompleteStats } from 'vs/platform/search/common/search';
import { StatusbarAlignment as MainThreadStatusBarAlignment } from 'vs/platform/statusbar/common/statusbar';
import { ITelemetryInfo } from 'vs/platform/telemetry/common/telemetry';
import { ThemeColor } from 'vs/platform/theme/common/themeService';
......@@ -472,7 +472,7 @@ export interface ExtHostUrlsShape {
export interface MainThreadWorkspaceShape extends IDisposable {
$startFileSearch(includePattern: string, includeFolder: string, excludePatternOrDisregardExcludes: string | false, maxResults: number, requestId: number): Thenable<UriComponents[]>;
$startTextSearch(query: IPatternInfo, options: IQueryOptions, requestId: number): Thenable<void>;
$checkExists(query: ISearchQuery, requestId: number): Thenable<boolean>;
$checkExists(includes: string[], requestId: number): Thenable<boolean>;
$cancelSearch(requestId: number): Thenable<boolean>;
$saveAll(includeUntitled?: boolean): Thenable<boolean>;
$updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, workspaceFoldersToAdd: { uri: UriComponents, name?: string }[]): Thenable<void>;
......
......@@ -13,11 +13,9 @@ import { ExtHostExtensionService } from 'vs/workbench/api/node/extHostExtensionS
import { ExtHostConfiguration } from 'vs/workbench/api/node/extHostConfiguration';
import { ExtHostWorkspace } from 'vs/workbench/api/node/extHostWorkspace';
import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions';
import { QueryType, ISearchQuery } from 'vs/platform/search/common/search';
import { DiskSearch } from 'vs/workbench/services/search/node/searchService';
import { IInitData, IEnvironment, IWorkspaceData, MainContext, MainThreadWorkspaceShape } from 'vs/workbench/api/node/extHost.protocol';
import * as errors from 'vs/base/common/errors';
import * as glob from 'vs/base/common/glob';
import { ExtensionActivatedByEvent } from 'vs/workbench/api/node/extHostExtensionActivator';
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { IMessagePassingProtocol } from 'vs/base/parts/ipc/node/ipc';
......@@ -273,27 +271,8 @@ export class ExtensionHostMain {
this._diskSearch = new DiskSearch(false, 1000);
}
const includes: glob.IExpression = {};
globPatterns.forEach((globPattern) => {
includes[globPattern] = true;
});
const folderQueries = this._workspace.folders.map(folder => ({ folder: URI.revive(folder.uri) }));
const config = this._extHostConfiguration.getConfiguration('search');
const useRipgrep = config.get('useRipgrep', true);
const followSymlinks = config.get('followSymlinks', true);
const query: ISearchQuery = {
folderQueries,
type: QueryType.File,
exists: true,
includePattern: includes,
useRipgrep,
ignoreSymlinks: !followSymlinks
};
const requestId = this._searchRequestIdProvider.getNext();
const searchP = this._mainThreadWorkspace.$checkExists(query, requestId);;
const searchP = this._mainThreadWorkspace.$checkExists(globPatterns, requestId);
const timer = setTimeout(async () => {
await this._mainThreadWorkspace.$cancelSearch(requestId);
......
......@@ -96,7 +96,8 @@ export class QueryBuilder {
disregardIgnoreFiles: options.disregardIgnoreFiles || !useIgnoreFiles,
disregardExcludeSettings: options.disregardExcludeSettings,
ignoreSymlinks,
previewOptions: options.previewOptions
previewOptions: options.previewOptions,
exists: options.exists
};
// Filter extraFileResources against global include/exclude patterns - they are already expected to not belong to a workspace
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册