On Sat, Dec 3, 2011 at 09:32, Chet Ramey <chet.ra...@case.edu> wrote:
> On 11/30/11 2:08 AM, Clark J. Wang wrote: > > (Tested with bash 4.2.10 and 4.1.9) > > > > [bash-4.2.10] # cat foo.compspec > > compspec_foo() > > { > > local cmd=$1 cur=$2 pre=$3 > > > > if [[ $cur = :* ]]; then > > COMPREPLY=( changed changed/IGNORE_ME ) > > fi > > } > > > > complete -F compspec_foo foo > > [bash-4.2.10] # source foo.compspec > > [bash-4.2.10] # foo :short<TAB> > > [bash-4.2.10] # foo changed <-- Fine, this is what I want > > [bash-4.2.10] # foo :this-is-a-long-word<TAB> > > [bash-4.2.10] # foo :this-i <-- Bug here? > > > > First of all, you must have removed `:' from $COMP_WORDBREAKS, because > you won't get any matches unless you have. > Sorry I forgot to mention that. `:' is removed from $COMP_WORDBREAKS in my global rc files. To be more exact: [bash-4.2.10] # printf '%q\n' "$COMP_WORDBREAKS" $' \t\n"\'><=;|&(' [bash-4.2.10] # > I can't reproduce this behavior using bash-4.2.20 (after modifying > COMP_WORDBREAKS); I get `changed' as the completion in both cases. > I just compiled the latest 4.2.20 and I could still reproduce it. And I also tested in Cygwin (bash 4.1.10) and Debian 6.0 (bash 4.1.5), they all have the same problem. > Have you done `set -x' to get an idea of what's happening when the > completion function runs? > Seems like `set -x' gives no more info: ================================ [bash-4.2.20 ~/tmp] # printf '%q\n' "$COMP_WORDBREAKS" $' \t\n"\'><=;|&(' [bash-4.2.20 ~/tmp] # cat foo.compspec + cat foo.compspec compspec_foo() { local cmd=$1 cur=$2 pre=$3 if [[ $cur = :* ]]; then COMPREPLY=( changed changed/IGNORE_ME ) fi } complete -F compspec_foo foo [bash-4.2.20 ~/tmp] # source foo.compspec [bash-4.2.20 ~/tmp] # set -x [bash-4.2.20 ~/tmp] # foo :this-is-a-long-word<Press TAB and then ENTER> [bash-4.2.20 ~/tmp] # foo :this-is-a-long-word+ local cmd=foo cur=:this-is-a-long-word pre=foo + [[ :this-is-a-long-word = :* ]] + COMPREPLY=(changed changed/IGNORE_ME) + foo :this-i bash: foo: command not found [bash-4.2.20 ~/tmp] # > > Chet > > > -- > ``The lyf so short, the craft so long to lerne.'' - Chaucer > ``Ars longa, vita brevis'' - Hippocrates > Chet Ramey, ITS, CWRU c...@case.edu > http://cnswww.cns.cwru.edu/~chet/ > -- -Clark