Skip to content

Commit 96a2256

Browse files
committed
update to new registerRelatedFilesProvider API
1 parent 771d166 commit 96a2256

File tree

2 files changed

+54
-49
lines changed

2 files changed

+54
-49
lines changed

src/lsptoolshost/copilot.ts

Lines changed: 52 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +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(
24+
export function registerCopilotExtension(
2225
languageServer: RoslynLanguageServer,
2326
channel: vscode.OutputChannel
2427
) {
@@ -35,58 +38,60 @@ export async function registerCopilotExtensionAsync(
3538
}
3639
return;
3740
}
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-
);
41+
ext.activate().then(() => {
42+
const relatedAPI = ext.exports as CopilotRelatedFilesProviderRegistration | undefined;
43+
if (!relatedAPI) {
44+
if (isTraceLogLevel) {
45+
channel.appendLine(
46+
'Incompatible GitHub Copilot extension installed. Skip registeration of C# related files provider.'
47+
);
48+
}
49+
return;
4550
}
46-
return;
47-
}
4851

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

53-
const id = {
54-
extensionId: CSharpExtensionId,
55-
languageId: 'csharp',
56-
};
56+
const id = {
57+
extensionId: CSharpExtensionId,
58+
languageId: 'csharp',
59+
};
5760

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));
61+
relatedAPI.registerRelatedFilesProvider(id, async (uri, token) => {
62+
const buildResult = (reports: CopilotRelatedDocumentsReport[], builder?: vscode.Uri[]) => {
63+
if (reports) {
64+
for (const report of reports) {
65+
if (report._vs_file_paths) {
66+
for (const filePath of report._vs_file_paths) {
67+
builder?.push(vscode.Uri.file(filePath));
68+
}
6569
}
6670
}
6771
}
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,
72+
};
73+
const relatedFiles: vscode.Uri[] = [];
74+
const uriString = UriConverter.serialize(uri);
75+
const textDocument = TextDocumentIdentifier.create(uriString);
76+
try {
77+
await languageServer.sendRequestWithProgress(
78+
CopilotRelatedDocumentsRequest.type,
79+
{
80+
_vs_textDocument: textDocument,
81+
position: {
82+
line: 0,
83+
character: 0,
84+
},
8185
},
82-
},
83-
async (r) => buildResult(r, relatedFiles)
84-
);
85-
} catch (e) {
86-
if (e instanceof Error) {
87-
channel.appendLine(e.message);
86+
async (r) => buildResult(r, relatedFiles),
87+
token
88+
);
89+
} catch (e) {
90+
if (e instanceof Error) {
91+
channel.appendLine(e.message);
92+
}
8893
}
89-
}
90-
return { entries: relatedFiles };
94+
return { entries: relatedFiles };
95+
});
9196
});
9297
}

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)