diff --git a/extensions/typescript/package.json b/extensions/typescript/package.json index a44dc019b4b..b76a143d7b4 100644 --- a/extensions/typescript/package.json +++ b/extensions/typescript/package.json @@ -406,6 +406,12 @@ "description": "%typescript.quickSuggestionsForPaths%", "scope": "resource" }, + "typescript.autoImportSuggestions.enabled": { + "type": "boolean", + "default": true, + "description": "%typescript.autoImportSuggestions.enabled%", + "scope": "resource" + }, "typescript.locale": { "type": [ "string", diff --git a/extensions/typescript/package.nls.json b/extensions/typescript/package.nls.json index 02f0323b4f2..34285208428 100644 --- a/extensions/typescript/package.nls.json +++ b/extensions/typescript/package.nls.json @@ -44,5 +44,6 @@ "typescript.problemMatchers.tscWatch.label": "TypeScript problems (watch mode)", "typescript.quickSuggestionsForPaths": "Enable/disable quick suggestions when typing out an import path.", "typescript.locale": "Sets the locale used to report TypeScript errors. Requires TypeScript >= 2.6.0. Default of 'null' uses VS Code's locale for TypeScript errors.", - "javascript.implicitProjectConfig.experimentalDecorators": "Enable/disable 'experimentalDecorators' for JavaScript files that are not part of a project. Existing jsconfig.json or tsconfig.json files override this setting. Requires TypeScript >=2.3.1" + "javascript.implicitProjectConfig.experimentalDecorators": "Enable/disable 'experimentalDecorators' for JavaScript files that are not part of a project. Existing jsconfig.json or tsconfig.json files override this setting. Requires TypeScript >=2.3.1.", + "typescript.autoImportSuggestions.enabled": "Enable/disable auto import suggestions. Requires TypeScript >=2.6.1" } \ No newline at end of file diff --git a/extensions/typescript/src/features/completionItemProvider.ts b/extensions/typescript/src/features/completionItemProvider.ts index 7996c341e52..4d5b85e88f4 100644 --- a/extensions/typescript/src/features/completionItemProvider.ts +++ b/extensions/typescript/src/features/completionItemProvider.ts @@ -127,12 +127,15 @@ interface Configuration { useCodeSnippetsOnMethodSuggest: boolean; nameSuggestions: boolean; quickSuggestionsForPaths: boolean; + autoImportSuggestions: boolean; } namespace Configuration { export const useCodeSnippetsOnMethodSuggest = 'useCodeSnippetsOnMethodSuggest'; export const nameSuggestions = 'nameSuggestions'; export const quickSuggestionsForPaths = 'quickSuggestionsForPaths'; + export const autoImportSuggestions = 'autoImportSuggestions.enabled'; + } export default class TypeScriptCompletionItemProvider implements CompletionItemProvider { @@ -242,6 +245,9 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP if (element.kind === PConst.Kind.warning && !config.nameSuggestions) { continue; } + if (!config.autoImportSuggestions && element.hasAction) { + continue; + } const item = new MyCompletionItem(position, document, element, enableDotCompletions, config.useCodeSnippetsOnMethodSuggest); completionItems.push(item); } @@ -361,6 +367,7 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP return { useCodeSnippetsOnMethodSuggest: typeScriptConfig.get(Configuration.useCodeSnippetsOnMethodSuggest, false), quickSuggestionsForPaths: typeScriptConfig.get(Configuration.quickSuggestionsForPaths, true), + autoImportSuggestions: typeScriptConfig.get(Configuration.autoImportSuggestions, true), nameSuggestions: workspace.getConfiguration('javascript', resource).get(Configuration.nameSuggestions, true) }; }