Fix/improve argument completion for PowerShell 7.4+ #12440
Labels
C: autocomplete
Autocompletion in shells (pip completion)
good first issue
A good item for first time contributors to work on
state: awaiting PR
Feature discussed, PR is needed
type: enhancement
Improvements to functionality
What's the problem this feature will solve?
The current implementation hooks the legacy PowerShell function TabExpansion. This function does not exist in Powershell 7.4 and later.
The function was replaced by TabExpansion2. Completion/suggestion implementations are recommended to use the
Register-ArgumentCompleter
API which is in Windows PowerShell (5.1) and PowerShell Core (6.0 and later).Describe the solution you'd like
The
Register-ArgumentCompleter
function can be leveraged like so:This can be appended to the user's
$PROFILE
script as-is, as a string executed byInvoke-Expression
, or as a dot-sourced command invoking a script file (e.g.. path/to/pip-completion.ps1)
.Unlike the old implementation, this does not override any built-in functions. The currently-unused
$cursorPosition
parameter can be leveraged for completion/suggestion at the cursor's position instead of only the last word in theCommandAst
.Known Issues
position
environment variable to the implementation in https://github.com/pypa/pip/blob/main/src/pip/_internal/cli/autocompletion.pyAlternative Solutions
The provided solution works well enough for now. Additional functionality can be implemented later.
Additional context
Improves upon #9025
Code of Conduct
The text was updated successfully, but these errors were encountered: