about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--Completion/Zsh/Context/_value8
-rw-r--r--Doc/Zsh/compsys.yo273
3 files changed, 143 insertions, 144 deletions
diff --git a/ChangeLog b/ChangeLog
index 11ad17f6d..da5117650 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2003-02-25  Oliver Kiddle  <opk@zsh.org>
+
+	* unposted: Completion/Zsh/Context/_value, Doc/Zsh/compsys.yo:
+	fix out of date documentation and move description of special
+	contexts from _complete's to #compdef's description
+
 2003-02-24  Peter Stephenson  <pws@csr.com>
 
 	* 18230: Completion/Unix/Type/_path_files: If globbing failed
diff --git a/Completion/Zsh/Context/_value b/Completion/Zsh/Context/_value
index 15732f22c..47fbc1749 100644
--- a/Completion/Zsh/Context/_value
+++ b/Completion/Zsh/Context/_value
@@ -1,10 +1,10 @@
 #compdef -value- -array-value- -value-,-default-,-default-
 
 # You can customize completion for different parameters by writing
-# functions with the tag-line `#compdef -T value <name>'.
-# The function searches for the strings `<param-name>:<param-type>'
-# and `<param-name>'. If the line contains a command (as in `make foo=<TAB>')
-# the string `<command>:<param-name>:<param-type>' is also searched for.
+# functions with the tag-line `#compdef -value-,<name>,<command>' where
+# <name> is the name of the parameter (or name-key when completing an
+# associative array value) and <command> is either `-default-' or the
+# name of the command from the command-line.
 
 if [[ "$service" != -value-,* ]]; then
   local strs ctx=
diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index a8a1bbe42..7e0e8b452 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -159,13 +159,12 @@ completion system and will not be treated specially.
 The tags are:
 
 startitem()
-item(tt(#compdef) var(names...) [ tt(-[pP]) var(patterns...) [ tt(-N)
-var(names...) ] ])(
+item(tt(#compdef) var(names...) [ tt(-[pP]) var(patterns...) [ tt(-N) var(names...) ] ])(
 The file will be made autoloadable and the function defined 
 in it will be called when completing var(names), each of which is
 either the name of a command whose arguments are to be completed or one of
 a number of special contexts in the form tt(-)var(context)tt(-) described
-below for the tt(_complete) function.
+below.
 
 Each var(name) may also be of the form `var(cmd)tt(=)var(service)'.  This
 is used by functions that offer multiple services, i.e. different
@@ -250,6 +249,131 @@ ifnzman(noderef(Shell Builtin Commands))\
 .  This forces the functions to be autoloaded the way zsh normally
 loads functions.
 
+The special contexts for which completion functions can be defined are:
+
+startitem()
+kindex(-array-value-, completion context)
+item(tt(-array-value-))(
+for completion on the right hand side of an array-assignment
+(`tt(foo=LPAR()...RPAR())').
+)
+kindex(-brace-parameter-, completion context)
+item(tt(-brace-parameter-))(
+for completing the name of a parameter expansion within braces
+(`tt(${...})').
+)
+kindex(-assign-parameter-, completion context)
+item(tt(-assign-parameter-))(
+for completing the name of a parameter in an assignment.
+)
+kindex(-command-, completion context)
+item(tt(-command-))(
+for completing in a command position.
+)
+kindex(-condition-, completion context)
+item(tt(-condition-))(
+for completion inside conditions (`tt([[...]])').
+)
+kindex(-default-, completion context)
+item(tt(-default-))(
+for generating completions when no special completion function is used.
+)
+kindex(-equal-, completion context)
+item(tt(-equal-))(
+for completion of words beginning with an equals sign
+)
+kindex(-first-, completion context)
+item(tt(-first-))(
+for adding completions before any other completion functions are tried;
+if this function sets the tt(_compskip) parameter to tt(all), no other
+completion functions will be called, if it is set to a string
+containing the substring tt(patterns), no pattern completion functions
+will be called, and if it is set to a string containing tt(default) the
+function for the `tt(-default-)' context will not be called, but
+functions defined for commands will.
+)
+kindex(-math-, completion context)
+item(tt(-math-))(
+for completion inside mathematical contexts, such as
+`tt(LPAR()LPAR())...tt(RPAR()RPAR())'.
+)
+kindex(-parameter-, completion context)
+item(tt(-parameter-))(
+for completing the name of a parameter expansion (`tt($...)').
+)
+kindex(-redirect-, completion context)
+item(tt(-redirect-))(
+for completion after a redirection operator.
+)
+kindex(-subscript-, completion context)
+item(tt(-subscript-))(
+for completion inside subscripts.
+)
+kindex(-tilde-, completion context)
+item(tt(-tilde-))(
+for completion after a tilde (`tt(~)') character, but before a slash.
+)
+kindex(-value-, completion context)
+item(tt(-value-))(
+for completion on the right hand side of an assignment.
+)
+enditem()
+
+Default implementations are supplied for each of these
+contexts, in most cases named after the context itself
+(e.g. completion for the `tt(-tilde-)' context is done by the function 
+named `tt(_tilde)').
+
+The functions for some contexts re-dispatch by calling the function
+tt(_dispatch) to offer more specific context information.  This is
+done by appending the parts of extra information to the name of the
+context, separated by commas.  Currently, only the function
+completing redirection arguments (tt(_redirect)) and the function
+completing values in parameter assignments (tt(_value)) use this
+feature.  The former uses contexts of the form
+`tt(-redirect-,)var(op)tt(,)var(command)', where var(op) is the
+redirection operator and var(command) is the name of the command on
+the line.  If there isn't a command yet, the var(command) field will
+be empty.  The function completing values uses contexts of the form
+`tt(-value-,)var(name)tt(,)var(command)', where var(name) is the name
+of the parameter (or `var(name)tt(-)var(key)' when completing a
+value of an associative array in an assignment like
+`tt(assoc=LPAR()key <TAB>)').  The var(command) part is the name of
+the command from the line again in completions like `tt(make
+CFLAGS=<TAB>)' and is empty for normal assignments.
+
+To simplify defining functions for multiple cases, the functions
+tt(_redirect) and tt(_value) will make tt(_dispatch) try these context
+names more than once with each of the parts once set to the string
+tt(-default-).  For example, when completing after `tt(foo=<TAB>)',
+tt(_value) will try the names `tt(-value-,foo,)' (note the empty
+var(command) part), `tt(-value-,foo,-default-)' and
+`tt(-value-,-default-,-default-)'.  Also note the order in which the
+contexts are tried.
+
+As an example:
+
+example(compdef '_files -g "*.log"' '-redirect-,2>,-default-')
+
+could be used to complete files matching `tt(*.log)' when completing
+after `tt(2> <TAB>)'.
+
+And:
+
+example(compdef _foo -value-,-default-,-default-)
+
+says that the function tt(_foo) is to be called to provide completion
+for the values of parameters for which no special function has been
+defined.
+
+In any case the most specific context name will be used inside the
+context string used for looking up styles.  For example:
+
+example(zstyle ':completion:*:*:-redirect-,2>,*:*' file-patterns '*.log')
+
+is another way to make completion after `tt(2> <TAB>)' complete files
+matching `tt(*.log)'.
+
 subsect(Functions)
 
 The tt(compinit) file defines the following function, which may
@@ -258,7 +382,7 @@ also be called directly by the user.
 findex(compdef)
 cindex(completion system, adding definitions)
 startitem()
-xitem(tt(compdef) [ tt(-an) ] var(function names...) [ tt(-[pP]) var(patterns...) ])
+xitem(tt(compdef) [ tt(-an) ] var(function names...) [ tt(-[pP]) var(patterns...) [ tt(-N) var(names...) ] ])
 xitem(tt(compdef -d) var(names...))
 xitem(tt(compdef -k) [ tt(-an) ] var(function style key-sequences...))
 item(tt(compdef -K) [ tt(-an) ] var(function name style key-sequences ...))(
@@ -390,7 +514,7 @@ for more information).
 itemiz(\
 The var(context) or var(command).  This is either one of the special
 context names such as tt(-condition-) as explained for the
-tt(_complete) completer below, or the name of the command we are
+tt(#compdef) tag above, or the name of the command we are
 completing arguments for.  Completion functions for commands that have
 sub-commands usually modify this field to contain the name of the
 command followed by a minus sign and the sub-command (e.g. the
@@ -2528,132 +2652,8 @@ This gives the normal completion behaviour.
 To complete arguments of commands, tt(_complete) uses the utility function
 tt(_normal), which is in turn responsible for finding the particular
 function; it is described below.  Various contexts of the form
-tt(-)var(context)tt(-), as mentioned above for the tt(#compdef) tag, are
-handled specially.  These are:
-
-startitem()
-kindex(-array-value-, completion context)
-item(tt(-array-value-))(
-for completion on the right hand side of an array-assignment
-(`tt(foo=LPAR()...RPAR())').
-)
-kindex(-brace-parameter-, completion context)
-item(tt(-brace-parameter-))(
-for completing the name of a parameter expansion within braces
-(`tt(${...})').
-)
-kindex(-assign-parameter-, completion context)
-item(tt(-assign-parameter-))(
-for completing the name of a parameter in an assignment.
-)
-kindex(-command-, completion context)
-item(tt(-command-))(
-for completing in a command position.
-)
-kindex(-condition-, completion context)
-item(tt(-condition-))(
-for completion inside conditions (`tt([[...]])').
-)
-kindex(-default-, completion context)
-item(tt(-default-))(
-for generating completions when no special completion function is used.
-)
-kindex(-equal-, completion context)
-item(tt(-equal-))(
-for completion of words beginning with an equals sign
-)
-kindex(-first-, completion context)
-item(tt(-first-))(
-for adding completions before any other completion functions are
-tried; if this
-function sets the tt(_compskip) parameter to tt(all), no other
-completion functions will be called, if it is set to a string
-containing the substring tt(patterns), no pattern completion functions
-will be called, and if it is set to a string containing tt(default)
-the function for the `tt(-default-)' context will not be called, but
-functions defined for commands will.
-)
-kindex(-math-, completion context)
-item(tt(-math-))(
-for completion inside mathematical contexts, such as
-`tt(LPAR()LPAR())...tt(RPAR()RPAR())'.
-)
-kindex(-parameter-, completion context)
-item(tt(-parameter-))(
-for completing the name of a parameter expansion (`tt($...)').
-)
-kindex(-redirect-, completion context)
-item(tt(-redirect-))(
-for completion after a redirection operator.
-)
-kindex(-subscript-, completion context)
-item(tt(-subscript-))(
-for completion inside subscripts.
-)
-kindex(-tilde-, completion context)
-item(tt(-tilde-))(
-for completion after a tilde (`tt(~)') character, but before a slash.
-)
-kindex(-value-, completion context)
-item(tt(-value-))(
-for completion on the right hand side of an assignment.
-)
-enditem()
-
-Default implementations are supplied for each of these
-contexts, in most cases named after the context itself
-(e.g. completion for the `tt(-tilde-)' context is done by the function 
-named `tt(_tilde)').
-
-The functions for some contexts re-dispatch by calling the function
-tt(_dispatch) to offer more specific context information.  This is
-done by appending the parts of extra information to the name of the
-context, separated by commas.  Currently, only the function
-completing redirection arguments (tt(_redirect)) and the function
-completing values in parameter assignments (tt(_value)) use this
-feature.  The former uses contexts of the form
-`tt(-redirect-,)var(op)tt(,)var(command)', where var(op) is the
-redirection operator and var(command) is the name of the command on
-the line.  If there isn't a command yet, the var(command) field will
-be empty.  The function completing values uses contexts of the form
-`tt(-value-,)var(name)tt(,)var(command)', where var(name) is the name
-of the parameter (or `var(name)tt(-)var(key)' when completing a
-value of an associative array in an assignment like
-`tt(assoc=LPAR()key <TAB>)').  The var(command) part is the name of
-the command from the line again in completions like `tt(make
-CFLAGS=<TAB>)' and is empty for normal assignments.
-
-To simplify defining functions for multiple cases, the functions
-tt(_redirect) and tt(_value) will make tt(_dispatch) try these context
-names more than once with each of the parts once set to the string
-tt(-default-).  For example, when completing after `tt(foo=<TAB>)',
-tt(_value) will try the names `tt(-value-,foo,)' (note the empty
-var(command) part), `tt(-value-,foo,-default-)' and
-`tt(-value-,-default-,-default-)'.  Also note the order in which the
-contexts are tried.
-
-As an example:
-
-example(compdef '_files -g "*.log"' '-redirect-,2>,-default-')
-
-could be used to complete files matching `tt(*.log)' when completing
-after `tt(2> <TAB>)'.
-
-And:
-
-example(compdef _foo -value-,-default-,-default-)
-
-says that the function tt(_foo) is to be called to provide completion
-for the values of parameters for which no special function has been
-defined.
-
-In any case the most specific context name will be used inside the
-context string used for looking up styles.  For example:
-
-example(zstyle ':completion:*:*:-redirect-,2>,*:*' file-patterns '*.log')
-
-is another way to make completion after `tt(2> <TAB>)' complete files
-matching `tt(*.log)'.
+tt(-)var(context)tt(-) are handled specifically. These are all
+mentioned above for the tt(#compdef) tag.
 
 Before trying to find a function for a specific context, tt(_complete) 
 checks if the parameter `tt(compcontext)' is set.  If it is set to an
@@ -3914,7 +3914,7 @@ return ret
 )
 )
 findex(_normal)
-item(tt(_normal) [ var(type) ])(
+item(tt(_normal))(
 This function is used for normal command completion.  It has two tasks:
 completing the first word on the command line as the name of a command, and
 completing the arguments to this command.  In the second case, the name of
@@ -3927,19 +3927,12 @@ treat a range of words as a command line.  For example, the function to
 complete after the pre-command specifiers such as tt(nohup) removes the
 first word from the tt(words) array, decrements the tt(CURRENT) parameter,
 then calls tt(_normal) again, with the effect that `tt(nohup) var(cmd ...)'
-is treated the same way was `var(cmd ...)'.
+is treated the same way as `var(cmd ...)'.
 
 If the command name matches a pattern, the parameter tt(_compskip) is
 checked after the call to the corresponding completion function.  This has
 the same effect here as in the tt(-first-) context: if it is set, no more
 completion functions are called even if there are no matches so far.
-
-If the optional var(type) argument is given, tt(_normal) does not use
-the normal associative arrays for its lookup but instead uses the ones
-defined for the given var(type), which may currently be one of
-tt(comps) for normal completion, tt(redirs) for completion of
-command-specific redirections or tt(values) to complete on the right
-hand side of parameter assignments.
 )
 findex(_options)
 item(tt(_options))(