Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: PATCH: _urls again (Re: setopt localoptions noautoremoveslash)



Oliver Kiddle wrote:

> I tracked down the first problem to setopt glob_complete. i.e, the
> following is sufficient to cause the problem:

Ah, that helped. The problem was the `-f' business: it first tried to
match files. That found the `~' and with extendedglob set that made
the string look like a pattern, so the C-code set a flag
(`haspattern') which triggered menu-completion. The fix is to reset
that flag if no matches could be generated.

I also found out that `_tilde' wans't using `_users' yet.

> With respect to the second problem, I think I was just confused by the
> fact that I got a listing which looks like:
> file
> directory
> fred/    joe
> when I expected the file to appear before 'directory' so sorry for not
> checking it before I sent the mail.

A more verbose `description_format' might help here...

Bye
 Sven

diff -u oldsrc/Zle/zle_tricky.c Src/Zle/zle_tricky.c
--- oldsrc/Zle/zle_tricky.c	Mon Oct 18 11:17:17 1999
+++ Src/Zle/zle_tricky.c	Mon Oct 18 11:37:21 1999
@@ -4026,7 +4026,7 @@
     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 @@
     qipre = oqp;
     qisuf = oqs;
 
+    if (mnum == nm)
+	haspattern = ohp;
+
     return (mnum == nm);
 }
 
@@ -6258,6 +6261,7 @@
 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 @@
     uremnode(ccstack, firstnode(ccstack));
     if (cc->matcher)
 	mstack = mstack->next;
+
+    if (mn == mnum)
+	haspattern = ohp;
 }
 
 /* Invalidate the completion list. */
diff -u -r oldcompletion/Base/_tilde Completion/Base/_tilde
--- oldcompletion/Base/_tilde	Mon Oct 18 11:17:45 1999
+++ Completion/Base/_tilde	Mon Oct 18 11:26:30 1999
@@ -39,12 +39,12 @@
   _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
 

--
Sven Wischnowsky                         wischnow@xxxxxxxxxxxxxxxxxxxxxxx



Messages sorted by: Reverse Date, Date, Thread, Author