Skip to contentSkip to conversation

possible completion bug with --set-upstream-to=

DISCUSSION Ernesto Alfonso 3 participants 3 messages Dec 30, 2017

lore
Share & tools
lore
#0 lore raw

Whenever I type the last <TAB> to complete origin/master, as in below:

Quoted 1 line

git branch --set-upstream-to=orig<TAB>

what I get is:

Quoted 1 line

git branch origin/master

instead of the expected:

Quoted 1 line

git branch --set-upstream-to=origin/master

git version and OS:

Quoted 7 lines

git version 2.1.4

Distributor ID: Debian
Description: Debian GNU/Linux 8.7 (jessie)
Release: 8.7
Codename: jessie

Thanks,

Ernesto

#1 lore raw
Quoted 8 lines

Whenever I type the last <TAB> to complete origin/master, as in below:

Quoted 1 line

git branch --set-upstream-to=orig<TAB>

what I get is:

Quoted 1 line

git branch origin/master

Yeah, this shouldn't happen.

Quoted 3 lines

instead of the expected:

Quoted 1 line

git branch --set-upstream-to=origin/master

And indeed this is the expected behavior.

Quoted 3 lines

git version and OS:

Quoted 1 line

git version 2.1.4

I couldn't reproduce the wrong behavior you saw using v2.1.4 in a regular setup.

However, I could reproduce it after I removed the '=' character from the set of characters in $COMP_WORDBREAKS, but then all completions after an '--option=' are affected, e.g. 'pulseaudio --daemonize=t<TAB> becomes 'pulseaudio true', too.

Could you tell us the content of your $COMP_WORDBREAKS using the output of the following command (to make the included space, tab and newline visible):

printf "$COMP_WORDBREAKS" |tr ' \t\n' STN ; echo

If it's indeed the case that $COMP_WORDBREAKS is missing the '=', then you should add it back and check whether it fixed the issue. If it did fix it, then you should try to figure out how the '=' got removed from there. Perhaps you used a program that ships its own completion script whose developers changed $COMP_WORDBREAKS to their liking, not knowing about its effect on other completion scripts.

Gábor

#2 lore raw
Quoted 7 lines · SZEDER Gábor

I couldn't reproduce the wrong behavior you saw using v2.1.4 in a regular setup.

However, I could reproduce it after I removed the '=' character from the set of characters in $COMP_WORDBREAKS, but then all completions after an '--option=' are affected, e.g. 'pulseaudio --daemonize=t<TAB> becomes 'pulseaudio true', too.

I can reproduce here on my Debian unstable system.

Quoted 4 lines

Could you tell us the content of your $COMP_WORDBREAKS using the output of the following command (to make the included space, tab and newline visible):

Quoted 8 lines

printf "$COMP_WORDBREAKS" |tr ' \t\n' STN ; echo

If it's indeed the case that $COMP_WORDBREAKS is missing the '=', then you should add it back and check whether it fixed the issue. If it did fix it, then you should try to figure out how the '=' got removed from there. Perhaps you used a program that ships its own completion script whose developers changed $COMP_WORDBREAKS to their liking, not knowing about its effect on other completion scripts.

Looks like the system npm completion is the culprit:

  $ grep COMP_WORDBREAKS /etc/bash_completion.d/*
  /etc/bash_completion.d/npm:COMP_WORDBREAKS=${COMP_WORDBREAKS/=/}
  /etc/bash_completion.d/npm:COMP_WORDBREAKS=${COMP_WORDBREAKS/@/}
  /etc/bash_completion.d/npm:export COMP_WORDBREAKS
  $ dpkg -S /etc/bash_completion.d/npm
  npm: /etc/bash_completion.d/npm

Looks like there's already a bug filed:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=711810

Sadly there's even a patch which was taken upstream, but the debian packaged version of npm is just woefully out of date.

-Peff