From 746caa340a352ba8e03ea2666f5ecda9bd2bed57 Mon Sep 17 00:00:00 2001 From: Gabriela Araujo Britto Date: Fri, 7 Feb 2025 12:58:24 -0800 Subject: [PATCH 1/3] Revert "[typescript-language-features] Expandable hover (#228255)" This reverts commit 0f9abf3c3567e53df749299dafcc988831a3b4e7. --- .../typescript-language-features/package.json | 30 +++++-------- .../package.nls.json | 3 +- .../src/languageFeatures/hover.ts | 44 +++---------------- .../src/tsServer/api.ts | 1 - .../tsconfig.json | 1 - 5 files changed, 18 insertions(+), 61 deletions(-) diff --git a/extensions/typescript-language-features/package.json b/extensions/typescript-language-features/package.json index 5a1f52a9b25..f8863a010fd 100644 --- a/extensions/typescript-language-features/package.json +++ b/extensions/typescript-language-features/package.json @@ -11,8 +11,7 @@ "workspaceTrust", "multiDocumentHighlightProvider", "codeActionAI", - "codeActionRanges", - "editorHoverVerbosityLevel" + "codeActionRanges" ], "capabilities": { "virtualWorkspaces": { @@ -824,16 +823,16 @@ ], "enumDescriptions": [ "%typescript.locale.auto%", - "Deutsch", - "español", + "Deutsch", + "español", "English", - "français", - "italiano", - "日本語", - "한국어", - "русский", - "中文(简体)", - "中文(繁體)" + "français", + "italiano", + "日本語", + "한국어", + "русский", + "中文(简体)", + "中文(繁體)" ], "markdownDescription": "%typescript.locale%", "scope": "window" @@ -1515,15 +1514,6 @@ "type": "boolean", "default": true, "markdownDescription": "%configuration.updateImportsOnPaste%" - }, - "typescript.experimental.expandableHover": { - "type": "boolean", - "default": false, - "description": "%configuration.expandableHover%", - "scope": "window", - "tags": [ - "experimental" - ] } } }, diff --git a/extensions/typescript-language-features/package.nls.json b/extensions/typescript-language-features/package.nls.json index 6a7dc26a24d..f88b9c72969 100644 --- a/extensions/typescript-language-features/package.nls.json +++ b/extensions/typescript-language-features/package.nls.json @@ -224,8 +224,7 @@ "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.", "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": "Enable updating imports when pasting code. Requires TypeScript 5.7+.\n\nBy default this shows a option to update imports after pasting. You can use the `#editor.pasteAs.preferences#` setting to update imports automatically when pasting: `\"editor.pasteAs.preferences\": [ \"text.updateImports.jsts\" ]`.", - "configuration.expandableHover": "Enable expanding/contracting the hover to reveal more/less information from the TS server.", + "configuration.updateImportsOnPaste": "Automatically update imports when pasting code. Requires TypeScript 5.6+.", "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/hover.ts b/extensions/typescript-language-features/src/languageFeatures/hover.ts index edb08d029fa..3012658036f 100644 --- a/extensions/typescript-language-features/src/languageFeatures/hover.ts +++ b/extensions/typescript-language-features/src/languageFeatures/hover.ts @@ -11,11 +11,10 @@ import { DocumentSelector } from '../configuration/documentSelector'; import { documentationToMarkdown } from './util/textRendering'; import * as typeConverters from '../typeConverters'; import FileConfigurationManager from './fileConfigurationManager'; -import { API } from '../tsServer/api'; + class TypeScriptHoverProvider implements vscode.HoverProvider { - private lastHoverAndLevel: [vscode.Hover, number] | undefined; public constructor( private readonly client: ITypeScriptServiceClient, @@ -25,24 +24,17 @@ class TypeScriptHoverProvider implements vscode.HoverProvider { public async provideHover( document: vscode.TextDocument, position: vscode.Position, - token: vscode.CancellationToken, - context?: vscode.HoverContext, - ): Promise { + token: vscode.CancellationToken + ): Promise { const filepath = this.client.toOpenTsFilePath(document); if (!filepath) { return undefined; } - const enableExpandableHover = vscode.workspace.getConfiguration('typescript').get('experimental.expandableHover'); - let verbosityLevel: number | undefined; - if (enableExpandableHover && this.client.apiVersion.gte(API.v570)) { - verbosityLevel = Math.max(0, this.getPreviousLevel(context?.previousHover) + (context?.verbosityDelta ?? 0)); - } - const args = { ...typeConverters.Position.toFileLocationRequestArgs(filepath, position), verbosityLevel }; - const response = await this.client.interruptGetErr(async () => { await this.fileConfigurationManager.ensureConfigurationForDocument(document, token); + const args = typeConverters.Position.toFileLocationRequestArgs(filepath, position); return this.client.execute('quickinfo', args, token); }); @@ -50,24 +42,9 @@ class TypeScriptHoverProvider implements vscode.HoverProvider { return undefined; } - const contents = this.getContents(document.uri, response.body, response._serverType); - const range = typeConverters.Range.fromTextSpan(response.body); - const hover = verbosityLevel !== undefined ? - new vscode.VerboseHover( - contents, - range, - // @ts-expect-error - /*canIncreaseVerbosity*/ response.body.canIncreaseVerbosityLevel, - /*canDecreaseVerbosity*/ verbosityLevel !== 0 - ) : new vscode.Hover( - contents, - range - ); - - if (verbosityLevel !== undefined) { - this.lastHoverAndLevel = [hover, verbosityLevel]; - } - return hover; + return new vscode.Hover( + this.getContents(document.uri, response.body, response._serverType), + typeConverters.Range.fromTextSpan(response.body)); } private getContents( @@ -95,13 +72,6 @@ class TypeScriptHoverProvider implements vscode.HoverProvider { parts.push(md); return parts; } - - private getPreviousLevel(previousHover: vscode.Hover | undefined): number { - if (previousHover && this.lastHoverAndLevel && this.lastHoverAndLevel[0] === previousHover) { - return this.lastHoverAndLevel[1]; - } - return 0; - } } export function register( diff --git a/extensions/typescript-language-features/src/tsServer/api.ts b/extensions/typescript-language-features/src/tsServer/api.ts index 4ddc29944f0..2925403eebd 100644 --- a/extensions/typescript-language-features/src/tsServer/api.ts +++ b/extensions/typescript-language-features/src/tsServer/api.ts @@ -29,7 +29,6 @@ export class API { public static readonly v544 = API.fromSimpleString('5.4.4'); public static readonly v540 = API.fromSimpleString('5.4.0'); public static readonly v560 = API.fromSimpleString('5.6.0'); - public static readonly v570 = API.fromSimpleString('5.7.0'); public static fromVersionString(versionString: string): API { let version = semver.valid(versionString); diff --git a/extensions/typescript-language-features/tsconfig.json b/extensions/typescript-language-features/tsconfig.json index 8ac3a8735b1..1f94b9f1ce2 100644 --- a/extensions/typescript-language-features/tsconfig.json +++ b/extensions/typescript-language-features/tsconfig.json @@ -16,6 +16,5 @@ "../../src/vscode-dts/vscode.proposed.multiDocumentHighlightProvider.d.ts", "../../src/vscode-dts/vscode.proposed.workspaceTrust.d.ts", "../../src/vscode-dts/vscode.proposed.documentPaste.d.ts", - "../../src/vscode-dts/vscode.proposed.editorHoverVerbosityLevel.d.ts", ] } From 2db415abf05fa8fc8b22224e55862599aa4e4d66 Mon Sep 17 00:00:00 2001 From: Gabriela Araujo Britto Date: Fri, 7 Feb 2025 13:44:45 -0800 Subject: [PATCH 2/3] add back 5.7 version --- extensions/typescript-language-features/src/tsServer/api.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/extensions/typescript-language-features/src/tsServer/api.ts b/extensions/typescript-language-features/src/tsServer/api.ts index 2925403eebd..4ddc29944f0 100644 --- a/extensions/typescript-language-features/src/tsServer/api.ts +++ b/extensions/typescript-language-features/src/tsServer/api.ts @@ -29,6 +29,7 @@ export class API { public static readonly v544 = API.fromSimpleString('5.4.4'); public static readonly v540 = API.fromSimpleString('5.4.0'); public static readonly v560 = API.fromSimpleString('5.6.0'); + public static readonly v570 = API.fromSimpleString('5.7.0'); public static fromVersionString(versionString: string): API { let version = semver.valid(versionString); From 03bfa56b291372bde74f61de45f32f3ad1bf2d81 Mon Sep 17 00:00:00 2001 From: Gabriela Araujo Britto Date: Fri, 7 Feb 2025 15:11:54 -0800 Subject: [PATCH 3/3] fix indentation --- .../typescript-language-features/package.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/extensions/typescript-language-features/package.json b/extensions/typescript-language-features/package.json index f8863a010fd..322bab13b1c 100644 --- a/extensions/typescript-language-features/package.json +++ b/extensions/typescript-language-features/package.json @@ -823,16 +823,16 @@ ], "enumDescriptions": [ "%typescript.locale.auto%", - "Deutsch", - "español", + "Deutsch", + "español", "English", - "français", - "italiano", - "日本語", - "한국어", - "русский", - "中文(简体)", - "中文(繁體)" + "français", + "italiano", + "日本語", + "한국어", + "русский", + "中文(简体)", + "中文(繁體)" ], "markdownDescription": "%typescript.locale%", "scope": "window"