diff --git a/extensions/typescript-language-features/package.json b/extensions/typescript-language-features/package.json index 8480f15b3835b267464727cefb2bfcb8e43fd6eb..98a49415e42f30e79960734eb68743c11dd8a285 100644 --- a/extensions/typescript-language-features/package.json +++ b/extensions/typescript-language-features/package.json @@ -430,36 +430,44 @@ "javascript.preferences.quoteStyle": { "type": "string", "enum": [ + "auto", "single", "double" ], + "default": "auto", "description": "%typescript.preferences.quoteStyle%", "scope": "window" }, "typescript.preferences.quoteStyle": { "type": "string", "enum": [ + "auto", "single", "double" ], + "default": "auto", "description": "%typescript.preferences.quoteStyle%", "scope": "window" }, "javascript.preferences.importModuleSpecifier": { "type": "string", "enum": [ + "auto", "relative", "non-relative" ], + "default": "auto", "description": "%typescript.preferences.importModuleSpecifier%", "scope": "window" }, "typescript.preferences.importModuleSpecifier": { "type": "string", "enum": [ + "auto", "relative", "non-relative" ], + "default": "auto", "description": "%typescript.preferences.importModuleSpecifier%", "scope": "window" } diff --git a/extensions/typescript-language-features/package.nls.json b/extensions/typescript-language-features/package.nls.json index 3f35595b5adb1acc936280bc9141d84780481de9..fba3a419edb4945f45d4cc6f6a3f19bff4852d8a 100644 --- a/extensions/typescript-language-features/package.nls.json +++ b/extensions/typescript-language-features/package.nls.json @@ -55,6 +55,6 @@ "taskDefinition.tsconfig.description": "The tsconfig file that defines the TS build.", "javascript.suggestionActions.enabled": "Enable/disable suggestion diagnostics for JavaScript files in the editor. Requires TypeScript >= 2.8", "typescript.suggestionActions.enabled": "Enable/disable suggestion diagnostics for TypeScript files in the editor. Requires TypeScript >= 2.8", - "typescript.preferences.quoteStyle": "Preferred quote style ('single' or 'double') to use for quick fixes. Requires TS >= 2.9", - "typescript.preferences.importModuleSpecifier": "Preferred ('relative' or 'non-relative') for auto imports. Requires TS >= 2.9" + "typescript.preferences.quoteStyle": "Preferred quote style to use for quick fixes: 'single' quotes, 'double' quotes, or 'auto' infer quote type from existing imports. Requires TS >= 2.9", + "typescript.preferences.importModuleSpecifier": "Preferred path style for auto imports: 'relative' paths, 'non-relative' paths, or 'auto' infer the shortest path type. Requires TS >= 2.9" } \ No newline at end of file diff --git a/extensions/typescript-language-features/src/features/fileConfigurationManager.ts b/extensions/typescript-language-features/src/features/fileConfigurationManager.ts index f199fe9ef8b2381fe37edee95df7208ad3895896..ae5f900a7628c24274768589120efb488be0d5e5 100644 --- a/extensions/typescript-language-features/src/features/fileConfigurationManager.ts +++ b/extensions/typescript-language-features/src/features/fileConfigurationManager.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { workspace as Workspace, FormattingOptions, TextDocument, CancellationToken, window, Disposable, workspace } from 'vscode'; +import { workspace as Workspace, FormattingOptions, TextDocument, CancellationToken, window, Disposable, workspace, WorkspaceConfiguration } from 'vscode'; import * as Proto from '../protocol'; import { ITypeScriptServiceClient } from '../typescriptService'; @@ -156,12 +156,28 @@ export default class FileConfigurationManager { document.uri); return { - quotePreference: config.get<'single' | 'double' | undefined>('quoteStyle'), - importModuleSpecifierPreference: config.get<'relative' | 'non-relative' | undefined>('importModuleSpecifier') + quotePreference: getQuoteStylePreference(config), + importModuleSpecifierPreference: getImportModuleSpecifierPreference(config) }; } } +function getQuoteStylePreference(config: WorkspaceConfiguration) { + switch (config.get('quoteStyle')) { + case 'single': return 'single'; + case 'double': return 'double'; + default: return undefined; + } +} + +function getImportModuleSpecifierPreference(config: WorkspaceConfiguration) { + switch (config.get('importModuleSpecifier')) { + case 'relative': return 'relative'; + case 'non-relative': return 'non-relative'; + default: return undefined; + } +} + function isTypeScriptDocument(document: TextDocument) { return document.languageId === languageIds.typescript || document.languageId === languageIds.typescriptreact; }