From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7349 invoked by alias); 16 Feb 2017 10:13:59 -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: 22468 Received: (qmail 18982 invoked from network); 16 Feb 2017 10:13:59 -0000 X-Qmail-Scanner-Diagnostics: from 195.159.176.226 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(195.159.176.226):SA:0(1.3/5.0):. Processed in 1.921306 secs); 16 Feb 2017 10:13:59 -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=1.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, RDNS_NONE autolearn=no autolearn_force=no version=3.4.1 X-Envelope-From: gcszu-zsh-users@m.gmane.org X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: none (ns1.primenet.com.au: domain at m.gmane.org does not designate permitted sender hosts) X-Injected-Via-Gmane: http://gmane.org/ To: zsh-users@zsh.org From: Martin Vaeth Subject: How to disable certain completion tags? Date: Thu, 16 Feb 2017 10:13:32 +0000 (UTC) Message-ID: Reply-To: martin@mvath.de X-Complaints-To: usenet@blaine.gmane.org User-Agent: slrn/pre1.0.0-26 (Linux) 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.