提交 96e3fd51 编写于 作者: R Rob Lourens

EH search - invoke all providers during a search to unblock search provider extension development

上级 d8958ecd
......@@ -6,6 +6,7 @@
import { PPromise, TPromise } from 'vs/base/common/winjs.base';
import uri from 'vs/base/common/uri';
import * as arrays from 'vs/base/common/arrays';
import * as objects from 'vs/base/common/objects';
import * as strings from 'vs/base/common/strings';
import { getNextTickChannel } from 'vs/base/parts/ipc/common/ipc';
......@@ -96,11 +97,7 @@ export class SearchService implements ISearchService {
const startTime = Date.now();
const searchWithProvider = (provider: ISearchResultProvider) => TPromise.wrap(provider.search(query)).then(e => e,
err => {
// TODO@joh
// single provider fail. fail all?
onError(err);
},
null,
progress => {
if (progress.resource) {
// Match
......@@ -123,7 +120,19 @@ export class SearchService implements ISearchService {
// If no search providers are registered, fall back on DiskSearch
// TODO@roblou this is not properly waiting for search-rg to finish registering itself
if (this.searchProvider.length) {
return searchWithProvider(this.searchProvider[0]);
return TPromise.join(this.searchProvider.map(p => searchWithProvider(p)))
.then(complete => {
const first: ISearchComplete = complete[0];
if (!first) {
return null;
}
return <ISearchComplete>{
limitHit: first && first.limitHit,
stats: first.stats,
results: arrays.flatten(complete.map(c => c.results))
};
});
} else {
return searchWithProvider(this.diskSearch);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册