From cf9e62d3735390edd7f1be81aa8588032ccf3953 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 19 Dec 2018 20:37:25 -0800 Subject: [PATCH] Merge update and cancel events to a single change event --- .../parameterHints/parameterHintsModel.ts | 19 ++++++------------- .../parameterHints/parameterHintsWidget.ts | 14 +++++++------- .../test/parameterHintsModel.test.ts | 4 ++-- 3 files changed, 15 insertions(+), 22 deletions(-) diff --git a/src/vs/editor/contrib/parameterHints/parameterHintsModel.ts b/src/vs/editor/contrib/parameterHints/parameterHintsModel.ts index 7bdaba0715d..42cc8f44bf1 100644 --- a/src/vs/editor/contrib/parameterHints/parameterHintsModel.ts +++ b/src/vs/editor/contrib/parameterHints/parameterHintsModel.ts @@ -5,7 +5,7 @@ import { CancelablePromise, createCancelablePromise, Delayer } from 'vs/base/common/async'; import { onUnexpectedError } from 'vs/base/common/errors'; -import { Emitter, Event } from 'vs/base/common/event'; +import { Emitter } from 'vs/base/common/event'; import { Disposable } from 'vs/base/common/lifecycle'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { ICursorSelectionChangedEvent } from 'vs/editor/common/controller/cursorEvents'; @@ -18,10 +18,6 @@ export interface TriggerContext { readonly triggerCharacter?: string; } -export interface IHintEvent { - readonly hints: modes.SignatureHelp; -} - const DefaultState = new class { readonly state = 'default'; }; const PendingState = new class { readonly state = 'pending'; }; @@ -38,11 +34,8 @@ export class ParameterHintsModel extends Disposable { private static readonly DEFAULT_DELAY = 120; // ms - private readonly _onHint = this._register(new Emitter()); - public readonly onHint: Event = this._onHint.event; - - private readonly _onCancel = this._register(new Emitter()); - public readonly onCancel: Event = this._onCancel.event; + private readonly _onChangedHints = this._register(new Emitter()); + public readonly onChangedHints = this._onChangedHints.event; private editor: ICodeEditor; private enabled: boolean; @@ -82,7 +75,7 @@ export class ParameterHintsModel extends Disposable { this.throttledDelayer.cancel(); if (!silent) { - this._onCancel.fire(void 0); + this._onChangedHints.fire(undefined); } if (this.provideSignatureHelpRequest) { @@ -153,7 +146,7 @@ export class ParameterHintsModel extends Disposable { state: 'active', hints: { ...this.state.hints, activeSignature } }; - this._onHint.fire(this.state); + this._onChangedHints.fire(this.state.hints); } private doTrigger(triggerContext: modes.SignatureHelpContext): Promise { @@ -177,7 +170,7 @@ export class ParameterHintsModel extends Disposable { return false; } else { this.state = new ActiveState(result); - this._onHint.fire(this.state); + this._onChangedHints.fire(this.state.hints); return true; } }).catch(error => { diff --git a/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts b/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts index 38f3c8a7227..7d347210c2b 100644 --- a/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts +++ b/src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts @@ -59,13 +59,13 @@ export class ParameterHintsWidget implements IContentWidget, IDisposable { this.visible = false; this.disposables = []; - this.disposables.push(this.model.onHint(e => { - this.show(); - this.render(e.hints); - })); - - this.disposables.push(this.model.onCancel(() => { - this.hide(); + this.disposables.push(this.model.onChangedHints(newParameterHints => { + if (newParameterHints) { + this.show(); + this.render(newParameterHints); + } else { + this.hide(); + } })); } diff --git a/src/vs/editor/contrib/parameterHints/test/parameterHintsModel.test.ts b/src/vs/editor/contrib/parameterHints/test/parameterHintsModel.test.ts index 45ec57778cd..69663e0c3ce 100644 --- a/src/vs/editor/contrib/parameterHints/test/parameterHintsModel.test.ts +++ b/src/vs/editor/contrib/parameterHints/test/parameterHintsModel.test.ts @@ -244,10 +244,10 @@ suite('ParameterHintsModel', () => { assert.strictEqual(-1, didRequestCancellationOf); return new Promise((resolve, reject) => - hintsModel.onHint(e => { + hintsModel.onChangedHints(newParamterHints => { try { assert.strictEqual(0, didRequestCancellationOf); - assert.strictEqual('1', e.hints.signatures[0].label); + assert.strictEqual('1', newParamterHints.signatures[0].label); resolve(); } catch (e) { reject(e); -- GitLab