@@ -58,6 +58,8 @@ public void Initialize()
58
58
this . AddRequestHandler ( ShowOnlineHelpRequest . Type , this . HandleShowOnlineHelpRequest ) ;
59
59
60
60
this . AddRequestHandler ( FindModuleRequest . Type , this . HandleFindModuleRequest ) ;
61
+ this . AddRequestHandler ( GetInstalledModuleRequest . Type , this . HandleGetInstalledModuleRequest ) ;
62
+ this . AddRequestHandler ( ExpandAliasRequest . Type , this . HandleExpandAliasRequest ) ;
61
63
62
64
this . AddRequestHandler ( DebugAdapterMessages . EvaluateRequest . Type , this . HandleEvaluateRequest ) ;
63
65
}
@@ -155,7 +157,7 @@ await editorSession.PowerShellContext.ExecuteCommand<object>(
155
157
}
156
158
157
159
private async Task HandleFindModuleRequest (
158
- string helpParams ,
160
+ string param ,
159
161
EditorSession editorSession ,
160
162
RequestContext < object , object > requestContext )
161
163
{
@@ -178,6 +180,71 @@ private async Task HandleFindModuleRequest(
178
180
await requestContext . SendResult ( new PSModuleResponse { ModuleList = moduleList } ) ;
179
181
}
180
182
183
+ private async Task HandleGetInstalledModuleRequest (
184
+ string param ,
185
+ EditorSession editorSession ,
186
+ RequestContext < object , object > requestContext )
187
+ {
188
+ var psCommand = new PSCommand ( ) ;
189
+ psCommand . AddScript ( "Get-InstalledModule | Select Name, Description" ) ;
190
+
191
+ var modules = await editorSession . PowerShellContext . ExecuteCommand < PSObject > (
192
+ psCommand ) ;
193
+
194
+ var moduleList = new List < PSModuleMessage > ( ) ;
195
+
196
+ if ( modules != null )
197
+ {
198
+ foreach ( dynamic m in modules )
199
+ {
200
+ moduleList . Add ( new PSModuleMessage { Name = m . Name , Description = m . Description } ) ;
201
+ }
202
+ }
203
+
204
+ await requestContext . SendResult ( new PSModuleResponse { ModuleList = moduleList } ) ;
205
+ }
206
+
207
+
208
+ private async Task HandleExpandAliasRequest (
209
+ string content ,
210
+ EditorSession editorSession ,
211
+ RequestContext < object , object > requestContext )
212
+ {
213
+ var psCommand = new PSCommand ( ) ;
214
+ var script = @"
215
+ function Expand-Alias {
216
+
217
+ param($targetScript)
218
+
219
+ [ref]$errors=$null
220
+
221
+ $tokens = [System.Management.Automation.PsParser]::Tokenize($targetScript, $errors).Where({$_.type -eq 'command'}) |
222
+ Sort Start -Descending
223
+
224
+ foreach ($token in $tokens) {
225
+ $definition=(Get-Command ('`'+$token.Content) -CommandType Alias -ErrorAction SilentlyContinue).Definition
226
+
227
+ if($definition) {
228
+ $lhs=$targetScript.Substring(0, $token.Start)
229
+ $rhs=$targetScript.Substring($token.Start + $token.Length)
230
+
231
+ $targetScript=$lhs + $definition + $rhs
232
+ }
233
+ }
234
+
235
+ $targetScript
236
+ }
237
+ M
238
+ Expand-Alias @'" + "\r \n " + content + "\r \n '@" ;
239
+
240
+ psCommand . AddScript ( script ) ;
241
+
242
+ var result = await editorSession . PowerShellContext . ExecuteCommand < PSObject > (
243
+ psCommand ) ;
244
+
245
+ await requestContext . SendResult ( result . First ( ) . ToString ( ) ) ;
246
+ }
247
+
181
248
protected Task HandleExitNotification (
182
249
object exitParams ,
183
250
EditorSession editorSession ,
0 commit comments