New config to turn off TypeScript autocomplete suggestions (#58011)

* New config to turn off TypeScript autocomplete suggestions

* add missing semicolon

* Exclude everything, even name suggestions, when suggestions disabled
This commit is contained in:
Dave Williams 2018-09-10 19:06:12 +01:00 committed by Matt Bierner
parent d140d23129
commit b9dbeb90d1
3 changed files with 14 additions and 2 deletions

View file

@ -529,6 +529,12 @@
"type": "boolean",
"default": true,
"description": "%typescript.autoClosingTags%"
},
"typescript.suggestions.enabled": {
"type": "boolean",
"default": true,
"description": "%typescript.suggestions.enabled%",
"scope": "resource"
}
}
},

View file

@ -65,5 +65,6 @@
"typescript.updateImportsOnFileMove.enabled.prompt": "Prompt on each rename.",
"typescript.updateImportsOnFileMove.enabled.always": "Always update paths automatically.",
"typescript.updateImportsOnFileMove.enabled.never": "Never rename paths and don't prompt.",
"typescript.autoClosingTags": "Enable/disable automatic closing of JSX tags. Requires using TypeScript 3.0 or newer in the workspace."
"typescript.autoClosingTags": "Enable/disable automatic closing of JSX tags. Requires using TypeScript 3.0 or newer in the workspace.",
"typescript.suggestions.enabled": "Enabled/disable autocomplete suggestions based on TypeScript"
}

View file

@ -237,6 +237,7 @@ interface CompletionConfiguration {
readonly nameSuggestions: boolean;
readonly quickSuggestionsForPaths: boolean;
readonly autoImportSuggestions: boolean;
readonly typeScriptSuggestions: boolean;
}
namespace CompletionConfiguration {
@ -244,6 +245,7 @@ namespace CompletionConfiguration {
export const nameSuggestions = 'nameSuggestions';
export const quickSuggestionsForPaths = 'quickSuggestionsForPaths';
export const autoImportSuggestions = 'autoImportSuggestions.enabled';
export const typeScriptSuggestions = 'suggestions.enabled';
export function getConfigurationForResource(
resource: vscode.Uri
@ -254,6 +256,7 @@ namespace CompletionConfiguration {
useCodeSnippetsOnMethodSuggest: typeScriptConfig.get<boolean>(CompletionConfiguration.useCodeSnippetsOnMethodSuggest, false),
quickSuggestionsForPaths: typeScriptConfig.get<boolean>(CompletionConfiguration.quickSuggestionsForPaths, true),
autoImportSuggestions: typeScriptConfig.get<boolean>(CompletionConfiguration.autoImportSuggestions, true),
typeScriptSuggestions: typeScriptConfig.get<boolean>(CompletionConfiguration.typeScriptSuggestions, true),
nameSuggestions: vscode.workspace.getConfiguration('javascript', resource).get(CompletionConfiguration.nameSuggestions, true)
};
}
@ -605,7 +608,9 @@ function shouldExcludeCompletionEntry(
completionConfiguration: CompletionConfiguration
) {
return (
(!completionConfiguration.nameSuggestions && element.kind === PConst.Kind.warning)
// if TypeScript suggestions turned off, exclude every suggestion
!completionConfiguration.typeScriptSuggestions
|| (!completionConfiguration.nameSuggestions && element.kind === PConst.Kind.warning)
|| (!completionConfiguration.quickSuggestionsForPaths &&
(element.kind === PConst.Kind.directory || element.kind === PConst.Kind.script))
|| (!completionConfiguration.autoImportSuggestions && element.hasAction)