From 7b93a9a45743a677eeacfa5cb7672dffed230d26 Mon Sep 17 00:00:00 2001 From: Matej Kafka Date: Wed, 30 Jul 2025 17:03:48 +0200 Subject: [PATCH] feat(complete): Only complete flags in PowerShell when word starts with - --- clap_complete/src/aot/shells/powershell.rs | 4 ++++ clap_complete/tests/snapshots/aliases.ps1 | 4 ++++ clap_complete/tests/snapshots/basic.ps1 | 4 ++++ clap_complete/tests/snapshots/custom_bin_name.ps1 | 4 ++++ clap_complete/tests/snapshots/external_subcommands.ps1 | 4 ++++ clap_complete/tests/snapshots/feature_sample.ps1 | 4 ++++ .../powershell/powershell/Microsoft.PowerShell_profile.ps1 | 4 ++++ clap_complete/tests/snapshots/quoting.ps1 | 4 ++++ clap_complete/tests/snapshots/special_commands.ps1 | 4 ++++ clap_complete/tests/snapshots/sub_subcommands.ps1 | 4 ++++ clap_complete/tests/snapshots/subcommand_last.ps1 | 4 ++++ clap_complete/tests/snapshots/two_multi_valued_arguments.ps1 | 4 ++++ clap_complete/tests/snapshots/value_hint.ps1 | 4 ++++ clap_complete/tests/snapshots/value_terminator.ps1 | 4 ++++ 14 files changed, 56 insertions(+) diff --git a/clap_complete/src/aot/shells/powershell.rs b/clap_complete/src/aot/shells/powershell.rs index 77295be47e3..2e15719f851 100644 --- a/clap_complete/src/aot/shells/powershell.rs +++ b/clap_complete/src/aot/shells/powershell.rs @@ -53,6 +53,10 @@ Register-ArgumentCompleter -Native -CommandName '{bin_name}' -ScriptBlock {{ $completions = @(switch ($command) {{{subcommands_cases} }}) + if ($wordToComplete -notlike "-*") {{ + $completions = $completions.Where{{ $_.CompletionText -notlike "-*" }} + }} + $completions.Where{{ $_.CompletionText -like "$wordToComplete*" }} | Sort-Object -Property ListItemText }} diff --git a/clap_complete/tests/snapshots/aliases.ps1 b/clap_complete/tests/snapshots/aliases.ps1 index 1d2969f07cc..9497c0af2bb 100644 --- a/clap_complete/tests/snapshots/aliases.ps1 +++ b/clap_complete/tests/snapshots/aliases.ps1 @@ -37,6 +37,10 @@ Register-ArgumentCompleter -Native -CommandName 'my-app' -ScriptBlock { } }) + if ($wordToComplete -notlike "-*") { + $completions = $completions.Where{ $_.CompletionText -notlike "-*" } + } + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | Sort-Object -Property ListItemText } diff --git a/clap_complete/tests/snapshots/basic.ps1 b/clap_complete/tests/snapshots/basic.ps1 index 997278e1b18..b3d387e2760 100644 --- a/clap_complete/tests/snapshots/basic.ps1 +++ b/clap_complete/tests/snapshots/basic.ps1 @@ -49,6 +49,10 @@ Register-ArgumentCompleter -Native -CommandName 'my-app' -ScriptBlock { } }) + if ($wordToComplete -notlike "-*") { + $completions = $completions.Where{ $_.CompletionText -notlike "-*" } + } + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | Sort-Object -Property ListItemText } diff --git a/clap_complete/tests/snapshots/custom_bin_name.ps1 b/clap_complete/tests/snapshots/custom_bin_name.ps1 index 408fc3c0224..3ac26911283 100644 --- a/clap_complete/tests/snapshots/custom_bin_name.ps1 +++ b/clap_complete/tests/snapshots/custom_bin_name.ps1 @@ -49,6 +49,10 @@ Register-ArgumentCompleter -Native -CommandName 'bin-name' -ScriptBlock { } }) + if ($wordToComplete -notlike "-*") { + $completions = $completions.Where{ $_.CompletionText -notlike "-*" } + } + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | Sort-Object -Property ListItemText } diff --git a/clap_complete/tests/snapshots/external_subcommands.ps1 b/clap_complete/tests/snapshots/external_subcommands.ps1 index caa5fc9b292..6ab5f5a2889 100644 --- a/clap_complete/tests/snapshots/external_subcommands.ps1 +++ b/clap_complete/tests/snapshots/external_subcommands.ps1 @@ -45,6 +45,10 @@ Register-ArgumentCompleter -Native -CommandName 'my-app' -ScriptBlock { } }) + if ($wordToComplete -notlike "-*") { + $completions = $completions.Where{ $_.CompletionText -notlike "-*" } + } + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | Sort-Object -Property ListItemText } diff --git a/clap_complete/tests/snapshots/feature_sample.ps1 b/clap_complete/tests/snapshots/feature_sample.ps1 index 5f15bda2ddd..5a4a488bde7 100644 --- a/clap_complete/tests/snapshots/feature_sample.ps1 +++ b/clap_complete/tests/snapshots/feature_sample.ps1 @@ -54,6 +54,10 @@ Register-ArgumentCompleter -Native -CommandName 'my-app' -ScriptBlock { } }) + if ($wordToComplete -notlike "-*") { + $completions = $completions.Where{ $_.CompletionText -notlike "-*" } + } + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | Sort-Object -Property ListItemText } diff --git a/clap_complete/tests/snapshots/home/static/exhaustive/powershell/powershell/Microsoft.PowerShell_profile.ps1 b/clap_complete/tests/snapshots/home/static/exhaustive/powershell/powershell/Microsoft.PowerShell_profile.ps1 index 685831f2717..c1a47b35e3e 100644 --- a/clap_complete/tests/snapshots/home/static/exhaustive/powershell/powershell/Microsoft.PowerShell_profile.ps1 +++ b/clap_complete/tests/snapshots/home/static/exhaustive/powershell/powershell/Microsoft.PowerShell_profile.ps1 @@ -356,6 +356,10 @@ Register-ArgumentCompleter -Native -CommandName 'exhaustive' -ScriptBlock { } }) + if ($wordToComplete -notlike "-*") { + $completions = $completions.Where{ $_.CompletionText -notlike "-*" } + } + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | Sort-Object -Property ListItemText } diff --git a/clap_complete/tests/snapshots/quoting.ps1 b/clap_complete/tests/snapshots/quoting.ps1 index b6fd69e914c..761361620d0 100644 --- a/clap_complete/tests/snapshots/quoting.ps1 +++ b/clap_complete/tests/snapshots/quoting.ps1 @@ -103,6 +103,10 @@ Register-ArgumentCompleter -Native -CommandName 'my-app' -ScriptBlock { } }) + if ($wordToComplete -notlike "-*") { + $completions = $completions.Where{ $_.CompletionText -notlike "-*" } + } + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | Sort-Object -Property ListItemText } diff --git a/clap_complete/tests/snapshots/special_commands.ps1 b/clap_complete/tests/snapshots/special_commands.ps1 index 8d502ad8d4c..53aab1f9a0d 100644 --- a/clap_complete/tests/snapshots/special_commands.ps1 +++ b/clap_complete/tests/snapshots/special_commands.ps1 @@ -91,6 +91,10 @@ Register-ArgumentCompleter -Native -CommandName 'my-app' -ScriptBlock { } }) + if ($wordToComplete -notlike "-*") { + $completions = $completions.Where{ $_.CompletionText -notlike "-*" } + } + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | Sort-Object -Property ListItemText } diff --git a/clap_complete/tests/snapshots/sub_subcommands.ps1 b/clap_complete/tests/snapshots/sub_subcommands.ps1 index 2633f17df51..1ace41560d1 100644 --- a/clap_complete/tests/snapshots/sub_subcommands.ps1 +++ b/clap_complete/tests/snapshots/sub_subcommands.ps1 @@ -120,6 +120,10 @@ Register-ArgumentCompleter -Native -CommandName 'my-app' -ScriptBlock { } }) + if ($wordToComplete -notlike "-*") { + $completions = $completions.Where{ $_.CompletionText -notlike "-*" } + } + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | Sort-Object -Property ListItemText } diff --git a/clap_complete/tests/snapshots/subcommand_last.ps1 b/clap_complete/tests/snapshots/subcommand_last.ps1 index 5bf1d3b6bc1..616e12bcac0 100644 --- a/clap_complete/tests/snapshots/subcommand_last.ps1 +++ b/clap_complete/tests/snapshots/subcommand_last.ps1 @@ -55,6 +55,10 @@ Register-ArgumentCompleter -Native -CommandName 'my-app' -ScriptBlock { } }) + if ($wordToComplete -notlike "-*") { + $completions = $completions.Where{ $_.CompletionText -notlike "-*" } + } + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | Sort-Object -Property ListItemText } diff --git a/clap_complete/tests/snapshots/two_multi_valued_arguments.ps1 b/clap_complete/tests/snapshots/two_multi_valued_arguments.ps1 index dfe67d29212..3756d78b0f2 100644 --- a/clap_complete/tests/snapshots/two_multi_valued_arguments.ps1 +++ b/clap_complete/tests/snapshots/two_multi_valued_arguments.ps1 @@ -27,6 +27,10 @@ Register-ArgumentCompleter -Native -CommandName 'my-app' -ScriptBlock { } }) + if ($wordToComplete -notlike "-*") { + $completions = $completions.Where{ $_.CompletionText -notlike "-*" } + } + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | Sort-Object -Property ListItemText } diff --git a/clap_complete/tests/snapshots/value_hint.ps1 b/clap_complete/tests/snapshots/value_hint.ps1 index d339b66b5c6..22f99be21e3 100644 --- a/clap_complete/tests/snapshots/value_hint.ps1 +++ b/clap_complete/tests/snapshots/value_hint.ps1 @@ -47,6 +47,10 @@ Register-ArgumentCompleter -Native -CommandName 'my-app' -ScriptBlock { } }) + if ($wordToComplete -notlike "-*") { + $completions = $completions.Where{ $_.CompletionText -notlike "-*" } + } + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | Sort-Object -Property ListItemText } diff --git a/clap_complete/tests/snapshots/value_terminator.ps1 b/clap_complete/tests/snapshots/value_terminator.ps1 index dfe67d29212..3756d78b0f2 100644 --- a/clap_complete/tests/snapshots/value_terminator.ps1 +++ b/clap_complete/tests/snapshots/value_terminator.ps1 @@ -27,6 +27,10 @@ Register-ArgumentCompleter -Native -CommandName 'my-app' -ScriptBlock { } }) + if ($wordToComplete -notlike "-*") { + $completions = $completions.Where{ $_.CompletionText -notlike "-*" } + } + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | Sort-Object -Property ListItemText }