about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Completion/Base/_tilde6
-rw-r--r--Src/Zle/zle_tricky.c9
2 files changed, 11 insertions, 4 deletions
diff --git a/Completion/Base/_tilde b/Completion/Base/_tilde
index 06500d427..d871ddc11 100644
--- a/Completion/Base/_tilde
+++ b/Completion/Base/_tilde
@@ -39,12 +39,12 @@ if [[ -prefix [-+] ]]; then
   _description d 'directory stack'
   compadd "$d[@]" -V dirs -S/ -ld lines -Q - "$list[@]" 
 else
+  _users "$@"
   if (( $# )); then
     d=( "$@" )
   else
-    _description d 'user or named directory'
+    _description d 'named directory'
   fi
-
-  compgen "$d[@]" -nu "$s[@]"
+  compgen "$d[@]" -n "$s[@]"
 fi
 
diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c
index dd11c2d28..84f61e002 100644
--- a/Src/Zle/zle_tricky.c
+++ b/Src/Zle/zle_tricky.c
@@ -4026,7 +4026,7 @@ addmatches(Cadata dat, char **argv)
     char **aign = NULL, **dparr = NULL, oaq = autoq, *oppre = dat->ppre;
     char *oqp = qipre, *oqs = qisuf, qc, **disp = NULL;
     int lpl, lsl, pl, sl, bpl, bsl, bppl = -1, bssl = -1;
-    int llpl = 0, llsl = 0, nm = mnum, gflags = 0;
+    int llpl = 0, llsl = 0, nm = mnum, gflags = 0, ohp = haspattern;
     int oisalt = 0, isalt, isexact, doadd, ois = instring, oib = inbackt;
     Cline lc = NULL;
     Cmatch cm;
@@ -4333,6 +4333,9 @@ addmatches(Cadata dat, char **argv)
     qipre = oqp;
     qisuf = oqs;
 
+    if (mnum == nm)
+	haspattern = ohp;
+
     return (mnum == nm);
 }
 
@@ -6258,6 +6261,7 @@ static void
 makecomplistflags(Compctl cc, char *s, int incmd, int compadd)
 {
     int t, sf1, sf2, ooffs, um = usemenu, delit, oaw, gflags;
+    int mn = mnum, ohp = haspattern;
     char *p, *sd = NULL, *tt, *s1, *s2, *os =  dupstring(s);
     struct cmlist ms;
 
@@ -7173,6 +7177,9 @@ makecomplistflags(Compctl cc, char *s, int incmd, int compadd)
     uremnode(ccstack, firstnode(ccstack));
     if (cc->matcher)
 	mstack = mstack->next;
+
+    if (mn == mnum)
+	haspattern = ohp;
 }
 
 /* Invalidate the completion list. */