From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 385 invoked by alias); 16 Feb 2017 17:00:11 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 22469 Received: (qmail 29292 invoked from network); 16 Feb 2017 17:00:11 -0000 X-Qmail-Scanner-Diagnostics: from mail-qt0-f180.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(209.85.216.180):SA:0(-0.7/5.0):. Processed in 2.382844 secs); 16 Feb 2017 17:00:11 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: mikachu@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _netblocks.google.com designates 209.85.216.180 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=RjhWMVi+vk0FZMPotuPQ29UPKDI1/OAu7p+4BvuNv9U=; b=AeOVNceYFkTd6GJ6yaAeFzev0MjjJN5Oxc1ndL9pdDBkhJntZrhg5Qv1EYnnubTtQT dt2Ba9axm44xad10w0YCfeghWdzHA/UIq90DZVbgNTS0psegyzFVHGBmMH2UqGGuMETT Iz/DzoCnilWJxJYMo/ghfWndJ0G2ERhH8COxMGsNs3XmRF2RKrJNLAnKx514A3rX41KK wQDx1BaPpqwxc1JjBnx2Q8UA4NCnR5JGoZEI9zqhyPzZ//uiArVCfkxSzUG1Ojie7oCs zM39TI4V0ibXi2is2tjRh/3kmt9d7hnKT7oPqLze4NJqOG375BQRtghsc7dA9R/KWcC8 bSag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=RjhWMVi+vk0FZMPotuPQ29UPKDI1/OAu7p+4BvuNv9U=; b=rdSF1yWrJ0n/MF1694CShpvS8u8xbYPTq7PQKSxoU9VT3sRJ3Vrhon9rONttEhHlcf 3YTjWX3956rlPbnpYv9kGr4LLUDFFKjU+ntvM8V0Mya/YllOfzG2jmlK0ievfsNKgcJo mUBA23Qh6irKypyOMI5jjncV0eUZ4hpxpa3zdaIQ4aScScN26PDDLPjTcDft6MUbZmJd 6oZ+bSoTPtkCMYnsyFqAk5Ld3DGPS/VjYh5+P34d1PWE9Osot+DkB/Wm3340MBRIus4e aFvX+oyn0CZb67Cj2MZT9ML4n+lv+xfRTerHc9/nB+CVzOuqFySjooF9DrmKAaGhmQV8 GtTw== X-Gm-Message-State: AMke39lLXgNRDEfrJ1MPONlpZcLILRrqDaCa8FyF4zrXNoix3kZ4yQCtI/ifhwc/U2vYk6WKYDFL6N2DCJRaMw== X-Received: by 10.200.39.25 with SMTP id g25mr2138008qtg.228.1487255182218; Thu, 16 Feb 2017 06:26:22 -0800 (PST) MIME-Version: 1.0 In-Reply-To: References: From: Mikael Magnusson Date: Thu, 16 Feb 2017 15:26:21 +0100 Message-ID: Subject: Re: How to disable certain completion tags? To: martin@mvath.de Cc: Zsh Users Content-Type: text/plain; charset=UTF-8 On Thu, Feb 16, 2017 at 11:13 AM, Martin Vaeth wrote: > I have written a completion for a complex command; calculating > completions for some options of this command needs a long time > (and produces a huge list). > > Some of these options should share a common tag, and I want that the > user has a way to disable the completion of that tag so that the > long time is not required when the user presses tab accidentally > or if he uses something like https://github.com/hchbaw/auto-fu.zsh/ > > To my knowledge, it should be possible to use the tag mechanism > to achieve this, but it does not seem to work as I had understood it. > > Here is a minimal example of a completion file demonstrating how > I attempt to achieve the goal with the tag name "foos" for the > command "dummy"; the "sleep" should indicate where the command > used in my actual code takes a long time. > > #compdef dummy > local curcontext="$curcontext" state state_descr line expl > typeset -A opt_args > _arguments -C : '--foo=[desc]:some foo:->foo' > ret=$? > case $state in > (foo) > _tags foos > _tags && { > _description foos expl 'available foo' > compadd "$expl[@]" - $(sleep 5; echo foo1 foo2) > } && ret=0;; > esac > return ret > > My understanding is that the second "_tags" should end with nonzero > state if the user has disabled all tags from the list (and the list > should consist only of "foos" due to the first "_tags foos" command). > However, if I (as user) attempt to disable the "foos" tag for the > "dummy" completion with something like > > zstyle ':completion:*:*:dummy:*' tag-order '' > > it does not show any effect. I think once (some years ago, I was now not > able to reproduce) I had found some zstyle command which disabled the > completion, but nevertheless "dummy foo=" had taken a long time > to complete (to nothing) with the above code. Does this help? In addition to tag names, each string in the value may take one of the following forms: - If any value consists of only a hyphen, then only the tags specified in the other values are generated. Normally all tags not explicitly selected are tried last if the specified tags fail to generate any matches. This means that a single value consisting only of a single hyphen turns off completion. -- Mikael Magnusson