[Bash-completion-devel] Completion words containing colons

Freddy Vulto fvulto at gmail.com
Wed Dec 9 21:28:50 UTC 2009


There's a problem when completion words containing colons (:).  For example,
when you do this in an empty directory:

   $ touch abc:def
   $ rm abc:<TAB>  # Becomes: abc:abc\:def (see also *1)

The solution for bash-4 is to remove the colon from COMP_WORDBREAKS (see also
*2):

   COMP_WORDBREAKS=${COMP_WORDBREAKS//:}

The workaround for bash-3 - or bash-4 with a colon in COMP_WORDBREAKS - is to
call:

   __ltrim_colon_completions "$cur"

after completions have been put in COMPREPLY.

Regarding the bash-4 solution, are we going to put this advice in the
documention or do we remove the colon from COMP_WORDBREAKS in bash-completion?
I think I'm in favour of the advice.

Regarding the workaround, __ltrim_colon_completions() can be called *always*,
but we don't have a hook in bash-completion yet for calling functions at the
end of a completion?  Are we going to wait for the bash-completion-lib merge to
call __ltrim_colon_completions() at the of completions?  If so, I'll put it on
the roadmap, and just apply __ltrim_colon_completions() where the problem
surfaces - so far being:
- _known_hosts_real()
- _perlmodules()


*1)  Bug report #377935: completion of ':' mangles filename
     http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=377935

*2)  E13) Why does filename completion misbehave if a colon appears in the
     filename? - Bash FAQ
     http://tiswww.case.edu/php/chet/bash/FAQ


Regards,

Freddy Vulto
http://fvue.nl



More information about the Bash-completion-devel mailing list