@@ -15,6 +15,10 @@ import { RazorMapSpansParams } from './mapping/razorMapSpansParams';
1515import { RazorMapSpansResponse } from './mapping/razorMapSpansResponse' ;
1616import { UriConverter } from '../../lsptoolshost/utils/uriConverter' ;
1717import { RazorDocumentManager } from './document/razorDocumentManager' ;
18+ import { RazorMapTextChangesParams } from './mapping/RazorMapTextChangesParams' ;
19+ import { RazorMapTextChangesResponse } from './mapping/RazorMapTextChangesResponse' ;
20+ import { RazorMapToDocumentEditsParams } from './mapping/RazorMapToDocumentEditsParams' ;
21+ import { RazorMapToDocumentEditsResponse } from './mapping/RazorMapToDocumentEditsResponse' ;
1822
1923export class RazorLanguageServiceClient {
2024 constructor (
@@ -100,6 +104,31 @@ export class RazorLanguageServiceClient {
100104 ) ;
101105 }
102106
107+ async mapTextChanges ( params : RazorMapTextChangesParams ) : Promise < RazorMapTextChangesResponse > {
108+ const csharpUri = UriConverter . deserialize ( params . csharpDocument . uri ) ;
109+ const document = await this . documentManager . getDocumentForCSharpUri ( csharpUri ) ;
110+ if ( ! document ) {
111+ return RazorMapTextChangesResponse . empty ;
112+ }
113+
114+ const request = new RazorMapToDocumentEditsParams ( LanguageKind . CSharp , document . uri , params . textChanges ) ;
115+ const response = await this . serverClient . sendRequest < RazorMapToDocumentEditsResponse > (
116+ 'razor/mapToDocumentEdits' ,
117+ request
118+ ) ;
119+
120+ if ( ! response ) {
121+ return RazorMapTextChangesResponse . empty ;
122+ }
123+
124+ return new RazorMapTextChangesResponse (
125+ {
126+ uri : UriConverter . serialize ( document . uri ) ,
127+ } ,
128+ response . textChanges
129+ ) ;
130+ }
131+
103132 private async ensureStarted ( ) {
104133 // If the server is already started this will instantly return.
105134 await this . serverClient . start ( ) ;
0 commit comments