From 311d4c0782f3cdb78cf892305bae2412469590a8 Mon Sep 17 00:00:00 2001 From: chemzqm <chemzqm@gmail.com> Date: Wed, 24 Oct 2018 20:45:48 +0800 Subject: [PATCH] remvoe commaAfterImport option, use noSemicolons --- package.json | 11 +---------- src/server/features/completionItemProvider.ts | 10 +++++++--- src/server/features/fileConfigurationManager.ts | 2 -- src/server/features/organizeImports.ts | 8 ++++---- 4 files changed, 12 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index 946b6b7..9b52c7d 100644 --- a/package.json +++ b/package.json @@ -200,11 +200,6 @@ "default": true, "description": "Enable/disable suggest paths in import statement and require calls" }, - "typescript.suggest.commaAfterImport": { - "type": "boolean", - "default": true, - "description": "Add comma after import statement." - }, "typescript.suggest.autoImports": { "type": "boolean", "default": true, @@ -316,11 +311,6 @@ "default": true, "description": "Enable/disable suggest paths in import statement and require calls" }, - "javascript.suggest.commaAfterImport": { - "type": "boolean", - "default": true, - "description": "Add comma after import statement." - }, "javascript.suggest.autoImports": { "type": "boolean", "default": true, @@ -407,3 +397,4 @@ "which": "^1.3.1" } } + diff --git a/src/server/features/completionItemProvider.ts b/src/server/features/completionItemProvider.ts index e446194..0f983d2 100644 --- a/src/server/features/completionItemProvider.ts +++ b/src/server/features/completionItemProvider.ts @@ -51,6 +51,7 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP public static readonly triggerCharacters = ['.', '@', '<'] private completeOption: SuggestOptions + private noSemicolons = false constructor( private readonly client: ITypeScriptServiceClient, @@ -61,10 +62,14 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP this.setCompleteOption(languageId) commands.register(new ApplyCompletionCodeActionCommand(this.client)) + workspace.onDidChangeConfiguration(_e => { + this.setCompleteOption(languageId) + }) } private setCompleteOption(languageId: string): void { this.completeOption = this.fileConfigurationManager.getCompleteOptions(languageId) + this.noSemicolons = this.fileConfigurationManager.removeSemicolons(languageId) } /** @@ -218,7 +223,6 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP if (!detail.codeActions || !detail.codeActions.length) { return {} } - let { commaAfterImport } = this.completeOption // Try to extract out the additionalTextEdits for the current file. // Also check if we still have to apply other workspace edits const additionalTextEdits: TextEdit[] = [] @@ -257,10 +261,10 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP ] } } - if (additionalTextEdits.length && !commaAfterImport) { + if (additionalTextEdits.length && this.noSemicolons) { // remove comma additionalTextEdits.forEach(o => { - o.newText = o.newText.replace(/;/, '') + o.newText = o.newText.replace(/;/g, '') }) } return { diff --git a/src/server/features/fileConfigurationManager.ts b/src/server/features/fileConfigurationManager.ts index 2685c8c..23a189e 100644 --- a/src/server/features/fileConfigurationManager.ts +++ b/src/server/features/fileConfigurationManager.ts @@ -34,7 +34,6 @@ export interface SuggestOptions { readonly enabled: boolean readonly names: boolean readonly paths: boolean - readonly commaAfterImport: boolean readonly completeFunctionCalls: boolean readonly autoImports: boolean } @@ -129,7 +128,6 @@ export default class FileConfigurationManager { enabled: config.get<boolean>('enabled', true), names: config.get<boolean>('names', true), paths: config.get<boolean>('paths', true), - commaAfterImport: config.get<boolean>('commaAfterImport', true), completeFunctionCalls: config.get<boolean>('completeFunctionCalls', true), autoImports: config.get<boolean>('autoImports', true) } diff --git a/src/server/features/organizeImports.ts b/src/server/features/organizeImports.ts index 0e4568d..5a7fcab 100644 --- a/src/server/features/organizeImports.ts +++ b/src/server/features/organizeImports.ts @@ -16,7 +16,7 @@ class OrganizeImportsCommand implements Command { constructor( private readonly client: ITypeScriptServiceClient, - private commaAfterImport: boolean, + private noSemicolons: boolean, private modeIds: string[] ) { workspace.onWillSaveUntil(this.onWillSaveUntil, this, 'tsserver-organizeImports') @@ -55,7 +55,7 @@ class OrganizeImportsCommand implements Command { this.client, response.body ) - if (!this.commaAfterImport) { + if (this.noSemicolons) { let { changes } = edit if (changes) { for (let c of Object.keys(changes)) { @@ -87,8 +87,8 @@ export default class OrganizeImports { ) { let description = standardLanguageDescriptions.find(o => o.id == languageId) let modeIds = description ? description.modeIds : [] - let option = fileConfigurationManager.getCompleteOptions(languageId) - let cmd = new OrganizeImportsCommand(client, option.commaAfterImport, modeIds) + let noSemicolons = fileConfigurationManager.removeSemicolons(languageId) + let cmd = new OrganizeImportsCommand(client, noSemicolons, modeIds) commandManager.register(cmd) this.disposables.push(Disposable.create(() => { commandManager.unregister(cmd.id)