I've been mixing up bash-3 and bash-4 :-( But now I know, these are my findings:
Commit f6497298 actually fixed quoted arguments under bash-3. Bug #474094 is actually fixed under bash-3, but reappears under bash-4 as it did at my box... It appears the contents of COMP_CWORDS has changed as of bash-4: "The programmable completion code now uses the same set of characters as readline when breaking the command line into a list of words." This affects quoted arguments. When completing this: $ a 'b c<TAB> bash-3 is returning this: COMP_CWORD: 1 COMP_CWORDS: 0: a 1: 'b c whereas bash-4 is returning: COMP_CWORD: 3 COMP_CWORDS: 0: a 1: ' 2: b 3: c The old _get_cword gives better results on bash-4 because it's not relying on COMP_CWORDS and allows for temporarily disabling of COMP_WORDBREAKS characters. But the old _get_cword fails on bash-4 with quoted arguments. I tried fixing _get_cword with quoted arguments under bash-4, but it's becoming rather difficult since quotes can be escaped in so many ways and COMP_WORDS is of so little help now. I'm going to ask on the bug-bash mailing list for a KISS solution. In the mean time I'll restore _get_cword like this: if bash-4 old _get_cword using COMP_WORDBREAKS (dubbed _get_cword4) else _get_cword of commit f6497298 (dubbed _get_cword3) fi Meaning that under bash-4, _get_cword of quoted arguments will go wrong. All other _get_cwords should give no problems on bash-3 & bash-4... Regards, Freddy Vulto http://fvue.nl _______________________________________________ Bash-completion-devel mailing list Bash-completion-devel@lists.alioth.debian.org http://lists.alioth.debian.org/mailman/listinfo/bash-completion-devel