@@ -133,6 +133,8 @@ public void Start()
133
133
this . HandleDocumentRangeFormattingRequest ) ;
134
134
135
135
this . messageHandlers . SetRequestHandler ( ShowOnlineHelpRequest . Type , this . HandleShowOnlineHelpRequest ) ;
136
+ this . messageHandlers . SetRequestHandler ( ShowHelpRequest . Type , this . HandleShowHelpRequest ) ;
137
+
136
138
this . messageHandlers . SetRequestHandler ( ExpandAliasRequest . Type , this . HandleExpandAliasRequest ) ;
137
139
138
140
this . messageHandlers . SetRequestHandler ( FindModuleRequest . Type , this . HandleFindModuleRequest ) ;
@@ -242,22 +244,49 @@ await requestContext.SendResult(
242
244
} ) ;
243
245
}
244
246
245
- protected async Task HandleShowOnlineHelpRequest (
247
+ protected async Task HandleShowHelpRequest (
246
248
string helpParams ,
247
249
RequestContext < object > requestContext )
248
250
{
249
- if ( helpParams == null ) { helpParams = "get-help" ; }
251
+ const string CheckHelpScript = @"
252
+ [CmdletBinding()]
253
+ param (
254
+ [String]$CommandName
255
+ )
256
+ try {
257
+ $null = Microsoft.PowerShell.Core\Get-Command $CommandName -ErrorAction Stop
258
+ } catch [System.Management.Automation.CommandNotFoundException] {
259
+ $PSCmdlet.ThrowTerminatingError($PSItem)
260
+ }
261
+ try {
262
+ $null = Microsoft.PowerShell.Core\Get-Help $CommandName -Online
263
+ } catch [System.Management.Automation.PSInvalidOperationException] {
264
+ Microsoft.PowerShell.Core\Get-Help $CommandName -Full
265
+ }" ;
250
266
251
- var psCommand = new PSCommand ( ) ;
252
- psCommand . AddCommand ( "Get-Help" ) ;
253
- psCommand . AddArgument ( helpParams ) ;
254
- psCommand . AddParameter ( "Online" ) ;
267
+ if ( string . IsNullOrEmpty ( helpParams ) ) { helpParams = "Get-Help" ; }
255
268
256
- await editorSession . PowerShellContext . ExecuteCommand < object > ( psCommand ) ;
269
+ PSCommand checkHelpPSCommand = new PSCommand ( )
270
+ . AddScript ( CheckHelpScript , useLocalScope : true )
271
+ . AddArgument ( helpParams ) ;
257
272
273
+ await editorSession . PowerShellContext . ExecuteCommand < PSObject > ( checkHelpPSCommand , sendOutputToHost : true ) ;
258
274
await requestContext . SendResult ( null ) ;
259
275
}
260
276
277
+ protected async Task HandleShowOnlineHelpRequest (
278
+ string helpParams ,
279
+ RequestContext < object > requestContext
280
+ )
281
+ {
282
+ PSCommand commandDeprecated = new PSCommand ( )
283
+ . AddCommand ( "Microsoft.PowerShell.Utility\\ Write-Verbose" )
284
+ . AddParameter ( "Message" , "'powerShell/showOnlineHelp' has been deprecated. Use 'powerShell/showHelp' instead." ) ;
285
+
286
+ await editorSession . PowerShellContext . ExecuteCommand < PSObject > ( commandDeprecated , sendOutputToHost : true ) ;
287
+ await this . HandleShowHelpRequest ( helpParams , requestContext ) ;
288
+ }
289
+
261
290
private async Task HandleSetPSSARulesRequest (
262
291
object param ,
263
292
RequestContext < object > requestContext )
0 commit comments