about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Completion/Core/_tags1
-rw-r--r--Doc/Zsh/compsys.yo7
2 files changed, 6 insertions, 2 deletions
diff --git a/Completion/Core/_tags b/Completion/Core/_tags
index e913095c4..208ec32b1 100644
--- a/Completion/Core/_tags
+++ b/Completion/Core/_tags
@@ -48,6 +48,7 @@ if (( $# )); then
       case $tag in
       -)     nodef=yes;;
       *\(\)) "${${tag%%[ 	]#\(\)}##[ 	]#}" "$@";;
+      \!*)   comptry "${(@)argv:#(${(j:|:)~${=tag[2,-1]}})}";;
       ?*)    comptry ${=tag};;
       esac
     done
diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index 5825d79a1..f532ee2d4 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -1140,9 +1140,12 @@ example(
 specifies that, when completing arguments of the command tt(gunzip),
 files generated by patterns (in this case, those ending in tt(.gz)) and
 any directories will be presented first, and if that fails, any other files
-will be tried.  If any string in the value consists of only a hyphen
+will be tried.  A string starting with an exclamation mark (`tt(!)')
+specifies names of tags that are not to be used -- the effect will be
+the same as if all other possible tags for the context had been
+listed.  If any string in the value consists of only a hyphen
 (`tt(-)'), then only the tags selected by the other strings will be
-generated. Normally all tags not explicitly selected will be tried at
+generated.  Normally all tags not explicitly selected will be tried at
 the end if the selected tags did not generate any matches.  This means 
 that a value of only one hyphen turns off completion in a particular
 context.