mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-20 00:28:52 +01:00
Add setting to disable all path based sugestions in js/ts
The new `javascript.suggest.paths` and `typescript.suggest.paths` settings replace `typescript.quickSuggestionsForPaths`. These settings should disable all path based suggestions from js/ts The old `quickSuggestionsForPath` setting is now marked deprecated and is not being migrated to these new settings as it has different semantics. It was originally designed just to disable quick suggestions for paths but it does not work properly when using TypeScript 2.9+
This commit is contained in:
@@ -397,6 +397,19 @@
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "%typescript.quickSuggestionsForPaths%",
|
||||
"scope": "resource",
|
||||
"deprecationMessage": "%typescript.quickSuggestionsForPaths.deprecationMessage%"
|
||||
},
|
||||
"javascript.suggest.paths": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "%configuration.suggest.paths%",
|
||||
"scope": "resource"
|
||||
},
|
||||
"typescript.suggest.paths": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "%configuration.suggest.paths%",
|
||||
"scope": "resource"
|
||||
},
|
||||
"typescript.autoImportSuggestions.enabled": {
|
||||
|
||||
@@ -50,6 +50,8 @@
|
||||
"typescript.problemMatchers.tsc.label": "TypeScript problems",
|
||||
"typescript.problemMatchers.tscWatch.label": "TypeScript problems (watch mode)",
|
||||
"typescript.quickSuggestionsForPaths": "Enable/disable quick suggestions when typing out an import path.",
|
||||
"typescript.quickSuggestionsForPaths.deprecationMessage": "Please use the new `javascript.suggest.paths` and `typescript.suggest.paths` settings to enable/disable path suggestions.",
|
||||
"configuration.suggest.paths": "Enable/disable suggestions for paths in import statements and require calls.",
|
||||
"typescript.locale": "Sets the locale used to report JavaScript and TypeScript errors. Requires using TypeScript 2.6.0 or newer in the workspace. Default of `null` uses VS Code's locale.",
|
||||
"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 using TypeScript 2.3.1 or newer in the workspace.",
|
||||
"configuration.suggest.autoImports": "Enable/disable auto import suggestions. Requires using TypeScript 2.6.1 or newer in the workspace.",
|
||||
|
||||
@@ -236,14 +236,14 @@ class ApplyCompletionCodeActionCommand implements Command {
|
||||
interface CompletionConfiguration {
|
||||
readonly useCodeSnippetsOnMethodSuggest: boolean;
|
||||
readonly nameSuggestions: boolean;
|
||||
readonly quickSuggestionsForPaths: boolean;
|
||||
readonly pathSuggestions: boolean;
|
||||
readonly autoImportSuggestions: boolean;
|
||||
}
|
||||
|
||||
namespace CompletionConfiguration {
|
||||
export const useCodeSnippetsOnMethodSuggest = 'useCodeSnippetsOnMethodSuggest';
|
||||
export const nameSuggestions = 'nameSuggestions';
|
||||
export const quickSuggestionsForPaths = 'quickSuggestionsForPaths';
|
||||
export const pathSuggestions = 'suggest.paths';
|
||||
export const autoImportSuggestions_deprecated = 'autoImportSuggestions.enabled';
|
||||
export const autoImportSuggestions = 'suggest.autoImports';
|
||||
|
||||
@@ -258,7 +258,7 @@ namespace CompletionConfiguration {
|
||||
|
||||
return {
|
||||
useCodeSnippetsOnMethodSuggest: typeScriptConfig.get<boolean>(CompletionConfiguration.useCodeSnippetsOnMethodSuggest, false),
|
||||
quickSuggestionsForPaths: typeScriptConfig.get<boolean>(CompletionConfiguration.quickSuggestionsForPaths, true),
|
||||
pathSuggestions: config.get<boolean>(CompletionConfiguration.pathSuggestions, true),
|
||||
autoImportSuggestions: config.get<boolean>(CompletionConfiguration.autoImportSuggestions, typeScriptConfig.get<boolean>(CompletionConfiguration.autoImportSuggestions_deprecated, true)),
|
||||
nameSuggestions: vscode.workspace.getConfiguration('javascript', resource).get(CompletionConfiguration.nameSuggestions, true)
|
||||
};
|
||||
@@ -304,7 +304,7 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider
|
||||
const line = document.lineAt(position.line);
|
||||
const completionConfiguration = CompletionConfiguration.getConfigurationForResource(this.modeId, document.uri);
|
||||
|
||||
if (!this.shouldTrigger(context, completionConfiguration, line, position)) {
|
||||
if (!this.shouldTrigger(context, line, position)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -466,7 +466,6 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider
|
||||
|
||||
private shouldTrigger(
|
||||
context: vscode.CompletionContext,
|
||||
config: CompletionConfiguration,
|
||||
line: vscode.TextLine,
|
||||
position: vscode.Position
|
||||
): boolean {
|
||||
@@ -480,10 +479,6 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider
|
||||
}
|
||||
|
||||
if (context.triggerCharacter === '/') {
|
||||
if (!config.quickSuggestionsForPaths) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// make sure we are in something that looks like an import path
|
||||
const pre = line.text.slice(0, position.character);
|
||||
if (!pre.match(/\b(from|import)\s*["'][^'"]*$/) && !pre.match(/\b(import|require)\(['"][^'"]*$/)) {
|
||||
@@ -609,8 +604,8 @@ function shouldExcludeCompletionEntry(
|
||||
) {
|
||||
return (
|
||||
(!completionConfiguration.nameSuggestions && element.kind === PConst.Kind.warning)
|
||||
|| (!completionConfiguration.quickSuggestionsForPaths &&
|
||||
(element.kind === PConst.Kind.directory || element.kind === PConst.Kind.script))
|
||||
|| (!completionConfiguration.pathSuggestions &&
|
||||
(element.kind === PConst.Kind.directory || element.kind === PConst.Kind.script || element.kind === PConst.Kind.externalModuleName))
|
||||
|| (!completionConfiguration.autoImportSuggestions && element.hasAction)
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user