You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When using Click shell completion in bash and zsh, long option completion is not working properly when = is used to separate the option from the value (e.g., command --long-option=value vs. command --long-option value). In zsh, the option being completed is replaced with the incomplete value or matched value, essentially "gobbling" up the option. In bash, the option isn't completed at all. I did not test fish.
Steps to reproduce the issue
Create the following script and place it in the bin directory of an activated virtual environment with click installed:
# gobble#!/usr/bin/env pythonimportclick@click.command@click.option("--color", type=click.Choice(["auto", "always", "never"]), default=None,help="Control colors in output.")@click.option("--name",help="Name of something.")defmain(color: str|None, name: str|None) ->None:
"""Test long options."""click.echo(f"{color=}, {name=}")
if__name__=="__main__":
main()
Open a zsh shell and enable script completion: eval "$(_GOBBLE_COMPLETE=zsh_source gobble)"
Attempt to tab complete the --color option using both styles
before tab completion
after tab completion
offered completions
gobble --color=
gobble
gobble --color=a
gobble a
gobble --color=al
gobble always
gobble --color
gobble --color
auto always never
gobble --color a
gobble --color a
auto always
gobble --color al
gobble --color always
Open a bash shell and enable script completion: eval "$(_GOBBLE_COMPLETE=bash_source gobble)"
Attempt to tab complete the --color option using both styles
before tab completion
after tab completion
offered completions
gobble --color=
gobble --color=
auto always never
gobble --color=a
gobble --color=a
gobble --color=al
gobble --color=al
gobble --color
gobble --color
auto always never
gobble --color a
gobble --color a
auto always
gobble --color al
gobble --color always
Expected behavior
before tab completion
after tab completion
offered completions
alternate completions
gobble --color=
gobble --color=
auto always never
--color=auto --color=always --color=never
gobble --color=a
gobble --color=a
auto always
--color=auto --color=always
gobble --color=al
gobble --color=always
gobble --color
gobble --color
auto always never
gobble --color a
gobble --color a
auto always
gobble --color al
gobble --color always
Environment:
Python version: 3.12.7
Click version: 8.1.8
The text was updated successfully, but these errors were encountered:
When using Click shell completion in bash and zsh, long option completion is not working properly when = is used to separate the option from the value (e.g.,
command --long-option=value
vs.command --long-option value
). In zsh, the option being completed is replaced with the incomplete value or matched value, essentially "gobbling" up the option. In bash, the option isn't completed at all. I did not test fish.Steps to reproduce the issue
Open a zsh shell and enable script completion:
eval "$(_GOBBLE_COMPLETE=zsh_source gobble)"
Attempt to tab complete the
--color
option using both stylesOpen a bash shell and enable script completion:
eval "$(_GOBBLE_COMPLETE=bash_source gobble)"
Attempt to tab complete the
--color
option using both stylesExpected behavior
Environment:
The text was updated successfully, but these errors were encountered: