Fix #36548 - add search.followSymlinks

This commit is contained in:
Rob Lourens 2017-10-20 10:29:51 -07:00
parent 5ba128e167
commit 1ec704e19a
8 changed files with 22 additions and 5 deletions

View file

@ -55,6 +55,7 @@ export interface ICommonQueryOptions {
useRipgrep?: boolean;
disregardIgnoreFiles?: boolean;
disregardExcludeSettings?: boolean;
ignoreSymlinks?: boolean;
}
export interface IQueryOptions extends ICommonQueryOptions {
@ -173,6 +174,7 @@ export interface ISearchConfiguration extends IFilesConfiguration {
exclude: glob.IExpression;
useRipgrep: boolean;
useIgnoreFilesByDefault: boolean;
followSymlinks: boolean;
};
editor: {
wordSeparators: string;

View file

@ -371,6 +371,11 @@ configurationRegistry.registerConfiguration({
'type': 'boolean',
'description': nls.localize('search.quickOpen.includeSymbols', "Configure to include results from a global symbol search in the file results for Quick Open."),
'default': false
},
'search.followSymlinks': {
'type': 'boolean',
'description': nls.localize('search.followSymlinks', "Controls whether to follow symlinks while searching."),
'default': true
}
}
});

View file

@ -60,6 +60,8 @@ export class QueryBuilder {
return folderConfig.search.useRipgrep;
});
const ignoreSymlinks = !this.configurationService.getConfiguration<ISearchConfiguration>().search.followSymlinks;
const query = <ISearchQuery>{
type,
folderQueries,
@ -74,7 +76,8 @@ export class QueryBuilder {
contentPattern: contentPattern,
useRipgrep,
disregardIgnoreFiles: options.disregardIgnoreFiles,
disregardExcludeSettings: options.disregardExcludeSettings
disregardExcludeSettings: options.disregardExcludeSettings,
ignoreSymlinks
};
// Filter extraFileResources against global include/exclude patterns - they are already expected to not belong to a workspace

View file

@ -80,7 +80,8 @@ export interface IWorkbenchSearchConfiguration extends ISearchConfiguration {
},
exclude: glob.IExpression,
useRipgrep: boolean,
useIgnoreFilesByDefault: boolean
useIgnoreFilesByDefault: boolean,
followSymlinks: boolean;
};
}

View file

@ -42,7 +42,9 @@ function getRgArgs(config: IRawSearch, folderQuery: IFolderSearch, includePatter
}
// Follow symlinks
args.push('--follow');
if (!config.ignoreSymlinks) {
args.push('--follow');
}
if (config.exists) {
args.push('--quiet');

View file

@ -493,7 +493,9 @@ function getRgArgs(config: IRawSearch): IRgGlobResult {
}
// Follow symlinks
args.push('--follow');
if (!config.ignoreSymlinks) {
args.push('--follow');
}
// Set default encoding if only one folder is opened
if (config.folderQueries.length === 1 && config.folderQueries[0].fileEncoding && config.folderQueries[0].fileEncoding !== 'utf8') {

View file

@ -19,6 +19,7 @@ export interface IFolderSearch {
export interface IRawSearch {
folderQueries: IFolderSearch[];
ignoreSymlinks?: boolean;
extraFiles?: string[];
filePattern?: string;
excludePattern?: IExpression;

View file

@ -270,7 +270,8 @@ export class DiskSearch implements ISearchResultProvider {
sortByScore: query.sortByScore,
cacheKey: query.cacheKey,
useRipgrep: query.useRipgrep,
disregardIgnoreFiles: query.disregardIgnoreFiles
disregardIgnoreFiles: query.disregardIgnoreFiles,
ignoreSymlinks: query.ignoreSymlinks
};
if (query.folderQueries) {