fix: Enable disableFuzzySearch config option propagation (#7002)
Co-authored-by: Jacob Richman <jacob314@gmail.com>
This commit is contained in:
parent
4c3ec1f0cc
commit
99a28e6b6a
2 changed files with 16 additions and 8 deletions
|
|
@ -532,6 +532,7 @@ export async function loadCliConfig(
|
|||
respectGeminiIgnore: settings.fileFiltering?.respectGeminiIgnore,
|
||||
enableRecursiveFileSearch:
|
||||
settings.fileFiltering?.enableRecursiveFileSearch,
|
||||
disableFuzzySearch: settings.fileFiltering?.disableFuzzySearch,
|
||||
},
|
||||
checkpointing: argv.checkpointing || settings.checkpointing?.enabled,
|
||||
proxy:
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ class RecursiveFileSearch implements FileSearch {
|
|||
|
||||
async initialize(): Promise<void> {
|
||||
this.ignore = loadIgnoreRules(this.options);
|
||||
|
||||
this.allFiles = await crawl({
|
||||
crawlDirectory: this.options.projectRoot,
|
||||
cwd: this.options.projectRoot,
|
||||
|
|
@ -116,7 +117,11 @@ class RecursiveFileSearch implements FileSearch {
|
|||
pattern: string,
|
||||
options: SearchOptions = {},
|
||||
): Promise<string[]> {
|
||||
if (!this.resultCache || !this.fzf || !this.ignore) {
|
||||
if (
|
||||
!this.resultCache ||
|
||||
(!this.fzf && !this.options.disableFuzzySearch) ||
|
||||
!this.ignore
|
||||
) {
|
||||
throw new Error('Engine not initialized. Call initialize() first.');
|
||||
}
|
||||
|
||||
|
|
@ -131,7 +136,7 @@ class RecursiveFileSearch implements FileSearch {
|
|||
filteredCandidates = candidates;
|
||||
} else {
|
||||
let shouldCache = true;
|
||||
if (pattern.includes('*') || this.options.disableFuzzySearch) {
|
||||
if (pattern.includes('*') || !this.fzf) {
|
||||
filteredCandidates = await filter(candidates, pattern, options.signal);
|
||||
} else {
|
||||
filteredCandidates = await this.fzf
|
||||
|
|
@ -175,6 +180,7 @@ class RecursiveFileSearch implements FileSearch {
|
|||
|
||||
private buildResultCache(): void {
|
||||
this.resultCache = new ResultCache(this.allFiles);
|
||||
if (!this.options.disableFuzzySearch) {
|
||||
// The v1 algorithm is much faster since it only looks at the first
|
||||
// occurence of the pattern. We use it for search spaces that have >20k
|
||||
// files, because the v2 algorithm is just too slow in those cases.
|
||||
|
|
@ -182,6 +188,7 @@ class RecursiveFileSearch implements FileSearch {
|
|||
fuzzy: this.allFiles.length > 20000 ? 'v1' : 'v2',
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class DirectoryFileSearch implements FileSearch {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue