about summary refs log tree commit diff
path: root/Doc/Zsh/compsys.yo
diff options
context:
space:
mode:
Diffstat (limited to 'Doc/Zsh/compsys.yo')
-rw-r--r--Doc/Zsh/compsys.yo95
1 files changed, 95 insertions, 0 deletions
diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index fe56f47df..913bc95ea 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -1011,6 +1011,93 @@ arguments) should be printed, the configuration key
 tt(describe_values) is used in the same way as the key
 tt(describe_options) is used by the tt(_arguments) function.
 )
+item(tt(_regex_arguments))(
+This function is a compiler to generate a completion function.  The
+first argument specifies the name of generated function and rest arguments
+specifies a completion specification in the notation like regular
+expression with acions.  The generated function is formed as a state
+machine whose state corresponds each part of the specification of the
+completion. The state machine runs on a command line and evaluate actions
+when the command line is exhausted.  The command line is represented by
+single string that is generated by concatinating unquoted tt(words)
+(before tt(CURRENT)) and tt(PREFIX) using the null character as a
+separator.
+
+The specification is one of following forms.  (Metacharacters such as
+`tt(LPAR())', `tt(RPAR())', `tt(#)' and `tt(|)' should be quoted.)
+startitem()
+item(tt(/)var(pattern)tt(/) [tt(%)var(lookahead)tt(%)] [tt(-)var(guard)] [tt(:)var(action)])(
+This is a primitive element for the specification and corresponds to the
+state of the compiled state machine.  When the state machine is trying to
+enter to this state, the state machine tries to match the pattern
+`tt((#b)LPAR()(#B))var(pattern)tt(RPAR()(#B))var(lookahead)tt(*)' against to
+the command line string.  If it is matched, `var(guard)' is evaluated and
+its return status is examined.  If it is success, the state machine is
+entered to this state.  Otherwise when the pattern match or the guard
+evaluation is failed, the state machine is failed to enter to this state
+and other candidates are tried.  If `var(pattern)' is the string `tt([])',
+it is treated as the pattern which never match.
+
+When the state machine is entered to this state, the left part of the
+command line string matched against to `var(pattern)' is removed and next
+states of this state are tried to enter with inner-to-outer, left-to-right
+fashion.
+
+If all tries are failed and remaining command line string contains no null
+character, completion target is restricted to correspondence of remaining
+command line string and `var(action)'s for the target is evaluated.  Since
+this state may not remove non-empty string from command line string,
+prior states and its neighborhoods may have `var(actions)'s for the
+target.
+)
+item(tt(/)var(pattern)tt(/+) [tt(%)var(lookahead)tt(%)] [tt(-)var(guard)] [tt(:)var(action)])(
+This is similar to `tt(/)var(pattern)tt(/) ...' but the left part of
+command line string is also considered as part of the completion target.
+)
+item(tt(/)var(pattern)tt(/-) [tt(%)var(lookahead)tt(%)] [tt(-)var(guard)] [tt(:)var(action)])(
+This is similar to `tt(/)var(pattern)tt(/) ...' but `var(action)'s of this
+and prior states are ignored even if following state's `var(pattern)'
+matches empty string.
+)
+item(tt(LPAR()) var(spec) tt(RPAR()))(
+This groups `var(spec)'.
+)
+item(var(spec) tt(#))(
+This is repetation of `var(spec)'.
+)
+item(var(spec) var(spec))(
+This is concatination of two `var(spec)'s.
+)
+item(var(spec) tt(|) var(spec))(
+This is alternation of two `var(spec)'s.
+)
+enditem()
+)
+item(tt(_combination))(
+This function uses a array to represent combinations of completing texts.
+The first argument is a name of the array optionally appended completing
+field names separated by colon.  If it contains no colon, it is assumed
+that the name is formed as `var(prefix)_var(fieldname)_..._var(fieldname)'
+which `var(prefix)' and `var(fieldname)'s does not contain a underscore.
+A each element of the array should be colon-separated completing texts
+which correspond to the field names.  The option `tt(-s) var(sepchar)'
+can be given before the array name to change the delimiter in the array
+element from colon.
+
+Since second argument, zero or more arguments formed as
+`var(fieldname)tt(=)var(pattern)' can be given.  It restricts completion
+candidates from the array by maching a text that corresponds to
+`var(fieldname)' against to `var(pattern)'.  If `tt(:)var(num)' is
+specified between `var(fieldname)' and `tt(=)', `var(num)'th field in
+named as `var(fieldname)' is used instead of the first.
+
+After above arguments, completing field name should be given.  It may have
+suffix `tt(:)var(num)' to use a arbitrary field instead of the first as
+above.
+
+If there are no array element to match all of specified pattern and the
+function `tt(_)var(fieldname)' exists, the function is called.
+)
 enditem()
 
 texinode(Completion Directories)(Bindable Commands)(Completion Functions)(Completion System)
@@ -1527,4 +1614,12 @@ is set to a non-empty value, this function will not try to use the
 tt(stat) module to generate only names of modified files in the
 appropriate places.
 )
+item(tt(regex_arguments_path))(
+This specifies cache directory for the tt(_regex_arguments).  If it is
+empty, tt($HOME/.zsh/regex_arguments) is assumed.
+
+If tt(regex_arguments_path) is an existing writable directory,
+tt(_regex_arguments) sotores a compiled function definition into the
+directory.
+)
 enditem()