Following patch (from this MP[1]) seems to fix it for me - at least for: 1) completion when 1st char is '~' 2) fixing potential double escaping when the argument is already escaped, eg: cat /tmp/file\ with\ spac<TAB>
------------------------------------------------------------ revno: 46 committer: JuanJo Ciarlante <j...@canonical.com> branch nick: bash-completion timestamp: Tue 2014-03-11 11:27:12 -0300 message: [jjo, r=] fix _quote_readline_by_ref to avoid escaping 1st '~', and re-eval to fix double escaping diff: === modified file 'bash_completion' --- bash_completion 2013-12-27 01:28:28 +0000 +++ bash_completion 2014-03-11 14:27:12 +0000 @@ -539,6 +539,9 @@ if [[ $1 == \'* ]]; then # Leave out first character printf -v $2 %s "${1:1}" + elif [[ $1 == ~* ]]; then + # avoid escaping first ~ + printf -v $2 ~%q "${1:1}" else printf -v $2 %q "$1" fi @@ -547,6 +550,10 @@ # drop the additional quoting. See also: http://www.mail-archive.com/ # bash-completion-de...@lists.alioth.debian.org/msg01942.html [[ ${!2} == \$* ]] && eval $2=${!2} + # Re-evaluate if result is double escaped, ie contains: \\ + # This happens always when argument is already escaped at cmdline, + # and passed to this function as e.g.: file\ with\ spaces + [[ ${!2} == *\\* ]] && eval $2=${!2} } # _quote_readline_by_ref() [1] https://code.launchpad.net/~jjo/bash-completion/fix-bash43-quote_readline_by_ref-tilde-and-double_escaping/+merge/210421 Cheers, --JuanJo - http://twitter.com/xjjo - http://bit.ly/jjo-cv -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org