threads / discuss / 25491

bash completion broken on ubuntu 10.10?

Subject: bash completion broken on ubuntu 10.10?

## tl;dr

5 messages between Oct 20, 2010 and Oct 21, 2010.

replies: 4people: 5as markdown or json

SZEDER Gábor· Oct 20, 2010, 23:04 UTC · lore
Hi,

Git's bash completion script offers possible arguments to some options, e.g. it lists pretty formats after 'git log --pretty=<TAB>', merge tools after 'git mergetool --tool=<TAB>', refs after 'git commit --reuse-message=<TAB>', etc.

On a three day old ubuntu 10.10 install these don't work anymore; the completion script offers the list of files in all those cases.

After a bit of investigation I found that when I press TAB after 'git log --pretty=', then ${COMP_WORDS[COMP_CWORD-1]} contains '--pretty' and ${COMP_WORDS[COMP_CWORD]} contains "=". Weird.

Then I remembered that we had some COMP_WORDBREAKS issues in the past (db8a9ff, bash completion: Resolve git show ref:path<tab> losing ref: portion, 2008-07-15)). So I looked at my $COMP_WORDBREAKS, but didn't see anything suspicious (it contains "'><=;|&(: ). Removing the '=' makes the listing after 'git log --pretty=' work, but breaks many other things badly.

I don't have any ideas what could possibly be wrong here (but it's too late here for any bright ideas anyway...). Could someone confirm or deny this behaviour on ubuntu 10.10?

Thanks, Gábor

Brian Gernhardt· Oct 20, 2010, 23:33 UTC · re: SZEDER Gábor · lore

Re: bash completion broken on ubuntu 10.10?

On Oct 20, 2010, at 7:04 PM, SZEDER Gábor wrote:
Show 9 quoted lines
> Hi,
> 
> Git's bash completion script offers possible arguments to some
> options, e.g. it lists pretty formats after 'git log --pretty=<TAB>',
> merge tools after 'git mergetool --tool=<TAB>', refs after 'git commit
> --reuse-message=<TAB>', etc.
> 
> On a three day old ubuntu 10.10 install these don't work anymore; the
> completion script offers the list of files in all those cases.
> I don't have any ideas what could possibly be wrong here (but it's too
> late here for any bright ideas anyway...).  Could someone confirm or
> deny this behaviour on ubuntu 10.10?
Confirmed.  Completion works properly on OS X, but fails on Ubuntu 10.10
OS X 10.6.4:
  bash: 3.2.48
  git:  1.7.3.1.209.g52408 (next + my t/gitweb-lib patch)
  output:
$ git log --pretty=<tab><tab>
email     full      medium    raw       
format:   fuller    oneline   short  
Ubuntu 10.10:
  bash: 4.1.5
  git:  1.7.1 (from apt)
  output:
$ git log --pretty=<tab><tab>
.bash/               .irbrc
.bash_history        .less
.bash_logout         .local/
.bash_profile        Music/
--More--
~~ Brian
Peter van der Does· Oct 21, 2010, 02:50 UTC · re: SZEDER Gábor · lore

Re: bash completion broken on ubuntu 10.10?

On Thu, 21 Oct 2010 01:04:09 +0200 SZEDER Gábor <szeder@ira.uka.de> wrote:

Show 29 quoted lines
> Hi,
> 
> Git's bash completion script offers possible arguments to some
> options, e.g. it lists pretty formats after 'git log --pretty=<TAB>',
> merge tools after 'git mergetool --tool=<TAB>', refs after 'git commit
> --reuse-message=<TAB>', etc.
> 
> On a three day old ubuntu 10.10 install these don't work anymore; the
> completion script offers the list of files in all those cases.
> 
> After a bit of investigation I found that when I press TAB after 'git
> log --pretty=', then ${COMP_WORDS[COMP_CWORD-1]} contains '--pretty'
> and ${COMP_WORDS[COMP_CWORD]} contains "=".  Weird.
> 
> Then I remembered that we had some COMP_WORDBREAKS issues in the past
> (db8a9ff, bash completion: Resolve git show ref:path<tab> losing ref:
> portion, 2008-07-15)).  So I looked at my $COMP_WORDBREAKS, but didn't
> see anything suspicious (it contains "'><=;|&(: ).  Removing the '='
> makes the listing after 'git log --pretty=' work, but breaks many
> other things badly.
> 
> I don't have any ideas what could possibly be wrong here (but it's too
> late here for any bright ideas anyway...).  Could someone confirm or
> deny this behaviour on ubuntu 10.10?
> 
> 
> Thanks,
> Gábor
> 

My guess is that it has to do with Bash 4, the equal sign must be seen as a new word. I'm running Ubuntu 10.04 and have the same problem. I fixed the problem locally, I just don't know if that works on Bash 3 and I doubt it will work on Bash 3.

I changed the script only for git log, not other commands yet, like git am --whitespace=<tab><tab>

-- 
Peter van der Does

GPG key: E77E8E98

IRC: Ganseki on irc.freenode.net
Twitter: @petervanderdoes

WordPress Plugin Developer
Blog: http://blog.avirtualhome.com
Forums: http://forums.avirtualhome.com
Twitter: @avhsoftware
Kevin Ballard· Oct 21, 2010, 04:44 UTC · re: Peter van der Does · lore

Re: bash completion broken on ubuntu 10.10?

On Oct 20, 2010, at 7:50 PM, Peter van der Does wrote:
Show 40 quoted lines
> On Thu, 21 Oct 2010 01:04:09 +0200
> SZEDER Gábor <szeder@ira.uka.de> wrote:
> 
>> Hi,
>> 
>> Git's bash completion script offers possible arguments to some
>> options, e.g. it lists pretty formats after 'git log --pretty=<TAB>',
>> merge tools after 'git mergetool --tool=<TAB>', refs after 'git commit
>> --reuse-message=<TAB>', etc.
>> 
>> On a three day old ubuntu 10.10 install these don't work anymore; the
>> completion script offers the list of files in all those cases.
>> 
>> After a bit of investigation I found that when I press TAB after 'git
>> log --pretty=', then ${COMP_WORDS[COMP_CWORD-1]} contains '--pretty'
>> and ${COMP_WORDS[COMP_CWORD]} contains "=".  Weird.
>> 
>> Then I remembered that we had some COMP_WORDBREAKS issues in the past
>> (db8a9ff, bash completion: Resolve git show ref:path<tab> losing ref:
>> portion, 2008-07-15)).  So I looked at my $COMP_WORDBREAKS, but didn't
>> see anything suspicious (it contains "'><=;|&(: ).  Removing the '='
>> makes the listing after 'git log --pretty=' work, but breaks many
>> other things badly.
>> 
>> I don't have any ideas what could possibly be wrong here (but it's too
>> late here for any bright ideas anyway...).  Could someone confirm or
>> deny this behaviour on ubuntu 10.10?
>> 
>> 
>> Thanks,
>> Gábor
>> 
> 
> My guess is that it has to do with Bash 4, the equal sign must be seen
> as a new word. I'm running Ubuntu 10.04 and have the same problem.
> I fixed the problem locally, I just don't know if that works on Bash 3
> and I doubt it will work on Bash 3.
> 
> I changed the script only for git log, not other commands yet, like 
> git am --whitespace=<tab><tab>
Looks like you're right. I'm running bash 4.1.7 on OS X and it's broken here.
-Kevin Ballard
Mathias Lafeldt· Oct 21, 2010, 10:35 UTC · re: Peter van der Does · lore

Re: bash completion broken on ubuntu 10.10?

On 10/21/2010 04:50 AM, Peter van der Does wrote:
Show 42 quoted lines
> On Thu, 21 Oct 2010 01:04:09 +0200
> SZEDER Gábor <szeder@ira.uka.de> wrote:
> 
>> Hi,
>>
>> Git's bash completion script offers possible arguments to some
>> options, e.g. it lists pretty formats after 'git log --pretty=<TAB>',
>> merge tools after 'git mergetool --tool=<TAB>', refs after 'git commit
>> --reuse-message=<TAB>', etc.
>>
>> On a three day old ubuntu 10.10 install these don't work anymore; the
>> completion script offers the list of files in all those cases.
>>
>> After a bit of investigation I found that when I press TAB after 'git
>> log --pretty=', then ${COMP_WORDS[COMP_CWORD-1]} contains '--pretty'
>> and ${COMP_WORDS[COMP_CWORD]} contains "=".  Weird.
>>
>> Then I remembered that we had some COMP_WORDBREAKS issues in the past
>> (db8a9ff, bash completion: Resolve git show ref:path<tab> losing ref:
>> portion, 2008-07-15)).  So I looked at my $COMP_WORDBREAKS, but didn't
>> see anything suspicious (it contains "'><=;|&(: ).  Removing the '='
>> makes the listing after 'git log --pretty=' work, but breaks many
>> other things badly.
>>
>> I don't have any ideas what could possibly be wrong here (but it's too
>> late here for any bright ideas anyway...).  Could someone confirm or
>> deny this behaviour on ubuntu 10.10?
>>
>>
>> Thanks,
>> Gábor
>>
> 
> My guess is that it has to do with Bash 4, the equal sign must be seen
> as a new word. I'm running Ubuntu 10.04 and have the same problem.
> I fixed the problem locally, I just don't know if that works on Bash 3
> and I doubt it will work on Bash 3.
> 
> I changed the script only for git log, not other commands yet, like 
> git am --whitespace=<tab><tab>
> 
> 
Same problem here.

$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 10.04.1 LTS Release: 10.04 Codename: lucid

$ bash --version GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu)

$ shopt autocd off cdable_vars off cdspell off checkhash off checkjobs off checkwinsize on cmdhist on compat31 off compat32 off compat40 off dirspell off dotglob off execfail off expand_aliases on extdebug off extglob on extquote on failglob off force_fignore on globstar off gnu_errfmt off histappend on histreedit off histverify off hostcomplete off huponexit off interactive_comments on lithist off login_shell off mailwarn off no_empty_cmd_completion off nocaseglob off nocasematch off nullglob off progcomp on promptvars on restricted_shell off shift_verbose off sourcepath on xpg_echo off

-Mathias

← back to recent threads