chriswalz/bit

Completions crash in fish

MrGreenTea opened this issue · 6 comments

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. open fish
  2. bit complete
  3. check ~/.config/fish/completions/bit.fish
  4. type bit <TAB>
  5. wait and hit Ctrl+C
  6. get something like this
❯ bit
\e[0;39;49m\e]2;\cg\e[J                                                                                                                                                                        
\e[?25l\e[0;93;49m> bit \e[0;39;49m\e[0;39;49m\e[0;39;49m\e[J\eD\eD\eD\eD\eD\eD\eM\eM\eM\eM\eM\eM\e[0;97;46m\e[1B\e[0;90;103m status                      \e[0;97;40m Show the working tree st…
COMP_LINE bit   COMP_POINT  err: strconv.Atoi: parsing "": invalid syntax

Expected behavior
Get an overview/completion of all bit commands

Desktop (please complete the following information):

The installed completions file in ~/.config/fish/completions/bit.fish looks like this:

function __complete_bit
    set -lx COMP_LINE (commandline -cp)
    test -z (commandline -ct)
    and set COMP_LINE "$COMP_LINE "
    /usr/local/bin/bit
end
complete -f -c bit -a "(__complete_bit)"

Is this work for you? #3 (comment).

Is this work for you? #3 (comment).

Yes after set -Ux COMP_POINT 1 it seems to work perfectly.

"Me-tooing" this. Had the exact same error as in #3 setting COMP_POINT fixed it.

setting COMP_POINT to 1 has other weird behaviour for me, where it only shows subcommands starting with b and also showing subcommands that do not exist.

setting COMP_POINT to 4 at least gets me all subcommands.

Not super familiar with all this but using set -lx COMP_POINT (commandline -C) seemed to fix this issue for me. For reference, kubernetes-sigs/kustomize#2561 (comment)

If I add the line @c0state suggested to the bit.fish completion script I get the full list of available commands. And it works with partial completions as well, e.g. typing bit st and then hitting tab.

But I miss the usual explanation of the commands:
snip2

vs:
snip1