Skip to content

Commit 83cc5b7

Browse files
committed
Fix missing result count warning for untitled files
Fix microsoft#90383
1 parent ea91347 commit 83cc5b7

1 file changed

Lines changed: 23 additions & 6 deletions

File tree

src/vs/workbench/services/search/common/searchService.ts

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,13 @@ export class SearchService extends Disposable implements ISearchService {
7474
const localResults = this.getLocalResults(query);
7575

7676
if (onProgress) {
77-
arrays.coalesce(localResults.values()).forEach(onProgress);
77+
arrays.coalesce(localResults.results.values()).forEach(onProgress);
7878
}
7979

8080
const onProviderProgress = (progress: ISearchProgressItem) => {
8181
if (isFileMatch(progress)) {
8282
// Match
83-
if (!localResults.has(progress.resource) && onProgress) { // don't override local results
83+
if (!localResults.results.has(progress.resource) && onProgress) { // don't override local results
8484
onProgress(progress);
8585
}
8686
} else if (onProgress) {
@@ -96,7 +96,10 @@ export class SearchService extends Disposable implements ISearchService {
9696
const otherResults = await this.doSearch(query, token, onProviderProgress);
9797
return {
9898
...otherResults,
99-
results: [...otherResults.results, ...arrays.coalesce(localResults.values())]
99+
...{
100+
limitHit: otherResults.limitHit || localResults.limitHit
101+
},
102+
results: [...otherResults.results, ...arrays.coalesce(localResults.results.values())]
100103
};
101104
}
102105

@@ -407,8 +410,9 @@ export class SearchService extends Disposable implements ISearchService {
407410
}
408411
}
409412

410-
private getLocalResults(query: ITextQuery): ResourceMap<IFileMatch | null> {
413+
private getLocalResults(query: ITextQuery): { results: ResourceMap<IFileMatch | null>; limitHit: boolean } {
411414
const localResults = new ResourceMap<IFileMatch | null>();
415+
let limitHit = false;
412416

413417
if (query.type === QueryType.Text) {
414418
const models = this.modelService.getModels();
@@ -418,6 +422,10 @@ export class SearchService extends Disposable implements ISearchService {
418422
return;
419423
}
420424

425+
if (limitHit) {
426+
return;
427+
}
428+
421429
// Skip files that are not opened as text file
422430
if (!this.editorService.isOpen({ resource })) {
423431
return;
@@ -444,8 +452,14 @@ export class SearchService extends Disposable implements ISearchService {
444452
}
445453

446454
// Use editor API to find matches
447-
const matches = model.findMatches(query.contentPattern.pattern, false, !!query.contentPattern.isRegExp, !!query.contentPattern.isCaseSensitive, query.contentPattern.isWordMatch ? query.contentPattern.wordSeparators! : null, false, query.maxResults);
455+
const askMax = typeof query.maxResults === 'number' ? query.maxResults + 1 : undefined;
456+
let matches = model.findMatches(query.contentPattern.pattern, false, !!query.contentPattern.isRegExp, !!query.contentPattern.isCaseSensitive, query.contentPattern.isWordMatch ? query.contentPattern.wordSeparators! : null, false, askMax);
448457
if (matches.length) {
458+
if (askMax && matches.length >= askMax) {
459+
limitHit = true;
460+
matches = matches.slice(0, askMax - 1);
461+
}
462+
449463
const fileMatch = new FileMatch(resource);
450464
localResults.set(resource, fileMatch);
451465

@@ -457,7 +471,10 @@ export class SearchService extends Disposable implements ISearchService {
457471
});
458472
}
459473

460-
return localResults;
474+
return {
475+
results: localResults,
476+
limitHit
477+
};
461478
}
462479

463480
private matches(resource: uri, query: ITextQuery): boolean {

0 commit comments

Comments
 (0)