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

Re: Another keep-prefix problem

} On Thu, 26 Apr 2001, Oliver Kiddle wrote:
} > For _expand I use the glob 1, substitute 1, suffix 1, accept-exact
} > false and tag-order all-expansions styles. keep-prefix changed is
} > the default so that too.
} >
} > To test I did:
} > c1=/home
} > c3=cvs
} > Now,
} > cd $c1/kiddleo/$c3/<tab> expands both $c1 and $c3 which I don't want.

Then as I understand it you don't want `suffix 1' but rather `suffix 0'
and `keep-prefix 1'.

The confusion may be that "suffix" here does not mean "everything after
the rightmost slash".  It means "everything after the LEFTMOST slash."

     This is used by the _expand completer if the word starts with a
     tilde or parameter expansion. If it is set to `true', the word will
     only be expanded if it doesn't have a suffix, i.e. if it is
     something like `~foo' or `$foo', but not if it is `~foo/' or
     `$foo/bar', unless that suffix itself contains characters eligible
     for expansion.  The default for this style is `true'.

Hmm.  Looking more closely at the code, this is messed up.  It matches
up to the rightmost slash if the string begins with `~', but only up to
the leftmost slash when it begins with a `$', unless all the parameter
references are in `${...}' form, in which case it matches everything
from the lefmost `${' to the rightmost `}' (even if the rightmost `}' is
part of a brace-expansion rather than a parameter-expansion, I think),
as long as there is something after the rightmost `}'.

I spent a while (too long) thinking about how possibly to rewrite this,
but didn't come up with anything helpful.

On Apr 26,  8:43am, Wayne Davison wrote:
} Your example would also fail if you just had the $c3 variable (i.e.
} any variable not at the start of the word).  I would like the default
} setting of "suffix 1" to work like the "expand-or-complete" code's
} expander in this regard.

Which means, I think, that you would like the default setting of suffix
to be false rather than true, and the default setting of keep-prefix to
be true rather than "changed".  But I'm not entirely sure of that ...

Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com

Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net   

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