Skip to content

Commit 14f6abd

Browse files
authored
Merge pull request #7605 from genlu/fixInterface
update to new registerRelatedFilesProvider API
2 parents 771d166 + dd4e612 commit 14f6abd

File tree

2 files changed

+54
-52
lines changed

2 files changed

+54
-52
lines changed

src/lsptoolshost/copilot.ts

Lines changed: 52 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ import { languageServerOptions } from '../shared/options';
1414
interface CopilotRelatedFilesProviderRegistration {
1515
registerRelatedFilesProvider(
1616
providerId: { extensionId: string; languageId: string },
17-
callback: (uri: vscode.Uri) => Promise<{ entries: vscode.Uri[]; traits?: { name: string; value: string }[] }>
18-
): void;
17+
callback: (
18+
uri: vscode.Uri,
19+
cancellationToken?: vscode.CancellationToken
20+
) => Promise<{ entries: vscode.Uri[]; traits?: { name: string; value: string }[] }>
21+
): vscode.Disposable;
1922
}
2023

21-
export async function registerCopilotExtensionAsync(
22-
languageServer: RoslynLanguageServer,
23-
channel: vscode.OutputChannel
24-
) {
24+
export function registerCopilotExtension(languageServer: RoslynLanguageServer, channel: vscode.OutputChannel) {
2525
const isTraceLogLevel =
2626
languageServerOptions.logLevel &&
2727
(languageServerOptions.logLevel === 'Trace' || languageServerOptions.logLevel === 'Debug');
@@ -35,58 +35,60 @@ export async function registerCopilotExtensionAsync(
3535
}
3636
return;
3737
}
38-
await ext.activate();
39-
const relatedAPI = ext.exports as CopilotRelatedFilesProviderRegistration | undefined;
40-
if (!relatedAPI) {
41-
if (isTraceLogLevel) {
42-
channel.appendLine(
43-
'Incompatible GitHub Copilot extension installed. Skip registeration of C# related files provider.'
44-
);
38+
ext.activate().then(() => {
39+
const relatedAPI = ext.exports as CopilotRelatedFilesProviderRegistration | undefined;
40+
if (!relatedAPI) {
41+
if (isTraceLogLevel) {
42+
channel.appendLine(
43+
'Incompatible GitHub Copilot extension installed. Skip registeration of C# related files provider.'
44+
);
45+
}
46+
return;
4547
}
46-
return;
47-
}
4848

49-
if (isTraceLogLevel) {
50-
channel.appendLine('registeration of C# related files provider for GitHub Copilot extension succeeded.');
51-
}
49+
if (isTraceLogLevel) {
50+
channel.appendLine('registration of C# related files provider for GitHub Copilot extension succeeded.');
51+
}
5252

53-
const id = {
54-
extensionId: CSharpExtensionId,
55-
languageId: 'csharp',
56-
};
53+
const id = {
54+
extensionId: CSharpExtensionId,
55+
languageId: 'csharp',
56+
};
5757

58-
relatedAPI.registerRelatedFilesProvider(id, async (uri) => {
59-
const buildResult = (reports: CopilotRelatedDocumentsReport[], builder?: vscode.Uri[]) => {
60-
if (reports) {
61-
for (const report of reports) {
62-
if (report._vs_file_paths) {
63-
for (const filePath of report._vs_file_paths) {
64-
builder?.push(vscode.Uri.file(filePath));
58+
relatedAPI.registerRelatedFilesProvider(id, async (uri, token) => {
59+
const buildResult = (reports: CopilotRelatedDocumentsReport[], builder?: vscode.Uri[]) => {
60+
if (reports) {
61+
for (const report of reports) {
62+
if (report._vs_file_paths) {
63+
for (const filePath of report._vs_file_paths) {
64+
builder?.push(vscode.Uri.file(filePath));
65+
}
6566
}
6667
}
6768
}
68-
}
69-
};
70-
const relatedFiles: vscode.Uri[] = [];
71-
const uriString = UriConverter.serialize(uri);
72-
const textDocument = TextDocumentIdentifier.create(uriString);
73-
try {
74-
await languageServer.sendRequestWithProgress(
75-
CopilotRelatedDocumentsRequest.type,
76-
{
77-
_vs_textDocument: textDocument,
78-
position: {
79-
line: 0,
80-
character: 0,
69+
};
70+
const relatedFiles: vscode.Uri[] = [];
71+
const uriString = UriConverter.serialize(uri);
72+
const textDocument = TextDocumentIdentifier.create(uriString);
73+
try {
74+
await languageServer.sendRequestWithProgress(
75+
CopilotRelatedDocumentsRequest.type,
76+
{
77+
_vs_textDocument: textDocument,
78+
position: {
79+
line: 0,
80+
character: 0,
81+
},
8182
},
82-
},
83-
async (r) => buildResult(r, relatedFiles)
84-
);
85-
} catch (e) {
86-
if (e instanceof Error) {
87-
channel.appendLine(e.message);
83+
async (r) => buildResult(r, relatedFiles),
84+
token
85+
);
86+
} catch (e) {
87+
if (e instanceof Error) {
88+
channel.appendLine(e.message);
89+
}
8890
}
89-
}
90-
return { entries: relatedFiles };
91+
return { entries: relatedFiles };
92+
});
9193
});
9294
}

src/lsptoolshost/roslynLanguageServer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ import { registerLanguageStatusItems } from './languageStatusBar';
6767
import { ProjectContextService } from './services/projectContextService';
6868
import { ProvideDynamicFileResponse } from '../razor/src/dynamicFile/provideDynamicFileResponse';
6969
import { ProvideDynamicFileParams } from '../razor/src/dynamicFile/provideDynamicFileParams';
70-
import { registerCopilotExtensionAsync } from './copilot';
70+
import { registerCopilotExtension } from './copilot';
7171
import {
7272
ActionOption,
7373
CommandOption,
@@ -1052,7 +1052,7 @@ export async function activateRoslynLanguageServer(
10521052
);
10531053

10541054
registerLanguageStatusItems(context, languageServer, languageServerEvents);
1055-
await registerCopilotExtensionAsync(languageServer, _channel);
1055+
registerCopilotExtension(languageServer, _channel);
10561056

10571057
// Register any commands that need to be handled by the extension.
10581058
registerCommands(context, languageServer, hostExecutableResolver, _channel);

0 commit comments

Comments
 (0)