@@ -10,50 +10,51 @@ import { RoslynLanguageServer } from './roslynLanguageServer';
1010import { UriConverter } from './uriConverter' ;
1111import { 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}
0 commit comments