-
Notifications
You must be signed in to change notification settings - Fork 7
Closed
Labels
Description
Describe the change
In order to prevent argument completions from falling back to the default of file path completion, we should ensure that all completers have a null value return if there is nothing to return. Like this:
function Test-Function {
param (
[string]$param1,
[int]$param2
)
Write-Host "Parameter 1: $param1"
Write-Host "Parameter 2: $param2"
return $true
}
Register-ArgumentCompleter -CommandName Test-Function -ParameterName param1 -ScriptBlock {
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
$options = <Some function to get options>
$filteredOptions = $options | Where-Object { $_ -like "$wordToComplete*" }
if (-not $filteredOptions) {
return $null
}
$filteredOptions | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_.Option, $_.Option, 'ParameterValue', $_.Option)
}
}The argument completers would in this case not start cycling through folder and file paths in the shells current folder.
Before:
Test-Function -param1 <tab> # Assume the function that gets options returns no options
Test-Function -param1 /readme.md # The file is not actually a valid parameter, so its an invalid completion.Instead i want this:
Test-Function -param1 <tab> # Again, assume the function that gets options returns no options
Test-Function -param1 | # The pipe (|) being where the cursor is, which is correct if there are no valid completions, no file path or anything, just nothing.Copilot
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Done