@@ -104,6 +104,10 @@ public void Start()
104
104
this . messageHandlers . SetRequestHandler ( HoverRequest . Type , this . HandleHoverRequest ) ;
105
105
this . messageHandlers . SetRequestHandler ( WorkspaceSymbolRequest . Type , this . HandleWorkspaceSymbolRequest ) ;
106
106
this . messageHandlers . SetRequestHandler ( CodeActionRequest . Type , this . HandleCodeActionRequest ) ;
107
+ this . messageHandlers . SetRequestHandler ( DocumentFormattingRequest . Type , this . HandleDocumentFormattingRequest ) ;
108
+ this . messageHandlers . SetRequestHandler (
109
+ DocumentRangeFormattingRequest . Type ,
110
+ this . HandleDocumentRangeFormattingRequest ) ;
107
111
108
112
this . messageHandlers . SetRequestHandler ( ShowOnlineHelpRequest . Type , this . HandleShowOnlineHelpRequest ) ;
109
113
this . messageHandlers . SetRequestHandler ( ExpandAliasRequest . Type , this . HandleExpandAliasRequest ) ;
@@ -123,7 +127,6 @@ public void Start()
123
127
this . messageHandlers . SetRequestHandler ( GetPSSARulesRequest . Type , this . HandleGetPSSARulesRequest ) ;
124
128
this . messageHandlers . SetRequestHandler ( SetPSSARulesRequest . Type , this . HandleSetPSSARulesRequest ) ;
125
129
126
- this . messageHandlers . SetRequestHandler ( ScriptFileMarkersRequest . Type , this . HandleScriptFileMarkersRequest ) ;
127
130
this . messageHandlers . SetRequestHandler ( ScriptRegionRequest . Type , this . HandleGetFormatScriptRegionRequest ) ;
128
131
129
132
this . messageHandlers . SetRequestHandler ( GetPSHostProcessesRequest . Type , this . HandleGetPSHostProcessesRequest ) ;
@@ -200,7 +203,8 @@ await requestContext.SendResult(
200
203
SignatureHelpProvider = new SignatureHelpOptions
201
204
{
202
205
TriggerCharacters = new string [ ] { " " } // TODO: Other characters here?
203
- }
206
+ } ,
207
+ DocumentFormattingProvider = false
204
208
}
205
209
} ) ;
206
210
}
@@ -292,19 +296,6 @@ await requestContext.SendResult(new ScriptRegionRequestResult
292
296
} ) ;
293
297
}
294
298
295
- private async Task HandleScriptFileMarkersRequest (
296
- ScriptFileMarkerRequestParams requestParams ,
297
- RequestContext < ScriptFileMarkerRequestResultParams > requestContext )
298
- {
299
- var markers = await editorSession . AnalysisService . GetSemanticMarkersAsync (
300
- editorSession . Workspace . GetFile ( requestParams . fileUri ) ,
301
- AnalysisService . GetPSSASettingsHashtable ( requestParams . settings ) ) ;
302
- await requestContext . SendResult ( new ScriptFileMarkerRequestResultParams
303
- {
304
- markers = markers
305
- } ) ;
306
- }
307
-
308
299
private async Task HandleGetPSSARulesRequest (
309
300
object param ,
310
301
RequestContext < object > requestContext )
@@ -541,7 +532,7 @@ protected Task HandleDidChangeTextDocumentNotification(
541
532
542
533
changedFile . ApplyChange (
543
534
GetFileChangeDetails (
544
- textChange . Range . Value ,
535
+ textChange . Range ,
545
536
textChange . Text ) ) ;
546
537
547
538
changedFiles . Add ( changedFile ) ;
@@ -873,7 +864,7 @@ await editorSession
873
864
textDocumentPositionParams . Position . Character + 1 ) ;
874
865
875
866
List < MarkedString > symbolInfo = new List < MarkedString > ( ) ;
876
- Range ? symbolRange = null ;
867
+ Range symbolRange = null ;
877
868
878
869
if ( symbolDetails != null )
879
870
{
@@ -1155,7 +1146,45 @@ await requestContext.SendResult(
1155
1146
codeActionCommands . ToArray ( ) ) ;
1156
1147
}
1157
1148
1158
- protected Task HandleEvaluateRequest (
1149
+ protected async Task HandleDocumentFormattingRequest (
1150
+ DocumentFormattingParams formattingParams ,
1151
+ RequestContext < TextEdit [ ] > requestContext )
1152
+ {
1153
+ var result = await Format (
1154
+ formattingParams . TextDocument . Uri ,
1155
+ formattingParams . options ,
1156
+ null ) ;
1157
+
1158
+ await requestContext . SendResult ( new TextEdit [ 1 ]
1159
+ {
1160
+ new TextEdit
1161
+ {
1162
+ NewText = result . Item1 ,
1163
+ Range = result . Item2
1164
+ } ,
1165
+ } ) ;
1166
+ }
1167
+
1168
+ protected async Task HandleDocumentRangeFormattingRequest (
1169
+ DocumentRangeFormattingParams formattingParams ,
1170
+ RequestContext < TextEdit [ ] > requestContext )
1171
+ {
1172
+ var result = await Format (
1173
+ formattingParams . TextDocument . Uri ,
1174
+ formattingParams . Options ,
1175
+ formattingParams . Range ) ;
1176
+
1177
+ await requestContext . SendResult ( new TextEdit [ 1 ]
1178
+ {
1179
+ new TextEdit
1180
+ {
1181
+ NewText = result . Item1 ,
1182
+ Range = result . Item2
1183
+ } ,
1184
+ } ) ;
1185
+ }
1186
+
1187
+ protected Task HandleEvaluateRequest (
1159
1188
DebugAdapterMessages . EvaluateRequestArguments evaluateParams ,
1160
1189
RequestContext < DebugAdapterMessages . EvaluateResponseBody > requestContext )
1161
1190
{
@@ -1193,6 +1222,49 @@ protected Task HandleEvaluateRequest(
1193
1222
1194
1223
#region Event Handlers
1195
1224
1225
+ private async Task < Tuple < string , Range > > Format (
1226
+ string documentUri ,
1227
+ FormattingOptions options ,
1228
+ Range range )
1229
+ {
1230
+ var scriptFile = editorSession . Workspace . GetFile ( documentUri ) ;
1231
+ var pssaSettings = currentSettings . CodeFormatting . GetPSSASettingsHashTable (
1232
+ options . TabSize ,
1233
+ options . InsertSpaces ) ;
1234
+
1235
+ // TODO raise an error event in case format returns null;
1236
+ string formattedScript ;
1237
+ Range editRange ;
1238
+ var rangeList = range == null ? null : new int [ ] {
1239
+ range . Start . Line + 1 ,
1240
+ range . Start . Character + 1 ,
1241
+ range . End . Line + 1 ,
1242
+ range . End . Character + 1 } ;
1243
+ var extent = scriptFile . ScriptAst . Extent ;
1244
+
1245
+ // todo create an extension for converting range to script extent
1246
+ editRange = new Range
1247
+ {
1248
+ Start = new Position
1249
+ {
1250
+ Line = extent . StartLineNumber - 1 ,
1251
+ Character = extent . StartColumnNumber - 1
1252
+ } ,
1253
+ End = new Position
1254
+ {
1255
+ Line = extent . EndLineNumber - 1 ,
1256
+ Character = extent . EndColumnNumber - 1
1257
+ }
1258
+ } ;
1259
+
1260
+ formattedScript = await editorSession . AnalysisService . Format (
1261
+ scriptFile . Contents ,
1262
+ pssaSettings ,
1263
+ rangeList ) ;
1264
+ formattedScript = formattedScript ?? scriptFile . Contents ;
1265
+ return Tuple . Create ( formattedScript , editRange ) ;
1266
+ }
1267
+
1196
1268
private async void PowerShellContext_RunspaceChanged ( object sender , Session . RunspaceChangedEventArgs e )
1197
1269
{
1198
1270
await this . messageSender . SendEvent (
0 commit comments