zsh-users
 help / color / mirror / code / Atom feed
From: Chris Nebel <c.nebel@mac.com>
To: zsh-users <zsh-users@zsh.org>
Subject: Re: Use of (e:...:) glob qualifier with _files -g?
Date: Mon, 4 Nov 2019 12:50:33 -0800	[thread overview]
Message-ID: <E8467C83-D7F4-49A1-A5B5-32B7428FAF61@mac.com> (raw)
In-Reply-To: <23662F36-B0E7-43FE-81AF-86C2C9D03044@mac.com>

And I actually didn’t realize this until you pointed me to the source, but darwinup *will not install* anything with an extension it doesn’t know about — it never tries to sniff the file contents.  So, I really do have a finite list to deal with, and can just list them all.  I’m still curious to know the answer to the zstyle question, though.

—Chris N.

> On Nov 4, 2019, at 12:41 PM, Chris Nebel <c.nebel@mac.com> wrote:
> 
> Ok, fair.  I’ve been worried that while on the one hand I’d like to complete only supported archive files, on the other hand people use all sorts of mutant extensions for them, especially when compressed, hence just sniffing the file contents.  However, a not-terribly-complicated pattern will cover a lot of the cases.
> 
> My problem then becomes how to let people configure the completion so they can use any extensions I didn’t cover.  I’m guessing that the answer has something to do with zstyle and the “file-patterns” style, but I’m having trouble turning the examples in zshcompsys(1) into something that works.  To make this a bit more concrete, say my completion code looks something like this:
> 
> 	files -g '*.(cpio|tar|xar)'
> 
> …and someone wants to also match “*.cpgz” files, what would they do?
> 
> 
> —Chris N.
> 
>> On Nov 3, 2019, at 10:56 PM, dana <dana@dana.is> wrote:
>> 
>> On 4 Nov 2019, at 00:08, Chris Nebel <c.nebel@mac.com> wrote:
>>> *(e:'file -bz $REPLY | grep -wq archive')
>> 
>> I'm not sure that's even a good idea. You'd be running an external process
>> against every single file the function encountered. On network drives or in
>> directories with many files that could take a while.
>> 
>> Also, i've never used darwinup, but it looks to me like it supports only a
>> select number of archive formats, which are guessed based on the file
>> extension and enumerated here:
>> 
>> https://github.com/macosforge/darwinbuild/blob/master/darwinup/Archive.cpp#L323
>> 
>> If that's the case, you should be able to just use '*.(tar|zip|whatever)',
>> which is much simpler and faster.
>> 
>> With that said, to answer your actual question, i think the reason it doesn't
>> work is that _files has an undocumented feature where if it detects unescaped
>> white space in the pattern it assumes that you're trying to supply *multiple*
>> patterns to be transformed into a brace expansion. Maybe there is some very
>> fancy quoting you can do to make that work, but at that point i think using
>> the + qualifier would be easier.
>> 
>> dana
>> 
> 


  reply	other threads:[~2019-11-04 20:51 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-04  6:08 Chris Nebel
2019-11-04  6:56 ` dana
2019-11-04 20:41   ` Chris Nebel
2019-11-04 20:50     ` Chris Nebel [this message]
2019-11-04 21:24     ` Bart Schaefer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E8467C83-D7F4-49A1-A5B5-32B7428FAF61@mac.com \
    --to=c.nebel@mac.com \
    --cc=zsh-users@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).