@@ -24,51 +24,94 @@ import { DocumentColorHandler } from '../../razor/src/documentColor/documentColo
24
24
import { razorOptions } from '../../shared/options' ;
25
25
import { ColorPresentationHandler } from '../../razor/src/colorPresentation/colorPresentationHandler' ;
26
26
import { ColorPresentation } from 'vscode-html-languageservice' ;
27
+ import { DynamicFileInfoHandler } from '../../razor/src/dynamicFile/dynamicFileInfoHandler' ;
28
+ import { ProvideDynamicFileParams } from '../../razor/src/dynamicFile/provideDynamicFileParams' ;
29
+ import { ProvideDynamicFileResponse } from '../../razor/src/dynamicFile/provideDynamicFileResponse' ;
30
+ import { RazorMapSpansParams } from '../../razor/src/mapping/razorMapSpansParams' ;
31
+ import { RazorMapSpansResponse } from '../../razor/src/mapping/razorMapSpansResponse' ;
32
+ import { MappingHandler } from '../../razor/src/mapping/mappingHandler' ;
33
+ import { RazorMapTextChangesParams } from '../../razor/src/mapping/razorMapTextChangesParams' ;
34
+ import { RazorMapTextChangesResponse } from '../../razor/src/mapping/razorMapTextChangesResponse' ;
27
35
28
36
export function registerRazorEndpoints (
29
37
context : vscode . ExtensionContext ,
30
- languageServer : RoslynLanguageServer ,
38
+ roslynLanguageServer : RoslynLanguageServer ,
31
39
razorLogger : RazorLogger ,
32
40
platformInfo : PlatformInformation
33
41
) {
34
42
const logNotificationType = new NotificationType < LogMessageParams > ( 'razor/log' ) ;
35
- languageServer . registerOnNotificationWithParams ( logNotificationType , ( params ) =>
43
+ roslynLanguageServer . registerOnNotificationWithParams ( logNotificationType , ( params ) =>
36
44
razorLogger . log ( params . message , params . type )
37
45
) ;
38
46
39
- if ( ! razorOptions . cohostingEnabled ) {
40
- return ;
47
+ if ( razorOptions . cohostingEnabled ) {
48
+ registerCohostingEndpoints ( ) ;
49
+ } else {
50
+ registerNonCohostingEndpoints ( ) ;
41
51
}
42
52
43
- const documentManager = new HtmlDocumentManager ( platformInfo , razorLogger ) ;
44
- context . subscriptions . push ( documentManager . register ( ) ) ;
53
+ return ;
45
54
46
- registerRequestHandler < HtmlUpdateParameters , void > ( 'razor/updateHtml' , async ( params ) => {
47
- const uri = UriConverter . deserialize ( params . textDocument . uri ) ;
48
- await documentManager . updateDocumentText ( uri , params . text ) ;
49
- } ) ;
55
+ //
56
+ // Local Functions
57
+ //
58
+ function registerCohostingEndpoints ( ) {
59
+ const documentManager = new HtmlDocumentManager ( platformInfo , razorLogger ) ;
60
+ context . subscriptions . push ( documentManager . register ( ) ) ;
50
61
51
- registerRequestHandler < DocumentColorParams , ColorInformation [ ] > ( DocumentColorRequest . method , async ( params ) => {
52
- const uri = UriConverter . deserialize ( params . textDocument . uri ) ;
53
- const document = await documentManager . getDocument ( uri ) ;
54
-
55
- return await DocumentColorHandler . doDocumentColorRequest ( document . uri ) ;
56
- } ) ;
62
+ registerRequestHandler < HtmlUpdateParameters , void > ( 'razor/updateHtml' , async ( params ) => {
63
+ const uri = UriConverter . deserialize ( params . textDocument . uri ) ;
64
+ await documentManager . updateDocumentText ( uri , params . text ) ;
65
+ } ) ;
57
66
58
- registerRequestHandler < ColorPresentationParams , ColorPresentation [ ] > (
59
- ColorPresentationRequest . method ,
60
- async ( params ) => {
67
+ registerRequestHandler < DocumentColorParams , ColorInformation [ ] > ( DocumentColorRequest . method , async ( params ) => {
61
68
const uri = UriConverter . deserialize ( params . textDocument . uri ) ;
62
69
const document = await documentManager . getDocument ( uri ) ;
63
70
64
- return await ColorPresentationHandler . doColorPresentationRequest ( document . uri , params ) ;
65
- }
66
- ) ;
71
+ return await DocumentColorHandler . doDocumentColorRequest ( document . uri ) ;
72
+ } ) ;
73
+
74
+ registerRequestHandler < ColorPresentationParams , ColorPresentation [ ] > (
75
+ ColorPresentationRequest . method ,
76
+ async ( params ) => {
77
+ const uri = UriConverter . deserialize ( params . textDocument . uri ) ;
78
+ const document = await documentManager . getDocument ( uri ) ;
79
+
80
+ return await ColorPresentationHandler . doColorPresentationRequest ( document . uri , params ) ;
81
+ }
82
+ ) ;
83
+ }
84
+
85
+ function registerNonCohostingEndpoints ( ) {
86
+ registerRequestHandler < ProvideDynamicFileParams , ProvideDynamicFileResponse > (
87
+ 'razor/provideDynamicFileInfo' ,
88
+ async ( params ) =>
89
+ vscode . commands . executeCommand ( DynamicFileInfoHandler . provideDynamicFileInfoCommand , params )
90
+ ) ;
91
+
92
+ registerRequestHandler < ProvideDynamicFileParams , ProvideDynamicFileResponse > (
93
+ 'razor/removeDynamicFileInfo' ,
94
+ async ( params ) =>
95
+ vscode . commands . executeCommand ( DynamicFileInfoHandler . provideDynamicFileInfoCommand , params )
96
+ ) ;
97
+ registerRequestHandler < RazorMapSpansParams , RazorMapSpansResponse > ( 'razor/mapSpans' , async ( params ) => {
98
+ return await vscode . commands . executeCommand < RazorMapSpansResponse > ( MappingHandler . MapSpansCommand , params ) ;
99
+ } ) ;
100
+ registerRequestHandler < RazorMapTextChangesParams , RazorMapTextChangesResponse > (
101
+ 'razor/mapTextChanges' ,
102
+ async ( params ) => {
103
+ return await vscode . commands . executeCommand < RazorMapTextChangesResponse > (
104
+ MappingHandler . MapChangesCommand ,
105
+ params
106
+ ) ;
107
+ }
108
+ ) ;
109
+ }
67
110
68
111
// Helper method that registers a request handler, and logs errors to the Razor logger.
69
112
function registerRequestHandler < Params , Result > ( method : string , invocation : ( params : Params ) => Promise < Result > ) {
70
113
const requestType = new RequestType < Params , Result , Error > ( method ) ;
71
- languageServer . registerOnRequest ( requestType , async ( params ) => {
114
+ roslynLanguageServer . registerOnRequest ( requestType , async ( params ) => {
72
115
try {
73
116
return await invocation ( params ) ;
74
117
} catch ( error ) {
0 commit comments