Skip to content

Commit 615fd70

Browse files
authored
Make ParameterHintsModel an idle value (microsoft#166052)
For microsoft#164171 Parameter hints are not an essential feature on editor init. Instead we can create the model on idle. This should not have an impact on UX unless a user somehow splits an editor and then types `(` within <50ms and expects parameter hints to show up
1 parent eccee07 commit 615fd70

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

src/vs/editor/contrib/parameterHints/browser/parameterHints.ts

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6+
import { IdleValue } from 'vs/base/common/async';
67
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
78
import { Lazy } from 'vs/base/common/lazy';
89
import { Disposable } from 'vs/base/common/lifecycle';
@@ -29,7 +30,7 @@ class ParameterHintsController extends Disposable implements IEditorContribution
2930
}
3031

3132
private readonly editor: ICodeEditor;
32-
private readonly model: ParameterHintsModel;
33+
private readonly model: IdleValue<ParameterHintsModel>;
3334
private readonly widget: Lazy<ParameterHintsWidget>;
3435

3536
constructor(
@@ -41,22 +42,26 @@ class ParameterHintsController extends Disposable implements IEditorContribution
4142

4243
this.editor = editor;
4344

44-
this.model = this._register(new ParameterHintsModel(editor, languageFeaturesService.signatureHelpProvider));
45+
this.model = this._register(new IdleValue(() => {
46+
const model = this._register(new ParameterHintsModel(editor, languageFeaturesService.signatureHelpProvider));
4547

46-
this._register(this.model.onChangedHints(newParameterHints => {
47-
if (newParameterHints) {
48-
this.widget.getValue().show();
49-
this.widget.getValue().render(newParameterHints);
50-
} else {
51-
this.widget.rawValue?.hide();
52-
}
48+
this._register(model.onChangedHints(newParameterHints => {
49+
if (newParameterHints) {
50+
this.widget.getValue().show();
51+
this.widget.getValue().render(newParameterHints);
52+
} else {
53+
this.widget.rawValue?.hide();
54+
}
55+
}));
56+
57+
return model;
5358
}));
5459

55-
this.widget = new Lazy(() => this._register(instantiationService.createInstance(ParameterHintsWidget, this.editor, this.model)));
60+
this.widget = new Lazy(() => this._register(instantiationService.createInstance(ParameterHintsWidget, this.editor, this.model.value)));
5661
}
5762

5863
cancel(): void {
59-
this.model.cancel();
64+
this.model.value.cancel();
6065
}
6166

6267
previous(): void {
@@ -68,7 +73,7 @@ class ParameterHintsController extends Disposable implements IEditorContribution
6873
}
6974

7075
trigger(context: TriggerContext): void {
71-
this.model.trigger(context, 0);
76+
this.model.value.trigger(context, 0);
7277
}
7378
}
7479

0 commit comments

Comments
 (0)