Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Bug#389111: autocompletion fails on non-printable characters in directories
- X-seq: zsh-workers 22767
- From: Andrey Borzenkov <arvidjaar@xxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxx, David Madore <david.madore@xxxxxx>, 389111-forwarded@xxxxxxxxxxxxxxx
- Subject: Re: Bug#389111: autocompletion fails on non-printable characters in directories
- Date: Sun, 24 Sep 2006 11:11:21 +0400
- In-reply-to: <20060924014228.GA10845@xxxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <20060923230155.GA19190@xxxxxxxxxxxxxx> <20060924014228.GA10845@xxxxxxxxxxx>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Sunday 24 September 2006 05:42, Clint Adams wrote:
> > zsh seems to autocomplete non-printable characters by representing
> > them as something like $'\377', but then it fails to understand them
> > when autocompleting one further level of directories.
> >
> > For example, suppose we start in an empty directory (/tmp/test, say)
> > and use no config file at all (cd /tmp/test; HOME=`pwd` zsh), just to
> > make sure we load only the base completion module: then try
> >
> > % export LC_ALL=C
> > % mkdir "`/usr/bin/printf 'x\\377z'`"
> > % touch "`/usr/bin/printf 'x\\377z'`"/corge
> > % cat x$'\377'z/
> >
> > It will complete so far (if you type x<TAB>, it completes to
> > x$'\377'z/ as shown above), but no further (the "corge" part never
> > appears).
>
> x$'\377'z is getting munged to "x$\\377z" and then matching
> [^][*?#^\|\<\>\\]#(\`[^\`]#\`|\$)*/* in _path_files.
Even worse:
{pts/2}% ll $'xTAB
{pts/2}% ll $X11HOME/
Completing parameter
X11HOME XAUTHORITY XCURSOR_THEME XDG_CONFIG_DIRS
XDM_MANAGED XkbModel XMODIFIERS
While
{pts/2}% print $'x
quote>
The quote is apparently removed in calcompfunc():
tmp = (linwhat == IN_MATH ? dupstring(s) : multiquote(s, 0));
and similar.
$'...' is treated as yet another kind of quoting by the rest of zsh but not
completion. It maintains quoting stack in compqstack; but this is
one-character per quoting level. If we agree to denote quoting for $'...'
as '$' it may be possible to squeeze in current code.
- -andrey
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
iD8DBQFFFi+gR6LMutpd94wRAsmLAKDHEqZsBEajXiCOV9m85DkmaldCFgCgqZ1i
HtOkL5uoW1FLU/VSClxgr/c=
=C992
-----END PGP SIGNATURE-----
Messages sorted by:
Reverse Date,
Date,
Thread,
Author