提交 de638fa4 编写于 作者: J Joao Moreno

suggest: model.visibleCount

上级 8ca43a84
...@@ -105,6 +105,10 @@ class CompletionGroup { ...@@ -105,6 +105,10 @@ class CompletionGroup {
} }
} }
} }
get visibleCount(): number {
return this.items.reduce((r, i) => r + (isFalsyOrEmpty(this.filter(this.model.currentWord, i.suggestion)) ? 0 : 1), 0);
}
} }
class CompletionModel { class CompletionModel {
...@@ -133,6 +137,10 @@ class CompletionModel { ...@@ -133,6 +137,10 @@ class CompletionModel {
get items(): CompletionItem[] { get items(): CompletionItem[] {
return this.groups.reduce((r, groups) => r.concat(groups.items), []); return this.groups.reduce((r, groups) => r.concat(groups.items), []);
} }
get visibleCount(): number {
return this.groups.reduce((r, g) => r + g.visibleCount, 0);
}
} }
// To be used as a tree element when we want to show a message // To be used as a tree element when we want to show a message
...@@ -613,6 +621,26 @@ export class SuggestWidget implements EditorBrowser.IContentWidget, IDisposable ...@@ -613,6 +621,26 @@ export class SuggestWidget implements EditorBrowser.IContentWidget, IDisposable
promise = this.tree.setInput(model); promise = this.tree.setInput(model);
} }
if (model.visibleCount === 0) {
if (e.auto) {
this.setState(State.Hidden);
} else {
if (this.shouldShowEmptySuggestionList) {
this.setState(State.Empty);
} else {
this.setState(State.Hidden);
}
}
if(this.telemetryTimer) {
this.telemetryTimer.data = { reason: 'empty' };
this.telemetryTimer.stop();
this.telemetryTimer = null;
}
return;
}
promise.done(() => { promise.done(() => {
const navigator = this.tree.getNavigator(); const navigator = this.tree.getNavigator();
const currentWord = e.currentWord; const currentWord = e.currentWord;
...@@ -633,38 +661,19 @@ export class SuggestWidget implements EditorBrowser.IContentWidget, IDisposable ...@@ -633,38 +661,19 @@ export class SuggestWidget implements EditorBrowser.IContentWidget, IDisposable
bestSuggestion = item; bestSuggestion = item;
bestSuggestionIndex = index; bestSuggestionIndex = index;
} }
index++;
} }
this.telemetryData = this.telemetryData || {}; this.tree.setFocus(bestSuggestion, { firstSuggestion: true });
let reason: string;
if (index === 0) { // no suggestions
if (e.auto) {
this.setState(State.Hidden);
} else {
if (this.shouldShowEmptySuggestionList) {
this.setState(State.Empty);
} else {
this.setState(State.Hidden);
}
}
reason = 'empty'; this.telemetryData = this.telemetryData || {};
} else { this.telemetryData.suggestionCount = suggestions.length;
this.tree.setFocus(bestSuggestion, { firstSuggestion: true }); this.telemetryData.suggestedIndex = bestSuggestionIndex;
this.telemetryData.hintLength = currentWord.length;
this.telemetryData.suggestionCount = suggestions.length;
this.telemetryData.suggestedIndex = bestSuggestionIndex;
this.telemetryData.hintLength = currentWord.length;
reason = 'results';
this.setState(State.Open); this.setState(State.Open);
}
if(this.telemetryTimer) { if(this.telemetryTimer) {
this.telemetryTimer.data = { reason }; this.telemetryTimer.data = { reason: 'results' };
this.telemetryTimer.stop(); this.telemetryTimer.stop();
this.telemetryTimer = null; this.telemetryTimer = null;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册