From b99471e29c10e0f990943abb6fe37733a658ef47 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 9 Jan 2019 14:21:31 -0800 Subject: [PATCH] Use more explicit state for CharacterOracle --- .../contrib/suggest/suggestController.ts | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/vs/editor/contrib/suggest/suggestController.ts b/src/vs/editor/contrib/suggest/suggestController.ts index bccb74f8083..9e899b3aa91 100644 --- a/src/vs/editor/contrib/suggest/suggestController.ts +++ b/src/vs/editor/contrib/suggest/suggestController.ts @@ -37,8 +37,10 @@ class AcceptOnCharacterOracle { private _disposables: IDisposable[] = []; - private _activeAcceptCharacters = new CharacterSet(); - private _activeItem: ISelectedSuggestion; + private _active?: { + readonly acceptCharacters: CharacterSet; + readonly item: ISelectedSuggestion; + }; constructor(editor: ICodeEditor, widget: SuggestWidget, accept: (selected: ISelectedSuggestion) => any) { @@ -47,10 +49,10 @@ class AcceptOnCharacterOracle { this._disposables.push(widget.onDidHide(this.reset, this)); this._disposables.push(editor.onWillType(text => { - if (this._activeItem) { + if (this._active) { const ch = text.charCodeAt(text.length - 1); - if (this._activeAcceptCharacters.has(ch) && editor.getConfiguration().contribInfo.acceptSuggestionOnCommitCharacter) { - accept(this._activeItem); + if (this._active.acceptCharacters.has(ch) && editor.getConfiguration().contribInfo.acceptSuggestionOnCommitCharacter) { + accept(this._active.item); } } })); @@ -61,17 +63,18 @@ class AcceptOnCharacterOracle { this.reset(); return; } - this._activeItem = selected; - this._activeAcceptCharacters = new CharacterSet(); + + const acceptCharacters = new CharacterSet(); for (const ch of selected.item.completion.commitCharacters) { if (ch.length > 0) { - this._activeAcceptCharacters.add(ch.charCodeAt(0)); + acceptCharacters.add(ch.charCodeAt(0)); } } + this._active = { acceptCharacters, item: selected }; } reset(): void { - this._activeItem = undefined; + this._active = undefined; } dispose() { -- GitLab