[typescript-language-features] Add importModuleSpecifierEnding preference (#90405)
* Expose importModuleSpecifierEnding to typescript-language-features * Add default `auto` setting * Use string 'auto' for auto setting * Work with TypeScript 3.8
This commit is contained in:
parent
b1dfe79d37
commit
23850c7990
|
@ -638,6 +638,42 @@
|
||||||
"description": "%typescript.preferences.importModuleSpecifier%",
|
"description": "%typescript.preferences.importModuleSpecifier%",
|
||||||
"scope": "resource"
|
"scope": "resource"
|
||||||
},
|
},
|
||||||
|
"javascript.preferences.importModuleSpecifierEnding": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"auto",
|
||||||
|
"minimal",
|
||||||
|
"index",
|
||||||
|
"js"
|
||||||
|
],
|
||||||
|
"markdownEnumDescriptions": [
|
||||||
|
"%typescript.preferences.importModuleSpecifierEnding.auto%",
|
||||||
|
"%typescript.preferences.importModuleSpecifierEnding.minimal%",
|
||||||
|
"%typescript.preferences.importModuleSpecifierEnding.index%",
|
||||||
|
"%typescript.preferences.importModuleSpecifierEnding.js%"
|
||||||
|
],
|
||||||
|
"default": "auto",
|
||||||
|
"description": "%typescript.preferences.importModuleSpecifierEnding%",
|
||||||
|
"scope": "resource"
|
||||||
|
},
|
||||||
|
"typescript.preferences.importModuleSpecifierEnding": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"auto",
|
||||||
|
"minimal",
|
||||||
|
"index",
|
||||||
|
"js"
|
||||||
|
],
|
||||||
|
"markdownEnumDescriptions": [
|
||||||
|
"%typescript.preferences.importModuleSpecifierEnding.auto%",
|
||||||
|
"%typescript.preferences.importModuleSpecifierEnding.minimal%",
|
||||||
|
"%typescript.preferences.importModuleSpecifierEnding.index%",
|
||||||
|
"%typescript.preferences.importModuleSpecifierEnding.js%"
|
||||||
|
],
|
||||||
|
"default": "auto",
|
||||||
|
"description": "%typescript.preferences.importModuleSpecifierEnding%",
|
||||||
|
"scope": "resource"
|
||||||
|
},
|
||||||
"javascript.preferences.renameShorthandProperties": {
|
"javascript.preferences.renameShorthandProperties": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": true,
|
"default": true,
|
||||||
|
|
|
@ -70,6 +70,11 @@
|
||||||
"typescript.preferences.importModuleSpecifier.auto": "Automatically select import path style. Prefers using a relative import if `baseUrl` is configured and the relative path has fewer segments than the non-relative import.",
|
"typescript.preferences.importModuleSpecifier.auto": "Automatically select import path style. Prefers using a relative import if `baseUrl` is configured and the relative path has fewer segments than the non-relative import.",
|
||||||
"typescript.preferences.importModuleSpecifier.relative": "Relative to the file location.",
|
"typescript.preferences.importModuleSpecifier.relative": "Relative to the file location.",
|
||||||
"typescript.preferences.importModuleSpecifier.nonRelative": "Based on the `baseUrl` configured in your `jsconfig.json` / `tsconfig.json`.",
|
"typescript.preferences.importModuleSpecifier.nonRelative": "Based on the `baseUrl` configured in your `jsconfig.json` / `tsconfig.json`.",
|
||||||
|
"typescript.preferences.importModuleSpecifierEnding": "Preferred path ending for auto imports.",
|
||||||
|
"typescript.preferences.importModuleSpecifierEnding.auto": "Use project settings to select a default.",
|
||||||
|
"typescript.preferences.importModuleSpecifierEnding.minimal": "Shorten `./component/index.js` to `./component`.",
|
||||||
|
"typescript.preferences.importModuleSpecifierEnding.index": "Shorten `./component/index.js` to `./component/index`",
|
||||||
|
"typescript.preferences.importModuleSpecifierEnding.js": "Do not shorten path endings; include the `.js` extension.",
|
||||||
"typescript.updateImportsOnFileMove.enabled": "Enable/disable automatic updating of import paths when you rename or move a file in VS Code. Requires using TypeScript 2.9 or newer in the workspace.",
|
"typescript.updateImportsOnFileMove.enabled": "Enable/disable automatic updating of import paths when you rename or move a file in VS Code. Requires using TypeScript 2.9 or newer in the workspace.",
|
||||||
"typescript.updateImportsOnFileMove.enabled.prompt": "Prompt on each rename.",
|
"typescript.updateImportsOnFileMove.enabled.prompt": "Prompt on each rename.",
|
||||||
"typescript.updateImportsOnFileMove.enabled.always": "Always update paths automatically.",
|
"typescript.updateImportsOnFileMove.enabled.always": "Always update paths automatically.",
|
||||||
|
|
|
@ -179,13 +179,18 @@ export default class FileConfigurationManager extends Disposable {
|
||||||
isTypeScriptDocument(document) ? 'typescript.preferences' : 'javascript.preferences',
|
isTypeScriptDocument(document) ? 'typescript.preferences' : 'javascript.preferences',
|
||||||
document.uri);
|
document.uri);
|
||||||
|
|
||||||
return {
|
// `importModuleSpecifierEnding` added to `Proto.UserPreferences` in TypeScript 3.9:
|
||||||
|
// remove intersection type after upgrading TypeScript.
|
||||||
|
const preferences: Proto.UserPreferences & { importModuleSpecifierEnding?: string } = {
|
||||||
quotePreference: this.getQuoteStylePreference(config),
|
quotePreference: this.getQuoteStylePreference(config),
|
||||||
importModuleSpecifierPreference: getImportModuleSpecifierPreference(config),
|
importModuleSpecifierPreference: getImportModuleSpecifierPreference(config),
|
||||||
|
importModuleSpecifierEnding: getImportModuleSpecifierEndingPreference(config),
|
||||||
allowTextChangesInNewFiles: document.uri.scheme === fileSchemes.file,
|
allowTextChangesInNewFiles: document.uri.scheme === fileSchemes.file,
|
||||||
providePrefixAndSuffixTextForRename: config.get<boolean>('renameShorthandProperties', true),
|
providePrefixAndSuffixTextForRename: config.get<boolean>('renameShorthandProperties', true),
|
||||||
allowRenameOfImportPath: true,
|
allowRenameOfImportPath: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
return preferences;
|
||||||
}
|
}
|
||||||
|
|
||||||
private getQuoteStylePreference(config: vscode.WorkspaceConfiguration) {
|
private getQuoteStylePreference(config: vscode.WorkspaceConfiguration) {
|
||||||
|
@ -204,3 +209,12 @@ function getImportModuleSpecifierPreference(config: vscode.WorkspaceConfiguratio
|
||||||
default: return undefined;
|
default: return undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getImportModuleSpecifierEndingPreference(config: vscode.WorkspaceConfiguration) {
|
||||||
|
switch (config.get<string>('importModuleSpecifierEnding')) {
|
||||||
|
case 'minimal': return 'minimal';
|
||||||
|
case 'index': return 'index';
|
||||||
|
case 'js': return 'js';
|
||||||
|
default: return 'auto';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue