From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27078 invoked from network); 9 Oct 2001 15:53:01 -0000 Received: from sunsite.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 9 Oct 2001 15:53:01 -0000 Received: (qmail 15842 invoked by alias); 9 Oct 2001 15:52:52 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 15998 Received: (qmail 15829 invoked from network); 9 Oct 2001 15:52:50 -0000 X-VirusChecked: Checked Sender: kiddleo@cav.logica.co.uk Message-ID: <3BC31D30.11F61508@yahoo.co.uk> Date: Tue, 09 Oct 2001 16:52:16 +0100 From: Oliver Kiddle X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.2.15 i686) X-Accept-Language: en MIME-Version: 1.0 To: zsh-workers@sunsite.dk Subject: ignore-line style Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit I use this style: zstyle ':completion:*:*:(cat|diff|less|rm|vi):*' ignore-line true So, filenames I've already mentioned are not offered for completion with these commands. This is useful but there is a problem: With diff, it is quite common to compare a file to another file with the same name in a different directory but this style blocks completion of the second file. e.g: diff file ../fi It needs to include the `../' in the comparison against other words on the line. The patch below adds a `full-word' value for ignore-line to show a possible fix but I think we need more than this patch. This doesn't work if the current line includes words which are patterns for a start. This change is perhaps needed in conjunction with the `other' value too. And it would be useful to be able to ignore the first word (the command) as well as the current one. Next, there could be an option to use "${(q)words[@]}" to quote the words so they aren't used as patterns - useful if the command is being used with noglob or with non-file parameters. Otherwise, working like a real file glob so *.o doesn't match .o would be nice. And maybe a way to define a further pattern which words in _comp_ignore need to match so that you can exclude any non-file arguments such as options. I also wonder whether we shouldn't be passing the previous words as a -F argument to compadd from _diff & co. in the first place. Any thoughts or ideas? Oliver --- Completion/Base/Core/_description Tue May 8 10:12:50 2001 +++ _description Tue Oct 9 15:38:53 2001 @@ -38,6 +38,7 @@ zstyle -s ":completion:${curcontext}:$1" ignore-line hidden && case "$hidden" in true|yes|on|1) _comp_ignore=( "$_comp_ignore[@]" "$words[@]" );; + full-word) _comp_ignore=( "$_comp_ignore[@]" "${(M)words[@]:#$PREFIX*$SUFFIX}" );; current) _comp_ignore=( "$_comp_ignore[@]" "$words[CURRENT]" );; current-shown) [[ "$compstate[old_list]" = *shown* ]] && _comp_ignore=( "$_comp_ignore[@]" "$words[CURRENT]" );; _____________________________________________________________________ This message has been checked for all known viruses by the MessageLabs Virus Scanning Service. For further information visit http://www.messagelabs.com/stats.asp