-
Notifications
You must be signed in to change notification settings - Fork 886
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
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. |
Thank you! Hopefully some dev will have a look at this soon. |
@mklement0 thank you for taking the time for creating this PR, and for getting it updated. Before we will be able to look at this, and get it merged in, the PR will need to conform to the guidelines that are stipulated in the CONTRIBUTING document for this repository. Can I get you to look through that document, specifically the "prepare commits` section. |
@gep13, I fully understand that, as a high-profile project, you need to enforce standards on community PRs. However, personally, as an infrequent Chocolatey user, I'm not willing to invest the time to learn how to conform to those standards. I hope someone else is, though, and they're free to base their future PR on the code in this one. |
Thanks, I created a new pull request from your codes #3459 |
Thank you, @yan12125. |
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