-
Notifications
You must be signed in to change notification settings - Fork 2.9k
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
Shell completions with whitespace seem to work differently on bash vs. other supported shells #1740
Comments
@scop, you may have some expertise on this. Do you have special handling if a completion has a space in it for bash? |
Hi @kangasta ;) It's annoyingly difficult in bash. A cheap generic way is to fake the completions to be filenames. That does take care of the escaping, but it's obviously semantically incorrect for completions that really aren't filenames. And it may have side effects. Another one is to run the strings through Anyway I believe neither of these options is currently available for cobra users. I'll have a quick peek at PR #1743. |
The Cobra project currently lacks enough contributors to adequately respond to all issues. This bot triages issues and PRs according to the following rules:
|
Rebased related PR and added comment there as well: #1743 |
The Cobra project currently lacks enough contributors to adequately respond to all issues. This bot triages issues and PRs according to the following rules:
|
Adding a comment to keep this from being closed. |
This requires removing whitespace from completions as cobras bash completions do not support values with whitespace (See spf13/cobra#1740). This is done by replacing whitespace with non-breaking spaces during completion generation. The argument resolvers with values that can include whitespace are also updated to handle both modified and original arguments, i.e. user can still input whitespaces normally when argument is quoted or escaped.
I ran across this the other day. This isn't just limited to whitespace, but all characters that need escaping in bash. My completions were using |
…haracters. Special characters include whitepace, so this is more general than spf13#1743. This should also fix spf13#1740. I added some test cases to cobra-completion-testing. This PR makes them pass. It also doesn't trip any of the performance regression tests. I'm happy to submit those tests as a PR as well. - https://github.com/JeffFaer/cobra-completion-testing/tree/special_characters - JeffFaer/cobra-completion-testing@52254c1
…haracters. Special characters include whitepace, so this is more general than spf13#1743. This should also fix spf13#1740. I added some test cases to cobra-completion-testing. This PR makes them pass. It also doesn't trip any of the performance regression tests. I'm happy to submit those tests as a PR as well. - https://github.com/JeffFaer/cobra-completion-testing/tree/special_characters - JeffFaer/cobra-completion-testing@52254c1 Signed-off-by: Jeffrey Faer <[email protected]>
Other shell completions escape whitespace in completions, but bash completions seems to add completions with whitespace as multiple suggestions or multiple arguments depending on bash version. I would expect also bash completions to escape whitespace in completions from
ValidArgsFunction
.bash v3:
bash v4 & v5
$ ./sh-completion-demo whitespace [TAB][TAB] no-whitespace whitespace with
fish:
zsh:
powershell
Minimal code to reproduce above usage with
github.com/spf13/cobra v1.5.0
(Gist):The text was updated successfully, but these errors were encountered: