Package: bash-completion Version: 20060301-3 Severity: normal Tags: patch
In the definition of _get_cword in bash_completion, both $COMP_POINT and $word_start stand for offset in bytes, not in characters. However, in the ${variable:offset} expression, 'offset' must be in characters. In a UTF-8 locale, when the completion string contains multibyte chars, say, when we complete a command like "% cp ĂȘtre /<tab>", _get_cword will return the empty string instead of '/'. This is easy to fix by setting locally LC_CTYPE to C in _get_cword. The patch is attached. -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: i386 (i686) Kernel: Linux 2.6.24martha (SMP w/1 CPU core; PREEMPT) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages bash-completion depends on: ii bash 3.2-1 The GNU Bourne Again SHell ii ucf 3.005 Update Configuration File: preserv bash-completion recommends no packages. -- no debconf information
--- /usr/share/bash/bash_completion 2008-03-05 23:57:25.000000000 +0200 +++ ./bash_completion 2008-03-22 13:16:28.000000000 +0200 @@ -185,6 +185,7 @@ # it will complete just "foo", not "foobar", which is what the user wants.) _get_cword() { + local LC_CTYPE=C local word_start cur=${COMP_LINE:0:$COMP_POINT}