mirror of
https://github.com/Microsoft/vscode
synced 2024-09-18 01:58:27 +00:00
Add option to exclude unique names from suggestion lists in JS files
Fixes #26595 **Problem** TS includes all unique names in a file in the completion list for JavaScript files. This is often desirable, but may result in unexpected completions **Fix** Add a new option `javascript.nameSuggestions` to filter these suggestions out.
This commit is contained in:
parent
17004573e3
commit
4514ddd180
|
@ -307,6 +307,11 @@
|
|||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "%javascript.implicitProjectConfig.checkJs%"
|
||||
},
|
||||
"javascript.nameSuggestions": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "%javascript.nameSuggestions%"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -461,4 +466,4 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -35,5 +35,6 @@
|
|||
"typescript.selectTypeScriptVersion.title": "Select TypeScript Version",
|
||||
"jsDocCompletion.enabled": "Enable/disable auto JSDoc comments",
|
||||
"javascript.implicitProjectConfig.checkJs": "Enable/disable semantic checking of JavaScript files. Existing jsconfig.json or tsconfig.json files override this setting. Requires TypeScript >=2.3.1.",
|
||||
"typescript.check.npmIsInstalled": "Check if NPM is installed for automatic typings acquisition"
|
||||
"typescript.check.npmIsInstalled": "Check if NPM is installed for automatic typings acquisition",
|
||||
"javascript.nameSuggestions": "Enable/disable including unique names from the file in JavaScript suggestion lists."
|
||||
}
|
||||
|
|
|
@ -128,11 +128,13 @@ class MyCompletionItem extends CompletionItem {
|
|||
}
|
||||
|
||||
interface Configuration {
|
||||
useCodeSnippetsOnMethodSuggest?: boolean;
|
||||
useCodeSnippetsOnMethodSuggest: boolean;
|
||||
nameSuggestions: boolean;
|
||||
}
|
||||
|
||||
namespace Configuration {
|
||||
export const useCodeSnippetsOnMethodSuggest = 'useCodeSnippetsOnMethodSuggest';
|
||||
export const nameSuggestions = 'nameSuggestions';
|
||||
}
|
||||
|
||||
export default class TypeScriptCompletionItemProvider implements CompletionItemProvider {
|
||||
|
@ -143,13 +145,19 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP
|
|||
private client: ITypescriptServiceClient,
|
||||
private typingsStatus: TypingsStatus
|
||||
) {
|
||||
this.config = { useCodeSnippetsOnMethodSuggest: false };
|
||||
this.config = {
|
||||
useCodeSnippetsOnMethodSuggest: false,
|
||||
nameSuggestions: true
|
||||
};
|
||||
}
|
||||
|
||||
public updateConfiguration(): void {
|
||||
// Use shared setting for js and ts
|
||||
const typeScriptConfig = workspace.getConfiguration('typescript');
|
||||
this.config.useCodeSnippetsOnMethodSuggest = typeScriptConfig.get(Configuration.useCodeSnippetsOnMethodSuggest, false);
|
||||
|
||||
const jsConfig = workspace.getConfiguration('javascript');
|
||||
this.config.nameSuggestions = jsConfig.get(Configuration.nameSuggestions, true);
|
||||
}
|
||||
|
||||
public provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken): Promise<CompletionItem[]> {
|
||||
|
@ -208,6 +216,9 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP
|
|||
}
|
||||
|
||||
for (const element of body) {
|
||||
if (element.kind === PConst.Kind.warning && !this.config.nameSuggestions) {
|
||||
continue;
|
||||
}
|
||||
const item = new MyCompletionItem(position, document, element, enableDotCompletions, !this.config.useCodeSnippetsOnMethodSuggest);
|
||||
completionItems.push(item);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue