Skip to content

Commit b70b82c

Browse files
committed
Address review comments
1 parent 4369bdb commit b70b82c

File tree

3 files changed

+32
-40
lines changed

3 files changed

+32
-40
lines changed

src/lsptoolshost/copilot.ts

Lines changed: 29 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -10,50 +10,51 @@ import { RoslynLanguageServer } from './roslynLanguageServer';
1010
import { UriConverter } from './uriConverter';
1111
import { TextDocumentIdentifier } from 'vscode-languageserver-protocol';
1212

13-
export async function registerCopilotExtension(languageServer: RoslynLanguageServer, channel: vscode.OutputChannel) {
13+
interface CopilotRelatedFilesProviderRegistration {
14+
registerRelatedFilesProvider(
15+
providerId: { extensionId: string; languageId: string },
16+
callback: (uri: vscode.Uri) => Promise<{ entries: vscode.Uri[]; traits?: { name: string; value: string }[] }>
17+
): void;
18+
}
19+
20+
export async function registerCopilotExtensionAsync(
21+
languageServer: RoslynLanguageServer,
22+
tracingChannel: vscode.OutputChannel
23+
) {
1424
const ext = vscode.extensions.getExtension('github.copilot');
1525
if (!ext) {
16-
channel.appendLine('GitHub Copilot extension not installed. Skipping call to `registerRelatedFilesProvider`');
26+
tracingChannel.appendLine(
27+
'GitHub Copilot extension not installed. Skip registeration of C# related files provider.'
28+
);
1729
return;
1830
}
1931
await ext.activate();
20-
const relatedAPI = ext.exports as
21-
| {
22-
registerRelatedFilesProvider(
23-
providerId: { extensionId: string; languageId: string },
24-
callback: (
25-
uri: vscode.Uri
26-
) => Promise<{ entries: vscode.Uri[]; traits?: { name: string; value: string }[] }>
27-
): void;
28-
}
29-
| undefined;
32+
const relatedAPI = ext.exports as CopilotRelatedFilesProviderRegistration | undefined;
3033
if (!relatedAPI) {
31-
channel.appendLine(
32-
'Incompatible GitHub Copilot extension installed. Skipping call to `registerRelatedFilesProvider`'
34+
tracingChannel.appendLine(
35+
'Incompatible GitHub Copilot extension installed. Skip registeration of C# related files provider.'
3336
);
3437
return;
3538
}
36-
channel.appendLine('registerRelatedFilesProvider succeeded.');
39+
tracingChannel.appendLine('registeration of C# related files provider for GitHub Copilot extension succeeded.');
3740

3841
const id = {
3942
extensionId: CSharpExtensionId,
4043
languageId: 'csharp',
4144
};
4245

4346
relatedAPI.registerRelatedFilesProvider(id, async (uri) => {
44-
const writeOutput = (output: CopilotRelatedDocumentsReport[], builder: vscode.Uri[] | null) => {
45-
if (output) {
46-
for (const report of output) {
47+
const buildResult = (reports: CopilotRelatedDocumentsReport[], builder?: vscode.Uri[]) => {
48+
if (reports) {
49+
for (const report of reports) {
4750
if (report._vs_file_paths) {
4851
for (const filePath of report._vs_file_paths) {
49-
channel.appendLine('found related file: ' + filePath);
5052
builder?.push(vscode.Uri.file(filePath));
5153
}
5254
}
5355
}
5456
}
5557
};
56-
5758
const relatedFiles: vscode.Uri[] = [];
5859
const uriString = UriConverter.serialize(uri);
5960
const textDocument = TextDocumentIdentifier.create(uriString);
@@ -66,24 +67,16 @@ export async function registerCopilotExtension(languageServer: RoslynLanguageSer
6667
character: 0,
6768
},
6869
},
69-
async (p) => {
70-
writeOutput(p, relatedFiles);
71-
}
70+
async (r) => buildResult(r, relatedFiles)
7271
);
7372

74-
await responsePromise.then(
75-
(result) => {
76-
writeOutput(result, null);
77-
return;
78-
},
79-
(err) => {
80-
channel.appendLine(err);
81-
return;
73+
try {
74+
await responsePromise;
75+
} catch (e) {
76+
if (e instanceof Error) {
77+
tracingChannel.appendLine(e.message);
8278
}
83-
);
84-
85-
return {
86-
entries: relatedFiles,
87-
};
79+
}
80+
return { entries: relatedFiles };
8881
});
8982
}

src/lsptoolshost/roslynLanguageServer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ import { registerLanguageStatusItems } from './languageStatusBar';
6868
import { ProjectContextService } from './services/projectContextService';
6969
import { ProvideDynamicFileResponse } from '../razor/src/dynamicFile/provideDynamicFileResponse';
7070
import { ProvideDynamicFileParams } from '../razor/src/dynamicFile/provideDynamicFileParams';
71-
import { registerCopilotExtension } from './copilot';
71+
import { registerCopilotExtensionAsync } from './copilot';
7272

7373
let _channel: vscode.OutputChannel;
7474
let _traceChannel: vscode.OutputChannel;
@@ -1037,7 +1037,7 @@ export async function activateRoslynLanguageServer(
10371037
);
10381038

10391039
registerLanguageStatusItems(context, languageServer, languageServerEvents);
1040-
await registerCopilotExtension(languageServer, _channel);
1040+
await registerCopilotExtensionAsync(languageServer, _traceChannel);
10411041

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

src/lsptoolshost/roslynProtocol.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,8 +227,7 @@ export interface CopilotRelatedDocumentsParams extends lsp.WorkDoneProgressParam
227227
}
228228

229229
export interface CopilotRelatedDocumentsReport {
230-
_vs_resultId: string | null;
231-
_vs_file_paths: string[] | null;
230+
_vs_file_paths?: string[];
232231
}
233232

234233
export namespace WorkspaceDebugConfigurationRequest {

0 commit comments

Comments
 (0)