Skip to content

Commit 031bb8e

Browse files
committed
ux tweaks: only have show more / less when there is a good chance of details, microsoft#39441
1 parent 97cc40b commit 031bb8e

3 files changed

Lines changed: 13 additions & 4 deletions

File tree

src/vs/editor/contrib/suggest/suggest.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export const Context = {
2626
MakesTextEdit: new RawContextKey('suggestionMakesTextEdit', true),
2727
AcceptSuggestionsOnEnter: new RawContextKey<boolean>('acceptSuggestionOnEnter', true),
2828
HasInsertAndReplaceRange: new RawContextKey('suggestionHasInsertAndReplaceRange', false),
29+
CanResolve: new RawContextKey('suggestionCanResolve', false),
2930
};
3031

3132
export const suggestWidgetStatusbarMenu = new MenuId('suggestWidgetStatusBar');
@@ -34,9 +35,12 @@ export class CompletionItem {
3435

3536
_brand!: 'ISuggestionItem';
3637

38+
private static readonly _defaultResolve = () => Promise.resolve();
39+
3740
readonly resolve: (token: CancellationToken) => Promise<void>;
3841
isResolved: boolean = false;
3942

43+
4044
//
4145
readonly editStart: IPosition;
4246
readonly editInsertEnd: IPosition;
@@ -87,7 +91,7 @@ export class CompletionItem {
8791
// create the suggestion resolver
8892
const { resolveCompletionItem } = provider;
8993
if (typeof resolveCompletionItem !== 'function') {
90-
this.resolve = () => Promise.resolve();
94+
this.resolve = CompletionItem._defaultResolve;
9195
this.isResolved = true;
9296
} else {
9397
let cached: Promise<void> | undefined;

src/vs/editor/contrib/suggest/suggestController.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,12 @@ export class SuggestController implements IEditorContribution {
139139
// Wire up makes text edit context key
140140
const ctxMakesTextEdit = SuggestContext.MakesTextEdit.bindTo(this._contextKeyService);
141141
const ctxHasInsertAndReplace = SuggestContext.HasInsertAndReplaceRange.bindTo(this._contextKeyService);
142+
const ctxCanResolve = SuggestContext.CanResolve.bindTo(this._contextKeyService);
142143

143144
this._toDispose.add(toDisposable(() => {
144145
ctxMakesTextEdit.reset();
145146
ctxHasInsertAndReplace.reset();
147+
ctxCanResolve.reset();
146148
}));
147149

148150
this._toDispose.add(widget.onDidFocus(({ item }) => {
@@ -172,6 +174,9 @@ export class SuggestController implements IEditorContribution {
172174

173175
// (ctx: hasInsertAndReplaceRange)
174176
ctxHasInsertAndReplace.set(!Position.equals(item.editInsertEnd, item.editReplaceEnd));
177+
178+
// (ctx: canResolve)
179+
ctxCanResolve.set(Boolean(item.provider.resolveCompletionItem) || Boolean(item.completion.documentation) || item.completion.detail !== item.completion.label);
175180
}));
176181

177182
this._toDispose.add(widget.onDetailsKeyDown(e => {
@@ -695,13 +700,13 @@ registerEditorCommand(new SuggestCommand({
695700
menuId: suggestWidgetStatusbarMenu,
696701
group: 'right',
697702
order: 1,
698-
when: SuggestContext.DetailsVisible,
703+
when: ContextKeyExpr.and(SuggestContext.DetailsVisible, SuggestContext.CanResolve),
699704
title: nls.localize('detail.more', "show less")
700705
}, {
701706
menuId: suggestWidgetStatusbarMenu,
702707
group: 'right',
703708
order: 1,
704-
when: SuggestContext.DetailsVisible.toNegated(),
709+
when: ContextKeyExpr.and(SuggestContext.DetailsVisible.toNegated(), SuggestContext.CanResolve),
705710
title: nls.localize('detail.less', "show more")
706711
}]
707712
}));

src/vs/workbench/contrib/snippets/browser/snippetCompletionProvider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ export class SnippetCompletionProvider implements CompletionItemProvider {
154154
});
155155
}
156156

157-
resolveCompletionItem?(model: ITextModel, position: Position, item: CompletionItem): CompletionItem {
157+
resolveCompletionItem(_model: ITextModel, _position: Position, item: CompletionItem): CompletionItem {
158158
return (item instanceof SnippetCompletion) ? item.resolve() : item;
159159
}
160160

0 commit comments

Comments
 (0)