Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/microsoft/vscode.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Bierner <matb@microsoft.com>2022-11-11 01:50:55 +0300
committerGitHub <noreply@github.com>2022-11-11 01:50:55 +0300
commit615fd708e344a4d07d8fab57d004920932d6b4b6 (patch)
treedea4ab320f23a6996bf1a5ec7d16b4c7afd16b1f
parenteccee071eb1a36c76fb5b7aa882640ce2b0da59a (diff)
Make ParameterHintsModel an idle value (#166052)
For #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
-rw-r--r--src/vs/editor/contrib/parameterHints/browser/parameterHints.ts29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/vs/editor/contrib/parameterHints/browser/parameterHints.ts b/src/vs/editor/contrib/parameterHints/browser/parameterHints.ts
index 1363544105a..07b285e6121 100644
--- a/src/vs/editor/contrib/parameterHints/browser/parameterHints.ts
+++ b/src/vs/editor/contrib/parameterHints/browser/parameterHints.ts
@@ -3,6 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
+import { IdleValue } from 'vs/base/common/async';
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
import { Lazy } from 'vs/base/common/lazy';
import { Disposable } from 'vs/base/common/lifecycle';
@@ -29,7 +30,7 @@ class ParameterHintsController extends Disposable implements IEditorContribution
}
private readonly editor: ICodeEditor;
- private readonly model: ParameterHintsModel;
+ private readonly model: IdleValue<ParameterHintsModel>;
private readonly widget: Lazy<ParameterHintsWidget>;
constructor(
@@ -41,22 +42,26 @@ class ParameterHintsController extends Disposable implements IEditorContribution
this.editor = editor;
- this.model = this._register(new ParameterHintsModel(editor, languageFeaturesService.signatureHelpProvider));
+ this.model = this._register(new IdleValue(() => {
+ const model = this._register(new ParameterHintsModel(editor, languageFeaturesService.signatureHelpProvider));
- this._register(this.model.onChangedHints(newParameterHints => {
- if (newParameterHints) {
- this.widget.getValue().show();
- this.widget.getValue().render(newParameterHints);
- } else {
- this.widget.rawValue?.hide();
- }
+ this._register(model.onChangedHints(newParameterHints => {
+ if (newParameterHints) {
+ this.widget.getValue().show();
+ this.widget.getValue().render(newParameterHints);
+ } else {
+ this.widget.rawValue?.hide();
+ }
+ }));
+
+ return model;
}));
- this.widget = new Lazy(() => this._register(instantiationService.createInstance(ParameterHintsWidget, this.editor, this.model)));
+ this.widget = new Lazy(() => this._register(instantiationService.createInstance(ParameterHintsWidget, this.editor, this.model.value)));
}
cancel(): void {
- this.model.cancel();
+ this.model.value.cancel();
}
previous(): void {
@@ -68,7 +73,7 @@ class ParameterHintsController extends Disposable implements IEditorContribution
}
trigger(context: TriggerContext): void {
- this.model.trigger(context, 0);
+ this.model.value.trigger(context, 0);
}
}