Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Quoting problems with _zip (unzip) completer
- X-seq: zsh-workers 27207
- From: Mikael Magnusson <mikachu@xxxxxxxxx>
- To: zsh-workers <zsh-workers@xxxxxxxxxx>
- Subject: Re: Quoting problems with _zip (unzip) completer
- Date: Tue, 4 Aug 2009 18:31:31 +0200
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=vXs0oNkMuISCwO3rrCLrYZVASuJ+OdOJLGw4Rs0ffK8=; b=F37/bJo8CfG1AJ6fcAM6zoGJt42JSaSmiTsI0cXvYkoyMfToCIJutxfE8MiobCCv9T EGQ0OV8W3Ck9DYfl/ETfTieP13k099tKjJEl8nbxj6hYvf1gANPm7b9f8ALLXlPr6j4S YA5oxvuvENuf0u0raXCwBt3Ucc4JY+8NpShFw=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=bqvI118c/PMaXALhJCu8Z6u3qQl2x3WixGKy+st+3Q8G6J7Dk4FlbhZl1F3Y6FOBBg bFxw4Z62CCe2g6ZoyBta9jKDjskx0OEivoU099M4PCMHj7UbxG4eESvX+2xyLYX9uY5t w4rOL53JcujAY318MHPNE5Z67sT7e4kJ7Y8Os=
- In-reply-to: <200908040850.n748oxlc011862@xxxxxxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <237967ef0908031315u72fa3661i17ff7f0107b85b9c@xxxxxxxxxxxxxx> <200908040850.n748oxlc011862@xxxxxxxxxxxxxx>
2009/8/4 Peter Stephenson <pws@xxxxxxx>:
> Mikael Magnusson wrote:
>> % unzip test\[.zip <tab>
>> _zip:117: bad pattern: test[.zip(|.zip|.ZIP)
>> _zip:117: bad pattern: test[.zip(|.zip|.ZIP)
>> _zip:117: bad pattern: test[.zip(|.zip|.ZIP)
>>
>>..
>> @@ -114,7 +114,7 @@ case $state in
>> if [[ $service = zip ]] && (( ! ${+opt_args[-d]} )); then
>> _wanted files expl zfile _files -g
>> '^(#i)*.(zip|xpi|[ejw]ar)(-.)' && return
>> else
>> - zipfile=( $~line[1](|.zip|.ZIP) )
>> + zipfile=( $line[1](|.zip|.ZIP) )
>> [[ -z $zipfile[1] ]] && return 1
>> if [[ $zipfile[1] != $_zip_cache_list ]]; then
>> _zip_cache_name="$zipfile[1]"
>
> The trouble is this stops you using filenames with a ~, among other
> things. This suggests the value of "line" is a bit inconsistent. Sure
> enough if I use ~/tmp/zip/tmp\[.zip $line[1] comes back (using print -r) as
>
> ~/tmp/zip/test[.zip
>
> which is wrong---either the ~ needs to be expanded, or the [ needs to be
> quoted. So this needs tracking internally, unfortunately. If it hits
> the internal completion quoting system we're probably stuck---I spent
> weeks looking at that a couple of years ago and got virtually nowhere.
> However, it may not be that bad in this case.
I would argue it is better without the $~; I can replace the ~ with
$PWD on the commandline, but I can't rename the file to not have
brackets without actually renaming it.
I came up with a reproducible test case for the other issue:
% mkdir '[test] a name with spaces'
% touch '[test] a name with spaces'/{'a file with spaces','another
file with spaces',a file with a unique name','afilewithoutspaces'}
% zip -r test.zip '[test] a name with spaces'
% unzip test.zip <tab> # -> gives "\[test\]\ a\ name\ with\ spaces "
with the space after
% unzip test.zip \[test\]\ a\ name\ with\ spaces<tab> # -> just adds
the space back
% unzip test.zip \[test\]\ a\ name\ with\ spaces/<tab>
# -> \[test\]\ a\ name\ with\ spaces/afilewithoutspaces
% unzip test.zip \[test\]\ a\ name\ with\ spaces/a<tab>
# same
% unzip test.zip \[test\]\ a\ name\ with\ spaces/an<tab>
# -> "\[test\]\ a\ name\ with\ spaces/another\ file\ with\ spaces "
# (as a unique match)
% unzip test.zip \[test\]\ a\ name\ with\ spaces/a\ file<tab><tab><tab><tab>
# just beeps, ie no matches
calling the directory 'normaldirectoryname' causes the directory to
get a slash appended at the first step, but the files inside then
behave exactly the same as above.
According to _complete_debug the whole array of filenames gets passed
down along the chain, it should be available here for some time:
http://mika.l3ib.org/zsh-zip-complete-debug.txt
--
Mikael Magnusson
Messages sorted by:
Reverse Date,
Date,
Thread,
Author