提交 c4928076 编写于 作者: P pkoushik

fix #59364 - Review #2

上级 a9767b90
......@@ -66,6 +66,7 @@ export interface IFolderQuery<U extends UriComponents=uri> {
includePattern?: glob.IExpression;
fileEncoding?: string;
disregardIgnoreFiles?: boolean;
disregardGlobalIgnoreFiles: boolean;
}
export interface ICommonQueryOptions<U> {
......@@ -83,6 +84,7 @@ export interface ICommonQueryOptions<U> {
cacheKey?: string;
useRipgrep?: boolean;
disregardIgnoreFiles?: boolean;
disregardGlobalIgnoreFiles?: boolean;
disregardExcludeSettings?: boolean;
ignoreSymlinks?: boolean;
maxFileSize?: number;
......@@ -276,6 +278,7 @@ export interface ISearchConfigurationProperties {
* Use ignore file for file search.
*/
useIgnoreFiles: boolean;
useGlobalIgnoreFiles: boolean;
followSymlinks: boolean;
smartCase: boolean;
globalFindClipboard: boolean;
......
......@@ -298,6 +298,12 @@ declare module 'vscode' {
*/
useIgnoreFiles?: boolean;
/**
* Whether global files that exclude files, like .gitignore, should be respected.
* See the vscode setting `"search.useGlobalIgnoreFiles"`.
*/
useGlobalIgnoreFiles: boolean;
/**
* Whether symlinks should be followed while searching.
* See the vscode setting `"search.followSymlinks"`.
......
......@@ -303,6 +303,7 @@ export class FileIndexSearchEngine {
excludes,
includes,
useIgnoreFiles: !this.config.disregardIgnoreFiles,
useGlobalIgnoreFiles: !this.config.disregardGlobalIgnoreFiles,
followSymlinks: !this.config.ignoreSymlinks
};
}
......
......@@ -387,6 +387,7 @@ class TextSearchEngine {
excludes,
includes,
useIgnoreFiles: !this.config.disregardIgnoreFiles,
useGlobalIgnoreFiles: !this.config.disregardGlobalIgnoreFiles,
followSymlinks: !this.config.ignoreSymlinks,
encoding: this.config.fileEncoding,
maxFileSize: this.config.maxFileSize,
......@@ -560,6 +561,7 @@ class FileSearchEngine {
excludes,
includes,
useIgnoreFiles: !this.config.disregardIgnoreFiles,
useGlobalIgnoreFiles: !this.config.disregardGlobalIgnoreFiles,
followSymlinks: !this.config.ignoreSymlinks,
maxResults: this.config.maxResults
};
......
......@@ -404,6 +404,7 @@ export class ExtHostWorkspace implements ExtHostWorkspaceShape {
const queryOptions: IQueryOptions = {
ignoreSymlinks: typeof options.followSymlinks === 'boolean' ? !options.followSymlinks : undefined,
disregardIgnoreFiles: typeof options.useIgnoreFiles === 'boolean' ? !options.useIgnoreFiles : undefined,
disregardGlobalIgnoreFiles: typeof options.useGlobalIgnoreFiles === 'boolean' ? !options.useGlobalIgnoreFiles : undefined,
disregardExcludeSettings: options.exclude === null,
fileEncoding: options.encoding,
maxResults: options.maxResults,
......
......@@ -65,6 +65,11 @@ export class QueryBuilder {
return folderConfig.search.useIgnoreFiles;
});
const useGlobalIgnoreFiles = !folderResources || folderResources.every(folder => {
const folderConfig = this.configurationService.getValue<ISearchConfiguration>({ resource: folder });
return folderConfig.search.useGlobalIgnoreFiles;
});
const useRipgrep = !folderResources || folderResources.every(folder => {
const folderConfig = this.configurationService.getValue<ISearchConfiguration>({ resource: folder });
return folderConfig.search.useRipgrep;
......@@ -94,6 +99,7 @@ export class QueryBuilder {
contentPattern,
useRipgrep,
disregardIgnoreFiles: options.disregardIgnoreFiles || !useIgnoreFiles,
disregardGlobalIgnoreFiles: options.disregardGlobalIgnoreFiles || !useGlobalIgnoreFiles,
disregardExcludeSettings: options.disregardExcludeSettings,
ignoreSymlinks,
previewOptions: options.previewOptions,
......@@ -298,7 +304,8 @@ export class QueryBuilder {
folder,
excludePattern: this.getExcludesForFolder(folderConfig, options),
fileEncoding: folderConfig.files && folderConfig.files.encoding,
disregardIgnoreFiles: perFolderUseIgnoreFiles ? !folderConfig.search.useIgnoreFiles : undefined
disregardIgnoreFiles: perFolderUseIgnoreFiles ? !folderConfig.search.useIgnoreFiles : undefined,
disregardGlobalIgnoreFiles: perFolderUseIgnoreFiles ? !folderConfig.search.useGlobalIgnoreFiles : undefined
};
}
}
......
......@@ -601,6 +601,7 @@ configurationRegistry.registerConfiguration({
type: 'boolean',
markdownDescription: nls.localize('useGlobalIgnoreFiles', "Controls whether to use global `.gitignore` and `.ignore` files when searching for files."),
default: false,
scope: ConfigurationScope.RESOURCE
},
'search.quickOpen.includeSymbols': {
type: 'boolean',
......
......@@ -99,7 +99,7 @@ suite('QueryBuilder', () => {
}
}
}],
type: QueryType.Text
type: QueryType.TextuseIgnoreFiles
});
});
......
......@@ -511,7 +511,7 @@ function getRgArgs(config: IRawSearch) {
}
args.push('--no-config');
if (!config.useGlobalIgnoreFiles) {
if (!config.disregardGlobalIgnoreFiles) {
args.push('--no-ignore-global');
}
......
......@@ -17,6 +17,7 @@ export interface IFolderSearch {
includePattern?: IExpression;
fileEncoding?: string;
disregardIgnoreFiles?: boolean;
disregardGlobalIgnoreFiles: boolean;
}
export interface IRawSearch {
......@@ -35,7 +36,7 @@ export interface IRawSearch {
useRipgrep?: boolean;
disregardIgnoreFiles?: boolean;
previewOptions?: ITextSearchPreviewOptions;
useGlobalIgnoreFiles?: boolean;
disregardGlobalIgnoreFiles?: boolean;
}
export interface ITelemetryEvent {
......
......@@ -489,6 +489,7 @@ export class DiskSearch implements ISearchResultProvider {
cacheKey: query.cacheKey,
useRipgrep: query.useRipgrep,
disregardIgnoreFiles: query.disregardIgnoreFiles,
disregardGlobalIgnoreFiles: query.disregardGlobalIgnoreFiles,
ignoreSymlinks: query.ignoreSymlinks,
previewOptions: query.previewOptions
};
......@@ -499,6 +500,7 @@ export class DiskSearch implements ISearchResultProvider {
includePattern: q.includePattern,
fileEncoding: q.fileEncoding,
disregardIgnoreFiles: q.disregardIgnoreFiles,
disregardGlobalIgnoreFiles: q.disregardGlobalIgnoreFiles,
folder: q.folder.fsPath
});
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册