* Re: bash 4.0 breaks some completion scripts
2010-12-02 23:38 ` bash 4.0 breaks some completion scripts Jonathan Nieder
@ 2010-12-03 0:11 ` SZEDER Gábor
0 siblings, 0 replies; 2+ messages in thread
From: SZEDER Gábor @ 2010-12-03 0:11 UTC (permalink / raw)
To: Jonathan Nieder
Cc: 601632, Peter van der Does, Kevin Ballard, Mathias Lafeldt,
Brian Gernhardt, git
Hi,
On Thu, Dec 02, 2010 at 05:38:48PM -0600, Jonathan Nieder wrote:
> Jonathan Nieder wrote:
>
> > Bash 4.0 changed the rules for completion word splitting so that
> > they are incompatible with 3.x. I think some Breaks: will be needed
> > to ensure smooth upgrades.
>
> Just FYI: Ah, at last some clarity!
>
> From the bash 3 manual:
>
> COMP_WORDS
> An array variable (see Arrays below) consisting of the
> individual words in the current command line. The
> words are split on shell metacharacters as the shell
> parser would separate them. This variable is
> available only in shell functions invoked by the
> programmable completion facilities (see Programmable
> Completion below).
>
> From the bash 4 manual:
>
> COMP_WORDS
> An array variable (see Arrays below) consisting of the
> individual words in the current command line. The
> line is split into words as readline would split it,
> using COMP_WORDBREAKS as described above. This
> variable is available only in shell functions invoked
> by the programmable completion facilities (see
> Programmable Completion below).
Oh dear, oh dear. I've just sent a reply to your message on the git
list with basically the same findigs. [1]
> The workaround used by the bash-completion scripts is to paste words
> from COMP_WORDS together (in _get_comp_words_by_ref).
>
> If only the NEWS file had mentioned it. :)
Actually, the NEWS file does mention it (and Peter noted it right at
the start! [2]):
i. The programmable completion code now uses the same set of characters as
readline when breaking the command line into a list of words.
But it's really easy to misinterpret this statement, because there is
and there was a $COMP_WORDBREAKS, so the first thing that
comes to mind is that the set of characters in $COMP_WORDBREAKS is
changed, leaving you puzzled for weeks when you discover that the
set of characters is still the same.
Best,
Gábor
[1] http://marc.info/?l=git&m=129133327312420&w=2
[2] http://thread.gmane.org/gmane.comp.version-control.git/159516/focus=159628
^ permalink raw reply [flat|nested] 2+ messages in thread