From 7716e6b63eff75e94117bf6452f2546ea30ead2b Mon Sep 17 00:00:00 2001 From: spebl Date: Tue, 18 Mar 2025 13:35:25 -0700 Subject: [PATCH] Turn Copilot Hover on by default. React immediately to settings changes for copilot hover. Change flight check to new flag to indicate a disabled state. --- Extension/package.json | 3 ++- .../Providers/CopilotHoverProvider.ts | 12 ++++-------- Extension/src/LanguageServer/client.ts | 13 +++---------- 3 files changed, 9 insertions(+), 19 deletions(-) diff --git a/Extension/package.json b/Extension/package.json index 6b5804c55..eb337d44a 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -3339,7 +3339,8 @@ "type": "string", "enum": [ "default", - "disabled" + "disabled", + "enabled" ], "default": "default", "markdownDescription": "%c_cpp.configuration.copilotHover.markdownDescription%", diff --git a/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts b/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts index 06f22e5ac..8a0038b37 100644 --- a/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts +++ b/Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts @@ -33,7 +33,10 @@ export class CopilotHoverProvider implements vscode.HoverProvider { await this.client.ready; const settings: CppSettings = new CppSettings(vscode.workspace.getWorkspaceFolder(document.uri)?.uri); - if (settings.hover === "disabled") { + if (settings.hover === "disabled" || + settings.copilotHover === "disabled" || + (settings.copilotHover === "default" && await telemetry.isFlightEnabled("CppCopilotHoverDisabled"))) { + // Either disabled by the user or by the flight. return undefined; } @@ -46,13 +49,6 @@ export class CopilotHoverProvider implements vscode.HoverProvider { } } - if (new CppSettings().copilotHover === "default") { - // Check flight to make sure the feature is enabled. - if (!await telemetry.isFlightEnabled("CppCopilotHover")) { - return undefined; - } - } - const newHover = this.isNewHover(document, position); if (newHover) { this.reset(); diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 8a7ae0cec..024e862b6 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1332,17 +1332,9 @@ export class DefaultClient implements Client { initializedClientCount = 0; this.inlayHintsProvider = new InlayHintsProvider(); this.hoverProvider = new HoverProvider(this); + this.copilotHoverProvider = new CopilotHoverProvider(this); - const settings: CppSettings = new CppSettings(); - this.currentCopilotHoverEnabled = new PersistentWorkspaceState("cpp.copilotHover", settings.copilotHover); - if (settings.copilotHover !== "disabled") { - this.copilotHoverProvider = new CopilotHoverProvider(this); - this.disposables.push(vscode.languages.registerHoverProvider(util.documentSelector, instrument(this.copilotHoverProvider))); - } - - if (settings.copilotHover !== this.currentCopilotHoverEnabled.Value) { - this.currentCopilotHoverEnabled.Value = settings.copilotHover; - } + this.disposables.push(vscode.languages.registerHoverProvider(util.documentSelector, instrument(this.copilotHoverProvider))); this.disposables.push(vscode.languages.registerHoverProvider(util.documentSelector, instrument(this.hoverProvider))); this.disposables.push(vscode.languages.registerInlayHintsProvider(util.documentSelector, instrument(this.inlayHintsProvider))); this.disposables.push(vscode.languages.registerRenameProvider(util.documentSelector, instrument(new RenameProvider(this)))); @@ -1362,6 +1354,7 @@ export class DefaultClient implements Client { this.codeFoldingProvider = new FoldingRangeProvider(this); this.codeFoldingProviderDisposable = vscode.languages.registerFoldingRangeProvider(util.documentSelector, instrument(this.codeFoldingProvider)); + const settings: CppSettings = new CppSettings(); if (settings.isEnhancedColorizationEnabled && semanticTokensLegend) { this.semanticTokensProvider = instrument(new SemanticTokensProvider()); this.semanticTokensProviderDisposable = vscode.languages.registerDocumentSemanticTokensProvider(util.documentSelector, this.semanticTokensProvider, semanticTokensLegend);