Merge pull request #295055 from mjbvz/dev/mjbvz/mighty-horse

Adopt unified js/ts setting for suggest
This commit is contained in:
Matt Bierner
2026-02-12 15:27:11 -08:00
committed by GitHub
8 changed files with 178 additions and 20 deletions

View File

@@ -418,16 +418,28 @@
"markdownDescription": "%typescript.locale%",
"scope": "window"
},
"js/ts.suggestionActions.enabled": {
"type": "boolean",
"default": true,
"description": "%configuration.suggestionActions.enabled%",
"scope": "language-overridable",
"tags": [
"JavaScript",
"TypeScript"
]
},
"javascript.suggestionActions.enabled": {
"type": "boolean",
"default": true,
"description": "%javascript.suggestionActions.enabled%",
"markdownDeprecationMessage": "%configuration.suggestionActions.enabled.unifiedDeprecationMessage%",
"scope": "resource"
},
"typescript.suggestionActions.enabled": {
"type": "boolean",
"default": true,
"description": "%typescript.suggestionActions.enabled%",
"markdownDeprecationMessage": "%configuration.suggestionActions.enabled.unifiedDeprecationMessage%",
"scope": "resource"
},
"typescript.updateImportsOnFileMove.enabled": {
@@ -531,124 +543,252 @@
"title": "%configuration.suggest%",
"order": 21,
"properties": {
"js/ts.suggest.enabled": {
"type": "boolean",
"default": true,
"description": "%typescript.suggest.enabled%",
"scope": "language-overridable",
"tags": [
"JavaScript",
"TypeScript"
]
},
"javascript.suggest.enabled": {
"type": "boolean",
"default": true,
"description": "%typescript.suggest.enabled%",
"markdownDeprecationMessage": "%configuration.suggest.enabled.unifiedDeprecationMessage%",
"scope": "language-overridable"
},
"typescript.suggest.enabled": {
"type": "boolean",
"default": true,
"description": "%typescript.suggest.enabled%",
"markdownDeprecationMessage": "%configuration.suggest.enabled.unifiedDeprecationMessage%",
"scope": "language-overridable"
},
"js/ts.suggest.autoImports": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.autoImports%",
"scope": "language-overridable",
"tags": [
"JavaScript",
"TypeScript"
]
},
"javascript.suggest.autoImports": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.autoImports%",
"markdownDeprecationMessage": "%configuration.suggest.autoImports.unifiedDeprecationMessage%",
"scope": "resource"
},
"typescript.suggest.autoImports": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.autoImports%",
"markdownDeprecationMessage": "%configuration.suggest.autoImports.unifiedDeprecationMessage%",
"scope": "resource"
},
"js/ts.suggest.names": {
"type": "boolean",
"default": true,
"markdownDescription": "%configuration.suggest.names%",
"scope": "language-overridable",
"tags": [
"JavaScript"
]
},
"javascript.suggest.names": {
"type": "boolean",
"default": true,
"markdownDescription": "%configuration.suggest.names%",
"markdownDeprecationMessage": "%configuration.suggest.names.unifiedDeprecationMessage%",
"scope": "resource"
},
"js/ts.suggest.completeFunctionCalls": {
"type": "boolean",
"default": false,
"description": "%configuration.suggest.completeFunctionCalls%",
"scope": "language-overridable",
"tags": [
"JavaScript",
"TypeScript"
]
},
"javascript.suggest.completeFunctionCalls": {
"type": "boolean",
"default": false,
"description": "%configuration.suggest.completeFunctionCalls%",
"markdownDeprecationMessage": "%configuration.suggest.completeFunctionCalls.unifiedDeprecationMessage%",
"scope": "resource"
},
"typescript.suggest.completeFunctionCalls": {
"type": "boolean",
"default": false,
"description": "%configuration.suggest.completeFunctionCalls%",
"markdownDeprecationMessage": "%configuration.suggest.completeFunctionCalls.unifiedDeprecationMessage%",
"scope": "resource"
},
"js/ts.suggest.paths": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.paths%",
"scope": "language-overridable",
"tags": [
"JavaScript",
"TypeScript"
]
},
"javascript.suggest.paths": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.paths%",
"markdownDeprecationMessage": "%configuration.suggest.paths.unifiedDeprecationMessage%",
"scope": "resource"
},
"typescript.suggest.paths": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.paths%",
"markdownDeprecationMessage": "%configuration.suggest.paths.unifiedDeprecationMessage%",
"scope": "resource"
},
"js/ts.suggest.completeJSDocs": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.completeJSDocs%",
"scope": "language-overridable",
"tags": [
"JavaScript",
"TypeScript"
]
},
"javascript.suggest.completeJSDocs": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.completeJSDocs%",
"markdownDeprecationMessage": "%configuration.suggest.completeJSDocs.unifiedDeprecationMessage%",
"scope": "language-overridable"
},
"typescript.suggest.completeJSDocs": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.completeJSDocs%",
"markdownDeprecationMessage": "%configuration.suggest.completeJSDocs.unifiedDeprecationMessage%",
"scope": "language-overridable"
},
"js/ts.suggest.jsdoc.generateReturns": {
"type": "boolean",
"default": true,
"markdownDescription": "%configuration.suggest.jsdoc.generateReturns%",
"scope": "language-overridable",
"tags": [
"JavaScript",
"TypeScript"
]
},
"javascript.suggest.jsdoc.generateReturns": {
"type": "boolean",
"default": true,
"markdownDescription": "%configuration.suggest.jsdoc.generateReturns%",
"markdownDeprecationMessage": "%configuration.suggest.jsdoc.generateReturns.unifiedDeprecationMessage%",
"scope": "language-overridable"
},
"typescript.suggest.jsdoc.generateReturns": {
"type": "boolean",
"default": true,
"markdownDescription": "%configuration.suggest.jsdoc.generateReturns%",
"markdownDeprecationMessage": "%configuration.suggest.jsdoc.generateReturns.unifiedDeprecationMessage%",
"scope": "language-overridable"
},
"js/ts.suggest.includeAutomaticOptionalChainCompletions": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.includeAutomaticOptionalChainCompletions%",
"scope": "language-overridable",
"tags": [
"JavaScript",
"TypeScript"
]
},
"javascript.suggest.includeAutomaticOptionalChainCompletions": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.includeAutomaticOptionalChainCompletions%",
"markdownDeprecationMessage": "%configuration.suggest.includeAutomaticOptionalChainCompletions.unifiedDeprecationMessage%",
"scope": "resource"
},
"typescript.suggest.includeAutomaticOptionalChainCompletions": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.includeAutomaticOptionalChainCompletions%",
"markdownDeprecationMessage": "%configuration.suggest.includeAutomaticOptionalChainCompletions.unifiedDeprecationMessage%",
"scope": "resource"
},
"js/ts.suggest.includeCompletionsForImportStatements": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.includeCompletionsForImportStatements%",
"scope": "language-overridable",
"tags": [
"JavaScript",
"TypeScript"
]
},
"javascript.suggest.includeCompletionsForImportStatements": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.includeCompletionsForImportStatements%",
"markdownDeprecationMessage": "%configuration.suggest.includeCompletionsForImportStatements.unifiedDeprecationMessage%",
"scope": "resource"
},
"typescript.suggest.includeCompletionsForImportStatements": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.includeCompletionsForImportStatements%",
"markdownDeprecationMessage": "%configuration.suggest.includeCompletionsForImportStatements.unifiedDeprecationMessage%",
"scope": "resource"
},
"js/ts.suggest.classMemberSnippets.enabled": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.classMemberSnippets.enabled%",
"scope": "language-overridable",
"tags": [
"JavaScript",
"TypeScript"
]
},
"javascript.suggest.classMemberSnippets.enabled": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.classMemberSnippets.enabled%",
"markdownDeprecationMessage": "%configuration.suggest.classMemberSnippets.enabled.unifiedDeprecationMessage%",
"scope": "resource"
},
"typescript.suggest.classMemberSnippets.enabled": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.classMemberSnippets.enabled%",
"markdownDeprecationMessage": "%configuration.suggest.classMemberSnippets.enabled.unifiedDeprecationMessage%",
"scope": "resource"
},
"js/ts.suggest.objectLiteralMethodSnippets.enabled": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.objectLiteralMethodSnippets.enabled%",
"scope": "language-overridable",
"tags": [
"TypeScript"
]
},
"typescript.suggest.objectLiteralMethodSnippets.enabled": {
"type": "boolean",
"default": true,
"description": "%configuration.suggest.objectLiteralMethodSnippets.enabled%",
"markdownDeprecationMessage": "%configuration.suggest.objectLiteralMethodSnippets.enabled.unifiedDeprecationMessage%",
"scope": "resource"
}
}

View File

@@ -11,8 +11,11 @@
"configuration.inlayHints": "Inlay Hints",
"configuration.server": "TS Server",
"configuration.suggest.completeFunctionCalls": "Complete functions with their parameter signature.",
"configuration.suggest.completeFunctionCalls.unifiedDeprecationMessage": "This setting is deprecated. Use `#js/ts.suggest.completeFunctionCalls#` instead.",
"configuration.suggest.includeAutomaticOptionalChainCompletions": "Enable/disable showing completions on potentially undefined values that insert an optional chain call. Requires strict null checks to be enabled.",
"configuration.suggest.includeAutomaticOptionalChainCompletions.unifiedDeprecationMessage": "This setting is deprecated. Use `#js/ts.suggest.includeAutomaticOptionalChainCompletions#` instead.",
"configuration.suggest.includeCompletionsForImportStatements": "Enable/disable auto-import-style completions on partially-typed import statements.",
"configuration.suggest.includeCompletionsForImportStatements.unifiedDeprecationMessage": "This setting is deprecated. Use `#js/ts.suggest.includeCompletionsForImportStatements#` instead.",
"typescript.useTsgo": "Disables TypeScript and JavaScript language features to allow usage of the TypeScript Go experimental extension. Requires TypeScript Go to be installed and configured. Requires reloading extensions after changing this setting.",
"typescript.tsdk.desc": "Specifies the folder path to the tsserver and `lib*.d.ts` files under a TypeScript install to use for IntelliSense, for example: `./node_modules/typescript/lib`.\n\n- When specified as a user setting, the TypeScript version from `typescript.tsdk` automatically replaces the built-in TypeScript version.\n- When specified as a workspace setting, `typescript.tsdk` allows you to switch to use that workspace version of TypeScript for IntelliSense with the `TypeScript: Select TypeScript version` command.\n\nSee the [TypeScript documentation](https://code.visualstudio.com/docs/typescript/typescript-compiling#_using-newer-typescript-versions) for more detail about managing TypeScript versions.",
"typescript.disableAutomaticTypeAcquisition": "Disables [automatic type acquisition](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_typings-and-automatic-type-acquisition). Automatic type acquisition fetches `@types` packages from npm to improve IntelliSense for external libraries.",
@@ -66,6 +69,7 @@
"typescript.npm": "Specifies the path to the npm executable used for [Automatic Type Acquisition](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_typings-and-automatic-type-acquisition).",
"typescript.check.npmIsInstalled": "Check if npm is installed for [Automatic Type Acquisition](https://code.visualstudio.com/docs/nodejs/working-with-javascript#_typings-and-automatic-type-acquisition).",
"configuration.suggest.names": "Enable/disable including unique names from the file in JavaScript suggestions. Note that name suggestions are always disabled in JavaScript code that is semantically checked using `@ts-check` or `checkJs`.",
"configuration.suggest.names.unifiedDeprecationMessage": "This setting is deprecated. Use `#js/ts.suggest.names#` instead.",
"typescript.tsc.autoDetect": "Controls auto detection of tsc tasks.",
"typescript.tsc.autoDetect.off": "Disable this feature.",
"typescript.tsc.autoDetect.on": "Create both build and watch tasks.",
@@ -75,6 +79,7 @@
"typescript.problemMatchers.tsgo-watch.label": "TypeScript problems (watch mode)",
"typescript.problemMatchers.tscWatch.label": "TypeScript problems (watch mode)",
"configuration.suggest.paths": "Enable/disable suggestions for paths in import statements and require calls.",
"configuration.suggest.paths.unifiedDeprecationMessage": "This setting is deprecated. Use `#js/ts.suggest.paths#` instead.",
"configuration.tsserver.useSeparateSyntaxServer": "Enable/disable spawning a separate TypeScript server that can more quickly respond to syntax related operations, such as calculating folding or computing document symbols.",
"configuration.tsserver.useSyntaxServer": "Controls if TypeScript launches a dedicated server to more quickly handle syntax related operations, such as computing code folding.",
"configuration.tsserver.useSyntaxServer.always": "Use a lighter weight syntax server to handle all IntelliSense operations. This disables project-wide features including auto-imports, cross-file completions, and go to definition for symbols in other files. Only use this for very large projects where performance is critical.",
@@ -92,7 +97,9 @@
"configuration.implicitProjectConfig.strictFunctionTypes": "Enable/disable [strict function types](https://www.typescriptlang.org/tsconfig#strictFunctionTypes) in JavaScript and TypeScript files that are not part of a project. Existing `jsconfig.json` or `tsconfig.json` files override this setting.",
"configuration.implicitProjectConfig.strict": "Enable/disable [strict mode](https://www.typescriptlang.org/tsconfig#strict) in JavaScript and TypeScript files that are not part of a project. Existing `jsconfig.json` or `tsconfig.json` files override this setting.",
"configuration.suggest.jsdoc.generateReturns": "Enable/disable generating `@returns` annotations for JSDoc templates.",
"configuration.suggest.jsdoc.generateReturns.unifiedDeprecationMessage": "This setting is deprecated. Use `#js/ts.suggest.jsdoc.generateReturns#` instead.",
"configuration.suggest.autoImports": "Enable/disable auto import suggestions.",
"configuration.suggest.autoImports.unifiedDeprecationMessage": "This setting is deprecated. Use `#js/ts.suggest.autoImports#` instead.",
"configuration.preferGoToSourceDefinition": "Makes `Go to Definition` avoid type declaration files when possible by triggering `Go to Source Definition` instead. This allows `Go to Source Definition` to be triggered with the mouse gesture.",
"inlayHints.parameterNames.none": "Disable parameter name hints.",
"inlayHints.parameterNames.literals": "Enable parameter name hints only for literal arguments.",
@@ -146,6 +153,8 @@
"taskDefinition.tsconfig.description": "The tsconfig file that defines the TS build.",
"javascript.suggestionActions.enabled": "Enable/disable suggestion diagnostics for JavaScript files in the editor.",
"typescript.suggestionActions.enabled": "Enable/disable suggestion diagnostics for TypeScript files in the editor.",
"configuration.suggestionActions.enabled": "Enable/disable suggestion diagnostics for JavaScript and TypeScript files in the editor.",
"configuration.suggestionActions.enabled.unifiedDeprecationMessage": "This setting is deprecated. Use `#js/ts.suggestionActions.enabled#` instead.",
"typescript.preferences.quoteStyle": "Preferred quote style to use for Quick Fixes.",
"typescript.preferences.quoteStyle.single": "Always use single quotes: `'`",
"typescript.preferences.quoteStyle.double": "Always use double quotes: `\"`",
@@ -180,7 +189,9 @@
"typescript.updateImportsOnFileMove.enabled.never": "Never rename paths and don't prompt.",
"typescript.autoClosingTags": "Enable/disable automatic closing of JSX tags.",
"typescript.suggest.enabled": "Enable/disable autocomplete suggestions.",
"configuration.suggest.enabled.unifiedDeprecationMessage": "This setting is deprecated. Use `#js/ts.suggest.enabled#` instead.",
"configuration.suggest.completeJSDocs": "Enable/disable suggestion to complete JSDoc comments.",
"configuration.suggest.completeJSDocs.unifiedDeprecationMessage": "This setting is deprecated. Use `#js/ts.suggest.completeJSDocs#` instead.",
"configuration.tsserver.useVsCodeWatcher": "Use VS Code's file watchers instead of TypeScript's. Requires using TypeScript 5.4+ in the workspace.",
"configuration.tsserver.watchOptions": "Configure which watching strategies should be used to keep track of files and directories.",
"configuration.tsserver.watchOptions.vscode": "Use VS Code's file watchers instead of TypeScript's. Requires using TypeScript 5.4+ in the workspace.",
@@ -232,7 +243,9 @@
"typescript.findAllFileReferences": "Find File References",
"typescript.goToSourceDefinition": "Go to Source Definition",
"configuration.suggest.classMemberSnippets.enabled": "Enable/disable snippet completions for class members.",
"configuration.suggest.classMemberSnippets.enabled.unifiedDeprecationMessage": "This setting is deprecated. Use `#js/ts.suggest.classMemberSnippets.enabled#` instead.",
"configuration.suggest.objectLiteralMethodSnippets.enabled": "Enable/disable snippet completions for methods in object literals.",
"configuration.suggest.objectLiteralMethodSnippets.enabled.unifiedDeprecationMessage": "This setting is deprecated. Use `#js/ts.suggest.objectLiteralMethodSnippets.enabled#` instead.",
"configuration.tsserver.web.projectWideIntellisense.enabled": "Enable/disable project-wide IntelliSense on web. Requires that VS Code is running in a trusted context.",
"configuration.tsserver.web.projectWideIntellisense.suppressSemanticErrors": "Suppresses semantic errors on web even when project wide IntelliSense is enabled. This is always on when project wide IntelliSense is not enabled or available. See `#typescript.tsserver.web.projectWideIntellisense.enabled#`",
"configuration.tsserver.web.typeAcquisition.enabled": "Enable/disable package acquisition on the web. This enables IntelliSense for imported packages. Requires `#typescript.tsserver.web.projectWideIntellisense.enabled#`. Currently not supported for Safari.",

View File

@@ -16,6 +16,7 @@ import * as typeConverters from '../typeConverters';
import { ClientCapability, ITypeScriptServiceClient, ServerResponse } from '../typescriptService';
import TypingsStatus from '../ui/typingsStatus';
import { nulToken } from '../utils/cancellation';
import { readUnifiedConfig } from '../utils/configuration';
import FileConfigurationManager from './fileConfigurationManager';
import { applyCodeAction } from './util/codeAction';
import { conditionalRegistration, requireSomeCapability } from './util/dependentRegistration';
@@ -670,10 +671,10 @@ namespace CompletionConfiguration {
): CompletionConfiguration {
const config = vscode.workspace.getConfiguration(modeId, resource);
return {
completeFunctionCalls: config.get<boolean>(CompletionConfiguration.completeFunctionCalls, false),
pathSuggestions: config.get<boolean>(CompletionConfiguration.pathSuggestions, true),
autoImportSuggestions: config.get<boolean>(CompletionConfiguration.autoImportSuggestions, true),
nameSuggestions: config.get<boolean>(CompletionConfiguration.nameSuggestions, true),
completeFunctionCalls: readUnifiedConfig<boolean>(CompletionConfiguration.completeFunctionCalls, false, { scope: resource, fallbackSection: modeId }),
pathSuggestions: readUnifiedConfig<boolean>(CompletionConfiguration.pathSuggestions, true, { scope: resource, fallbackSection: modeId }),
autoImportSuggestions: readUnifiedConfig<boolean>(CompletionConfiguration.autoImportSuggestions, true, { scope: resource, fallbackSection: modeId }),
nameSuggestions: readUnifiedConfig<boolean>(CompletionConfiguration.nameSuggestions, true, { scope: resource, fallbackSection: modeId }),
importStatementSuggestions: config.get<boolean>(CompletionConfiguration.importStatementSuggestions, true),
};
}
@@ -703,7 +704,7 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider<
token: vscode.CancellationToken,
context: vscode.CompletionContext
): Promise<vscode.CompletionList<MyCompletionItem> | undefined> {
if (!vscode.workspace.getConfiguration(this.language.id, document).get('suggest.enabled')) {
if (!readUnifiedConfig<boolean>('suggest.enabled', true, { scope: document, fallbackSection: this.language.id })) {
return undefined;
}

View File

@@ -182,6 +182,8 @@ export default class FileConfigurationManager extends Disposable {
isTypeScriptDocument(document) ? 'typescript.preferences' : 'javascript.preferences',
document);
const fallbackSection = isTypeScriptDocument(document) ? 'typescript' : 'javascript';
const preferences: Proto.UserPreferences = {
...config.get('unstable'),
quotePreference: this.getQuoteStylePreference(preferencesConfig),
@@ -191,13 +193,13 @@ export default class FileConfigurationManager extends Disposable {
allowTextChangesInNewFiles: document.uri.scheme === fileSchemes.file,
providePrefixAndSuffixTextForRename: preferencesConfig.get<boolean>('useAliasesForRenames', true),
allowRenameOfImportPath: true,
includeAutomaticOptionalChainCompletions: config.get<boolean>('suggest.includeAutomaticOptionalChainCompletions', true),
includeAutomaticOptionalChainCompletions: readUnifiedConfig<boolean>('suggest.includeAutomaticOptionalChainCompletions', true, { scope: document, fallbackSection }),
provideRefactorNotApplicableReason: true,
generateReturnInDocTemplate: config.get<boolean>('suggest.jsdoc.generateReturns', true),
includeCompletionsForImportStatements: config.get<boolean>('suggest.includeCompletionsForImportStatements', true),
generateReturnInDocTemplate: readUnifiedConfig<boolean>('suggest.jsdoc.generateReturns', true, { scope: document, fallbackSection }),
includeCompletionsForImportStatements: readUnifiedConfig<boolean>('suggest.includeCompletionsForImportStatements', true, { scope: document, fallbackSection }),
includeCompletionsWithSnippetText: true,
includeCompletionsWithClassMemberSnippets: config.get<boolean>('suggest.classMemberSnippets.enabled', true),
includeCompletionsWithObjectLiteralMethodSnippets: config.get<boolean>('suggest.objectLiteralMethodSnippets.enabled', true),
includeCompletionsWithClassMemberSnippets: readUnifiedConfig<boolean>('suggest.classMemberSnippets.enabled', true, { scope: document, fallbackSection }),
includeCompletionsWithObjectLiteralMethodSnippets: readUnifiedConfig<boolean>('suggest.objectLiteralMethodSnippets.enabled', true, { scope: document, fallbackSection }),
autoImportFileExcludePatterns: this.getAutoImportFileExcludePatternsPreference(preferencesConfig, vscode.workspace.getWorkspaceFolder(document.uri)?.uri),
autoImportSpecifierExcludeRegexes: preferencesConfig.get<string[]>('autoImportSpecifierExcludeRegexes'),
preferTypeOnlyAutoImports: preferencesConfig.get<boolean>('preferTypeOnlyAutoImports', false),
@@ -206,8 +208,8 @@ export default class FileConfigurationManager extends Disposable {
displayPartsForJSDoc: true,
disableLineTextInReferences: true,
interactiveInlayHints: true,
includeCompletionsForModuleExports: config.get<boolean>('suggest.autoImports'),
...getInlayHintsPreferences(document, isTypeScriptDocument(document) ? 'typescript' : 'javascript'),
includeCompletionsForModuleExports: readUnifiedConfig<boolean>('suggest.autoImports', true, { scope: document, fallbackSection }),
...getInlayHintsPreferences(document, fallbackSection),
...this.getOrganizeImportsPreferences(preferencesConfig),
maximumHoverLength: this.getMaximumHoverLength(document),
};

View File

@@ -8,6 +8,7 @@ import { DocumentSelector } from '../configuration/documentSelector';
import { LanguageDescription } from '../configuration/languageDescription';
import * as typeConverters from '../typeConverters';
import { ITypeScriptServiceClient } from '../typescriptService';
import { readUnifiedConfig } from '../utils/configuration';
import FileConfigurationManager from './fileConfigurationManager';
@@ -45,7 +46,7 @@ class JsDocCompletionProvider implements vscode.CompletionItemProvider {
position: vscode.Position,
token: vscode.CancellationToken
): Promise<vscode.CompletionItem[] | undefined> {
if (!vscode.workspace.getConfiguration(this.language.id, document).get('suggest.completeJSDocs')) {
if (!readUnifiedConfig<boolean>('suggest.completeJSDocs', true, { scope: document, fallbackSection: this.language.id })) {
return undefined;
}

View File

@@ -18,6 +18,7 @@ import { ClientCapability } from './typescriptService';
import TypeScriptServiceClient from './typescriptServiceClient';
import TypingsStatus from './ui/typingsStatus';
import { Disposable } from './utils/dispose';
import { readUnifiedConfig } from './utils/configuration';
import { isWeb, isWebAndHasSharedArrayBuffers, supportsReadableByteStreams } from './utils/platform';
@@ -96,7 +97,7 @@ export default class LanguageProvider extends Disposable {
private configurationChanged(): void {
const config = vscode.workspace.getConfiguration(this.id, null);
this.updateValidate(config.get(validateSetting, true));
this.updateSuggestionDiagnostics(config.get(suggestionSetting, true));
this.updateSuggestionDiagnostics(readUnifiedConfig<boolean>(suggestionSetting, true, { scope: null, fallbackSection: this.id }));
}
public handlesUri(resource: vscode.Uri): boolean {

View File

@@ -16,7 +16,7 @@ const insertModes = Object.freeze(['insert', 'replace']);
suite.skip('TypeScript Completions', () => {
const configDefaults = Object.freeze<VsCodeConfiguration>({
[Config.autoClosingBrackets]: 'always',
[Config.typescriptCompleteFunctionCalls]: false,
[Config.completeFunctionCalls]: false,
[Config.insertMode]: 'insert',
[Config.snippetSuggestions]: 'none',
[Config.suggestSelection]: 'first',
@@ -181,7 +181,7 @@ suite.skip('TypeScript Completions', () => {
});
test('completeFunctionCalls should complete function parameters when at end of word', async () => {
await updateConfig(testDocumentUri, { [Config.typescriptCompleteFunctionCalls]: true });
await updateConfig(testDocumentUri, { [Config.completeFunctionCalls]: true });
// Complete with-in word
const editor = await createTestEditor(testDocumentUri,
@@ -199,7 +199,7 @@ suite.skip('TypeScript Completions', () => {
});
test.skip('completeFunctionCalls should complete function parameters when within word', async () => {
await updateConfig(testDocumentUri, { [Config.typescriptCompleteFunctionCalls]: true });
await updateConfig(testDocumentUri, { [Config.completeFunctionCalls]: true });
const editor = await createTestEditor(testDocumentUri,
`function abcdef(x, y, z) { }`,
@@ -216,7 +216,7 @@ suite.skip('TypeScript Completions', () => {
});
test('completeFunctionCalls should not complete function parameters at end of word if we are already in something that looks like a function call, #18131', async () => {
await updateConfig(testDocumentUri, { [Config.typescriptCompleteFunctionCalls]: true });
await updateConfig(testDocumentUri, { [Config.completeFunctionCalls]: true });
const editor = await createTestEditor(testDocumentUri,
`function abcdef(x, y, z) { }`,
@@ -233,7 +233,7 @@ suite.skip('TypeScript Completions', () => {
});
test.skip('completeFunctionCalls should not complete function parameters within word if we are already in something that looks like a function call, #18131', async () => {
await updateConfig(testDocumentUri, { [Config.typescriptCompleteFunctionCalls]: true });
await updateConfig(testDocumentUri, { [Config.completeFunctionCalls]: true });
const editor = await createTestEditor(testDocumentUri,
`function abcdef(x, y, z) { }`,

View File

@@ -119,7 +119,7 @@ export async function updateConfig(documentUri: vscode.Uri, newConfig: VsCodeCon
export const Config = Object.freeze({
autoClosingBrackets: 'editor.autoClosingBrackets',
typescriptCompleteFunctionCalls: 'typescript.suggest.completeFunctionCalls',
completeFunctionCalls: 'js/ts.suggest.completeFunctionCalls',
insertMode: 'editor.suggest.insertMode',
snippetSuggestions: 'editor.snippetSuggestions',
suggestSelection: 'editor.suggestSelection',