Skip to content

Commit e5e176b

Browse files
authored
Add check for copilot access before providing copilot hover (#13238)
* Add check for copilot access before providing copilot hover * Don't check flight until we can validate copilot is enabled
1 parent 64c00a9 commit e5e176b

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

Extension/src/LanguageServer/Providers/CopilotHoverProvider.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import * as vscode from 'vscode';
66
import { Position, ResponseError } from 'vscode-languageclient';
77
import * as nls from 'vscode-nls';
8+
import { modelSelector } from '../../constants';
9+
import * as telemetry from '../../telemetry';
810
import { DefaultClient, GetCopilotHoverInfoParams, GetCopilotHoverInfoRequest, GetCopilotHoverInfoResult } from '../client';
911
import { RequestCancelled, ServerCancelled } from '../protocolFilter';
1012
import { CppSettings } from '../settings';
@@ -35,6 +37,22 @@ export class CopilotHoverProvider implements vscode.HoverProvider {
3537
return undefined;
3638
}
3739

40+
// Ensure the user has access to Copilot.
41+
const vscodelm = (vscode as any).lm;
42+
if (vscodelm) {
43+
const [model] = await vscodelm.selectChatModels(modelSelector);
44+
if (!model) {
45+
return undefined;
46+
}
47+
}
48+
49+
if (settings.copilotHover === "default") {
50+
// Check flight to make sure the feature is enabled.
51+
if (!await telemetry.isFlightEnabled("CppCopilotHover")) {
52+
return undefined;
53+
}
54+
}
55+
3856
const newHover = this.isNewHover(document, position);
3957
if (newHover) {
4058
this.reset();

Extension/src/LanguageServer/client.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1316,8 +1316,7 @@ export class DefaultClient implements Client {
13161316

13171317
const settings: CppSettings = new CppSettings();
13181318
this.currentCopilotHoverEnabled = new PersistentWorkspaceState<string>("cpp.copilotHover", settings.copilotHover);
1319-
if (settings.copilotHover === "enabled" ||
1320-
(settings.copilotHover === "default" && await telemetry.isFlightEnabled("CppCopilotHover"))) {
1319+
if (settings.copilotHover !== "disabled") {
13211320
this.copilotHoverProvider = new CopilotHoverProvider(this);
13221321
this.disposables.push(vscode.languages.registerHoverProvider(util.documentSelector, this.copilotHoverProvider));
13231322
}

Extension/src/LanguageServer/extension.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1469,10 +1469,10 @@ async function onCopilotHover(): Promise<void> {
14691469
vscode.LanguageModelChatMessage
14701470
.User(requestInfo.content + locale)];
14711471

1472-
const [model] = await vscodelm.selectChatModels(modelSelector);
1473-
14741472
let chatResponse: vscode.LanguageModelChatResponse | undefined;
14751473
try {
1474+
const [model] = await vscodelm.selectChatModels(modelSelector);
1475+
14761476
chatResponse = await model.sendRequest(
14771477
messages,
14781478
{},

0 commit comments

Comments
 (0)