On Sun, Jan 16, 2011 at 02:37:38PM +0100, Mirosław Zalewski wrote:
> $ ~ro<tab> # does work just fine - it gets completed into ~root
> $ ls ~ro<tab> # something is wrong here. You can press <tab> to your
>   death, and it won't get completed
> 
> So it does work, but not when completing argument for command (what
> perhaps most users would want to do).

Probably it's due to a change between
e5a9b6220e93ca656fd9774c6aefa78241edca6f and
f9748115fb4b2950fb4df7535fb723c4affde078 commits in the repo[1]. In
particular some changes to the bash_completion file.

Earlier in the _filedir there was:
_expand || return 0
now it looks like this:
__expand_tilde_by_ref cur



I would like to propose a patch (attached).



[1] git://git.debian.org/git/bash-completion/debian.git


-- 
Marcin Szewczyk                       http://wodny.org
mailto:marcin.szewc...@wodny.borg  <- remove b / usuń b
xmpp:wo...@ubuntu.pl                  xmpp:wo...@jabster.pl
diff --git a/bash_completion b/bash_completion
index e7a4b6e..5c9483d 100644
--- a/bash_completion
+++ b/bash_completion
@@ -602,7 +602,7 @@ _filedir()
 {
     local i IFS=$'\t\n' xspec
 
-    __expand_tilde_by_ref cur
+    __expand_tilde_by_ref cur || return 0
 
     local -a toks
     local quoted tmp
@@ -838,7 +838,9 @@ __expand_tilde_by_ref() {
             eval $1="${!1/%\/*}"/'${!1#*/}'
         else 
             # No, $1 doesn't contain slash
-            eval $1="${!1}"
+            COMPREPLY=( $( compgen -u "${!1}" ) )
+            [ ${#COMPREPLY[@]} -eq 1 ] && eval COMPREPLY[0]=${COMPREPLY[0]}
+            return ${#COMPREPLY[@]}
         fi
     fi
 } # __expand_tilde_by_ref()

Reply via email to