lzybkr / TabExpansionPlusPlus

A V3 PowerShell module to improve tab expansion and Intellisense
BSD 2-Clause "Simplified" License
196 stars 33 forks source link

Bug in Get-CommandTreeCompletion with dynamic completion of option #26

Open powercode opened 10 years ago

powercode commented 10 years ago

I'm trying to write a completer for p4 edit

nct edit $msgTable.p4_edit {
                nct '-c' $msgTable.p4_edit_c {
                    nct {
                        param($wordToComplete, $commandAst)

                        p4 -ztag changes -s pending -u $env:DomainName\$env:UserName | 
                            Select-String '^\.\.\. change (\d+)' | 
                                ForEach-Object {$_.matches.Groups[1].Value} | 
                                    where {$_ -like "$wordToComplete*"} 
                    }
                }                                
            }

but the completer never seems to get called.

-c is parsed as a System.Management.Automation.Language.CommandParameterAst and the check in Get-CommandTreeCompletion

if (!($commandElements[$i] -is [System.Management.Automation.Language.StringConstantExpressionAst]))

skips that commandElement.

I'm a bit uncertain what the correct fix is? Should I change the condition toaccept CommandParameterAst or StringConstantExpressionAst?

lzybkr commented 10 years ago

Yeah, this is a weak spot in TabExpansion++ - I'll look into it.

powercode commented 10 years ago

There are a couple of use cases I've run in to. parameters with values of the form --parameter=value or --parameter value or --parameter:value

AndrewGaspar commented 8 years ago

Also running into this - has any progress been made here?

lzybkr commented 8 years ago

I'm not sure, I recall @powercode fixing some things he ran into, but if you're having problems, it would seem like he hadn't fixed it, or at least not submitted a PR.

I'm happy to give pointers if you can contribute a fix.

razaraz commented 8 years ago

I found the source of the issue, and have created a pull request:

79