From 7a1d5016f8b598b831acdd0a0da8b0b23f9e30bf Mon Sep 17 00:00:00 2001 From: Gabriela Araujo Britto Date: Mon, 5 May 2025 13:57:09 -0700 Subject: [PATCH 1/3] add maximum hover length --- extensions/typescript-language-features/package.json | 12 ++++++++++++ .../typescript-language-features/package.nls.json | 1 + .../src/languageFeatures/fileConfigurationManager.ts | 12 ++++++++++++ 3 files changed, 25 insertions(+) diff --git a/extensions/typescript-language-features/package.json b/extensions/typescript-language-features/package.json index 5f39dc5f984ef..b3b4db809764c 100644 --- a/extensions/typescript-language-features/package.json +++ b/extensions/typescript-language-features/package.json @@ -480,6 +480,18 @@ "tags": [ "experimental" ] + }, + "typescript.maximumHoverLength": { + "type": "number", + "default": 500, + "description": "%configuration.maximumHoverLength%", + "scope": "window" + }, + "javascript.maximumHoverLength": { + "type": "number", + "default": 500, + "description": "%configuration.maximumHoverLength%", + "scope": "window" } } }, diff --git a/extensions/typescript-language-features/package.nls.json b/extensions/typescript-language-features/package.nls.json index 44fa54efbcda9..c38e2a2c8c8dc 100644 --- a/extensions/typescript-language-features/package.nls.json +++ b/extensions/typescript-language-features/package.nls.json @@ -231,6 +231,7 @@ "configuration.tsserver.nodePath": "Run TS Server on a custom Node installation. This can be a path to a Node executable, or 'node' if you want VS Code to detect a Node installation.", "configuration.updateImportsOnPaste": "Automatically update imports when pasting code. Requires TypeScript 5.6+.", "configuration.expandableHover": "Enable expanding/contracting the hover to reveal more/less information from the TS server. Requires TypeScript 5.9+.", + "configuration.maximumHoverLength": "The maximum number of characters in a hover. If the hover is longer than this, it will be truncated. Requires TypeScript 5.9+.", "walkthroughs.nodejsWelcome.title": "Get started with JavaScript and Node.js", "walkthroughs.nodejsWelcome.description": "Make the most of Visual Studio Code's first-class JavaScript experience.", "walkthroughs.nodejsWelcome.downloadNode.forMacOrWindows.title": "Install Node.js", diff --git a/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts b/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts index 9b0c10a48b7f4..f0d98b8f40496 100644 --- a/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts +++ b/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts @@ -208,6 +208,8 @@ export default class FileConfigurationManager extends Disposable { includeCompletionsForModuleExports: config.get('suggest.autoImports'), ...getInlayHintsPreferences(config), ...this.getOrganizeImportsPreferences(preferencesConfig), + // @ts-expect-error until TS 5.9 + maximumHoverLength: this.getMaximumHoverLength(config), }; return preferences; @@ -257,6 +259,16 @@ export default class FileConfigurationManager extends Disposable { } : {}), }; } + + + private getMaximumHoverLength(configuration: vscode.WorkspaceConfiguration): number { + const defaultMaxLength = 500; + const maximumHoverLength = configuration.get('maximumHoverLength', defaultMaxLength); + if (!Number.isSafeInteger(maximumHoverLength) || maximumHoverLength <= 0) { + return defaultMaxLength; + } + return maximumHoverLength; + } } function withDefaultAsUndefined(value: T, def: O): Exclude | undefined { From 56e2f3c5c4778d2d1522a37ed8f5481b07bbbd5f Mon Sep 17 00:00:00 2001 From: Gabriela Araujo Britto Date: Wed, 7 May 2025 11:31:47 -0700 Subject: [PATCH 2/3] refactor config path --- extensions/typescript-language-features/package.json | 12 +++--------- .../typescript-language-features/package.nls.json | 2 +- .../src/languageFeatures/fileConfigurationManager.ts | 6 +++--- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/extensions/typescript-language-features/package.json b/extensions/typescript-language-features/package.json index b3b4db809764c..c0d14ee761a74 100644 --- a/extensions/typescript-language-features/package.json +++ b/extensions/typescript-language-features/package.json @@ -481,17 +481,11 @@ "experimental" ] }, - "typescript.maximumHoverLength": { + "js/ts.hover.maximumLength": { "type": "number", "default": 500, - "description": "%configuration.maximumHoverLength%", - "scope": "window" - }, - "javascript.maximumHoverLength": { - "type": "number", - "default": 500, - "description": "%configuration.maximumHoverLength%", - "scope": "window" + "description": "%configuration.hover.maximumLength%", + "scope": "resource" } } }, diff --git a/extensions/typescript-language-features/package.nls.json b/extensions/typescript-language-features/package.nls.json index c38e2a2c8c8dc..b6bfe27ee4c3f 100644 --- a/extensions/typescript-language-features/package.nls.json +++ b/extensions/typescript-language-features/package.nls.json @@ -231,7 +231,7 @@ "configuration.tsserver.nodePath": "Run TS Server on a custom Node installation. This can be a path to a Node executable, or 'node' if you want VS Code to detect a Node installation.", "configuration.updateImportsOnPaste": "Automatically update imports when pasting code. Requires TypeScript 5.6+.", "configuration.expandableHover": "Enable expanding/contracting the hover to reveal more/less information from the TS server. Requires TypeScript 5.9+.", - "configuration.maximumHoverLength": "The maximum number of characters in a hover. If the hover is longer than this, it will be truncated. Requires TypeScript 5.9+.", + "configuration.hover.maximumLength": "The maximum number of characters in a hover. If the hover is longer than this, it will be truncated. Requires TypeScript 5.9+.", "walkthroughs.nodejsWelcome.title": "Get started with JavaScript and Node.js", "walkthroughs.nodejsWelcome.description": "Make the most of Visual Studio Code's first-class JavaScript experience.", "walkthroughs.nodejsWelcome.downloadNode.forMacOrWindows.title": "Install Node.js", diff --git a/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts b/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts index f0d98b8f40496..bf70dcb19e5af 100644 --- a/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts +++ b/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts @@ -209,7 +209,7 @@ export default class FileConfigurationManager extends Disposable { ...getInlayHintsPreferences(config), ...this.getOrganizeImportsPreferences(preferencesConfig), // @ts-expect-error until TS 5.9 - maximumHoverLength: this.getMaximumHoverLength(config), + maximumHoverLength: this.getMaximumHoverLength(document), }; return preferences; @@ -261,9 +261,9 @@ export default class FileConfigurationManager extends Disposable { } - private getMaximumHoverLength(configuration: vscode.WorkspaceConfiguration): number { + private getMaximumHoverLength(document: vscode.TextDocument): number { const defaultMaxLength = 500; - const maximumHoverLength = configuration.get('maximumHoverLength', defaultMaxLength); + const maximumHoverLength = vscode.workspace.getConfiguration('js/ts', document).get('maximumHoverLength', defaultMaxLength); if (!Number.isSafeInteger(maximumHoverLength) || maximumHoverLength <= 0) { return defaultMaxLength; } From be966956c7e2d2596e03bf666c566f1e724ec140 Mon Sep 17 00:00:00 2001 From: Gabriela Araujo Britto Date: Wed, 7 May 2025 11:34:40 -0700 Subject: [PATCH 3/3] fix setting name --- .../src/languageFeatures/fileConfigurationManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts b/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts index bf70dcb19e5af..b0787adacbf9b 100644 --- a/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts +++ b/extensions/typescript-language-features/src/languageFeatures/fileConfigurationManager.ts @@ -263,7 +263,7 @@ export default class FileConfigurationManager extends Disposable { private getMaximumHoverLength(document: vscode.TextDocument): number { const defaultMaxLength = 500; - const maximumHoverLength = vscode.workspace.getConfiguration('js/ts', document).get('maximumHoverLength', defaultMaxLength); + const maximumHoverLength = vscode.workspace.getConfiguration('js/ts', document).get('hover.maximumLength', defaultMaxLength); if (!Number.isSafeInteger(maximumHoverLength) || maximumHoverLength <= 0) { return defaultMaxLength; }