New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
(#3364) Fix broken tab completion (expansion) in PowerShell v7.4+ #3387
base: develop
Are you sure you want to change the base?
Conversation
Make export of legacy `TabExpansion` function conditional on the PowerShell version.
How do you think about using |
Reverted the addition of "choco.exe" to the list of aliases, for symmetry with the legacy code.
I tried to be conservative, but, yes, it should be possible to use However, support for The only thing needed to enable it for the v7.3- code is the following: Change the function Get-AliasPattern($exe) {
$aliases = @($exe) + @(Get-Alias | Where-Object { $_.Definition -eq $exe } | Select-Object -Exp Name)
"($($aliases -join '|'))"
} to: $aliases = @($exe, "$exe\.exe") + @(Get-Alias | Where-Object { $exe, "$exe.exe" -contains $_.Definition } | Select-Object -Exp Name) If the maintainers are fine with this, I'm happy to update the PR to add |
Oops, I misunderstood the issue about |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried this PR and it works well, everything looks good short, long parameters, completion of commands and also completion of package names.
This PR lgtm. Why it's still not merged?
There are merge conflicts in
It seems pull requests towards Chocolatey repositories are often kept open for a long time. My other pull request has been there for almost one year. |
@yan12125, it looks like the only reason for the conflict is that a signature was added, which I cannot recreate myself. |
Do you mean that you cannot create new signatures? Apparently new signatures will be created by maintainers after scripts are updated. For example, after scripts are changed in dc409a3, signatures are updated in d8821c8. As a result, I'd assume it's enough to resolve conflicts in scripts without touching signatures. |
@yan12125, yes, I meant the signature. I took your advice and resolved the conflict while keeping the - by definition now invalid - signature. |
Description Of Changes
Switches to using
Register-ArgumentCompleter
for tab-completion (expansion) when running in PowerShell v7.4+Motivation and Context
As discussed in #3364:
Chocolatey's tab completion broke in v7.4.0, due to an intentional breaking change in PowerShell (removal of legacy code, as a side effect of which PowerShell no longer calls custom
TabExpansion
functions, if defined).The recommended approach (since v5.0) is to use
Register-ArgumentCompleter
Testing
Interactively (tab completion).
Programmatically, by calling
TabExpansion2
; e.g:Operating Systems Testing
Windows 11 22H2
Change Types Made
Change Checklist
I don't have access to PowerShell v2, but I think the changes are compatible.
Related Issue
Fixes #3364