@@ -125,6 +125,7 @@ protected override void Initialize()
125125 this . SetRequestHandler ( SetPSSARulesRequest . Type , this . HandleSetPSSARulesRequest ) ;
126126
127127 this . SetRequestHandler ( ScriptFileMarkersRequest . Type , this . HandleScriptFileMarkersRequest ) ;
128+ this . SetRequestHandler ( ScriptRegionRequest . Type , this . HandleGetFormatScriptRegionRequest ) ;
128129
129130 this . SetRequestHandler ( GetPSHostProcessesRequest . Type , this . HandleGetPSHostProcessesRequest ) ;
130131
@@ -235,6 +236,48 @@ await RunScriptDiagnostics(
235236 await sendresult ;
236237 }
237238
239+ private async Task HandleGetFormatScriptRegionRequest (
240+ ScriptRegionRequestParams requestParams ,
241+ RequestContext < ScriptRegionRequestResult > requestContext )
242+ {
243+ var scriptFile = this . editorSession . Workspace . GetFile ( requestParams . fileUri ) ;
244+ var lineNumber = requestParams . line ;
245+ var columnNumber = requestParams . column ;
246+ ScriptRegion scriptRegion = null ;
247+
248+ switch ( requestParams . character )
249+ {
250+ case "\n " :
251+ // find the smallest statement ast that occupies
252+ // the element before \n or \r\n and return the extent.
253+ -- lineNumber ; // vscode sends the next line when pressed enter
254+ var line = scriptFile . GetLine ( lineNumber ) ;
255+ if ( ! String . IsNullOrEmpty ( line ) )
256+ {
257+ scriptRegion = this . editorSession . LanguageService . GetSmallestStatementAstRegion (
258+ scriptFile ,
259+ lineNumber ,
260+ line . Length ) ;
261+ }
262+ break ;
263+
264+ case "}" :
265+ scriptRegion = this . editorSession . LanguageService . GetSmallestStatementAstRegion (
266+ scriptFile ,
267+ lineNumber ,
268+ columnNumber ) ;
269+ break ;
270+
271+ default :
272+ break ;
273+ }
274+
275+ await requestContext . SendResult ( new ScriptRegionRequestResult
276+ {
277+ scriptRegion = scriptRegion
278+ } ) ;
279+ }
280+
238281 private async Task HandleScriptFileMarkersRequest (
239282 ScriptFileMarkerRequestParams requestParams ,
240283 RequestContext < ScriptFileMarkerRequestResultParams > requestContext )
0 commit comments