From eaa535ff3e3fafe37b1f30e546023b04b45d02a1 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 13 Jul 2018 09:31:13 -0700 Subject: [PATCH] Use properties for commitCharacters --- .../src/features/completions.ts | 22 ++++++++----------- .../src/protocol.const.ts | 1 - 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/extensions/typescript-language-features/src/features/completions.ts b/extensions/typescript-language-features/src/features/completions.ts index a6b2f2fc62f..f723a30c07b 100644 --- a/extensions/typescript-language-features/src/features/completions.ts +++ b/extensions/typescript-language-features/src/features/completions.ts @@ -15,6 +15,7 @@ import * as Previewer from '../utils/previewer'; import * as typeConverters from '../utils/typeConverters'; import TypingsStatus from '../utils/typingsStatus'; import FileConfigurationManager from './fileConfigurationManager'; +import { memoize } from '../utils/memoize'; const localize = nls.loadMessageBundle(); @@ -34,9 +35,9 @@ class MyCompletionItem extends vscode.CompletionItem { line: string, public readonly tsEntry: Proto.CompletionEntry, useCodeSnippetsOnMethodSuggest: boolean, - commitCharactersSettings: CommitCharactersSettings + public readonly commitCharactersSettings: CommitCharactersSettings ) { - super(tsEntry.name); + super(tsEntry.name, MyCompletionItem.convertKind(tsEntry.kind)); if (tsEntry.isRecommended) { // Make sure isRecommended property always comes first @@ -51,9 +52,7 @@ class MyCompletionItem extends vscode.CompletionItem { this.sortText = tsEntry.sortText; } - this.kind = MyCompletionItem.convertKind(tsEntry.kind); this.position = position; - this.commitCharacters = MyCompletionItem.getCommitCharacters(commitCharactersSettings, tsEntry.kind); this.useCodeSnippet = useCodeSnippetsOnMethodSuggest && (this.kind === vscode.CompletionItemKind.Function || this.kind === vscode.CompletionItemKind.Method); if (tsEntry.replacementSpan) { this.range = typeConverters.Range.fromTextSpan(tsEntry.replacementSpan); @@ -136,7 +135,6 @@ class MyCompletionItem extends vscode.CompletionItem { case PConst.Kind.interface: return vscode.CompletionItemKind.Interface; case PConst.Kind.warning: - case PConst.Kind.file: case PConst.Kind.script: return vscode.CompletionItemKind.File; case PConst.Kind.directory: @@ -147,12 +145,10 @@ class MyCompletionItem extends vscode.CompletionItem { return vscode.CompletionItemKind.Property; } - private static getCommitCharacters( - settings: CommitCharactersSettings, - kind: string - ): string[] | undefined { + @memoize + public get commitCharacters(): string[] | undefined { const commitCharacters: string[] = []; - switch (kind) { + switch (this.tsEntry.kind) { case PConst.Kind.memberGetAccessor: case PConst.Kind.memberSetAccessor: case PConst.Kind.constructSignature: @@ -160,7 +156,7 @@ class MyCompletionItem extends vscode.CompletionItem { case PConst.Kind.indexSignature: case PConst.Kind.enum: case PConst.Kind.interface: - if (settings.enableDotCompletions) { + if (this.commitCharactersSettings.enableDotCompletions) { commitCharacters.push('.'); } break; @@ -175,10 +171,10 @@ class MyCompletionItem extends vscode.CompletionItem { case PConst.Kind.class: case PConst.Kind.function: case PConst.Kind.memberFunction: - if (settings.enableDotCompletions) { + if (this.commitCharactersSettings.enableDotCompletions) { commitCharacters.push('.', ','); } - if (settings.enableCallCompletions) { + if (this.commitCharactersSettings.enableCallCompletions) { commitCharacters.push('('); } break; diff --git a/extensions/typescript-language-features/src/protocol.const.ts b/extensions/typescript-language-features/src/protocol.const.ts index 735e2aac259..c03c1ca9076 100644 --- a/extensions/typescript-language-features/src/protocol.const.ts +++ b/extensions/typescript-language-features/src/protocol.const.ts @@ -13,7 +13,6 @@ export class Kind { public static readonly directory = 'directory'; public static readonly enum = 'enum'; public static readonly externalModuleName = 'external module name'; - public static readonly file = 'file'; public static readonly function = 'function'; public static readonly indexSignature = 'index'; public static readonly interface = 'interface';