@@ -10,50 +10,51 @@ import { RoslynLanguageServer } from './roslynLanguageServer';
10
10
import { UriConverter } from './uriConverter' ;
11
11
import { TextDocumentIdentifier } from 'vscode-languageserver-protocol' ;
12
12
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
+ ) {
14
24
const ext = vscode . extensions . getExtension ( 'github.copilot' ) ;
15
25
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
+ ) ;
17
29
return ;
18
30
}
19
31
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 ;
30
33
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. '
33
36
) ;
34
37
return ;
35
38
}
36
- channel . appendLine ( 'registerRelatedFilesProvider succeeded.' ) ;
39
+ tracingChannel . appendLine ( 'registeration of C# related files provider for GitHub Copilot extension succeeded.' ) ;
37
40
38
41
const id = {
39
42
extensionId : CSharpExtensionId ,
40
43
languageId : 'csharp' ,
41
44
} ;
42
45
43
46
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 ) {
47
50
if ( report . _vs_file_paths ) {
48
51
for ( const filePath of report . _vs_file_paths ) {
49
- channel . appendLine ( 'found related file: ' + filePath ) ;
50
52
builder ?. push ( vscode . Uri . file ( filePath ) ) ;
51
53
}
52
54
}
53
55
}
54
56
}
55
57
} ;
56
-
57
58
const relatedFiles : vscode . Uri [ ] = [ ] ;
58
59
const uriString = UriConverter . serialize ( uri ) ;
59
60
const textDocument = TextDocumentIdentifier . create ( uriString ) ;
@@ -66,24 +67,16 @@ export async function registerCopilotExtension(languageServer: RoslynLanguageSer
66
67
character : 0 ,
67
68
} ,
68
69
} ,
69
- async ( p ) => {
70
- writeOutput ( p , relatedFiles ) ;
71
- }
70
+ async ( r ) => buildResult ( r , relatedFiles )
72
71
) ;
73
72
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 ) ;
82
78
}
83
- ) ;
84
-
85
- return {
86
- entries : relatedFiles ,
87
- } ;
79
+ }
80
+ return { entries : relatedFiles } ;
88
81
} ) ;
89
82
}
0 commit comments