mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 18:10:56 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			4019 lines
		
	
	
	
		
			178 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			4019 lines
		
	
	
	
		
			178 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| texinode(Completion System)(Completion Using compctl)(Completion Widgets)(Top)
 | |
| chapter(Completion System)
 | |
| cindex(completion system)
 | |
| cindex(completion, programmable)
 | |
| cindex(completion, controlling)
 | |
| sect(Description)
 | |
| 
 | |
| This describes the shell code for the new completion system.  It consists
 | |
| of various shell functions; those beginning `tt(comp)' are to be called
 | |
| directly by the user, while those beginning `tt(_)' are called by the
 | |
| completion code.  The shell functions of the second set which implement
 | |
| completion behaviour and which may be bound to keystrokes, are referred to
 | |
| as `widgets'.
 | |
| 
 | |
| startmenu()
 | |
| menu(Initialization)
 | |
| menu(Completion System Configuration)
 | |
| menu(Control Functions)
 | |
| menu(Bindable Commands)
 | |
| menu(Completion Functions)
 | |
| menu(Completion Directories)
 | |
| endmenu()
 | |
| 
 | |
| texinode(Initialization)(Completion System Configuration)()(Completion System)
 | |
| sect(Initialization)
 | |
| findex(compinstall)
 | |
| cindex(completion system, installing)
 | |
| 
 | |
| If the system was installed completely, it should be enough to
 | |
| call the shell function tt(compinit) from your initialization file; see the
 | |
| next section.  However, the function tt(compinstall) can be run by a user
 | |
| to configure various aspects of the completion system.
 | |
| 
 | |
| Usually, tt(compinstall) will insert code into tt(.zshrc), although if
 | |
| that is not writable it will save it in another file and tell you that
 | |
| file's location.  Note that it is up to you to make sure that the lines
 | |
| added to tt(.zshrc) are actually run; you may, for example, need to move
 | |
| them to an earlier place in the file if tt(.zshrc) usually returns early.
 | |
| So long as you keep them all together (including the comment lines at the
 | |
| start and finish), you can rerun tt(compinstall) and it will correctly
 | |
| locate and modify these lines.  Note, however, that any code you add to
 | |
| this section by hand is likely to be lost if you rerun tt(compinstall),
 | |
| although lines using the command `tt(zstyle)' should be gracefully handled.
 | |
| 
 | |
| The new code will take effect next time you start the shell, or run
 | |
| tt(.zshrc) by hand; there is also an option to make them take effect
 | |
| immediately.  However, if tt(compinstall) has removed definitions, you will
 | |
| need to restart the shell to see the changes.
 | |
| 
 | |
| To run tt(compinstall) you will need to make sure it is in a directory
 | |
| mentioned in your tt(fpath) parameter, which should already be the case if
 | |
| zsh was properly configured as long as your startup files do not remove the
 | |
| appropriate directories from tt(fpath).  Then it must be autoloaded
 | |
| (`tt(autoload -U compinstall)' is recommended).  You can abort the
 | |
| installation any time you are being prompted for information, and your
 | |
| tt(.zshrc) will not be altered at all; changes only take place right at the
 | |
| end, where you are specifically asked for confirmation.
 | |
| 
 | |
| subsect(Use of compinit)
 | |
| findex(compinit)
 | |
| cindex(completion system, initializing)
 | |
| 
 | |
| This section describes the use of tt(compinit) to initialize completion for
 | |
| the current session when run directly by the user; if you have run
 | |
| tt(compinstall) it will be called automatically from your tt(.zshrc).
 | |
| 
 | |
| To initialize the system, the function tt(compinit) should be in a
 | |
| directory mentioned in the tt(fpath) parameter, and should be autoloaded
 | |
| (`tt(autoload -U compinit)' is recommended), and then run simply as
 | |
| `tt(compinit)'.  This will define a
 | |
| few utility functions, arrange for all the necessary shell functions to be
 | |
| autoloaded, and will then re-define all widgets that do completion to use the
 | |
| new system.  If you use the tt(menu-select) widget, which is part of the
 | |
| tt(zsh/complist) module, you should make sure that that module is loaded
 | |
| before the call to tt(compinit) so that that widget is also
 | |
| re-defined.  If completion styles (see below) are set up to perform
 | |
| expansion as well as completion by default, and the TAB key is bound to
 | |
| tt(expand-or-complete), tt(compinit) will rebind it to tt(complete-word);
 | |
| this is necessary to use the correct form of expansion.
 | |
| 
 | |
| Should you need to use the original completion commands, you can still
 | |
| bind keys to the old widgets by putting a `tt(.)' in front of the
 | |
| widget name, e.g. `tt(.expand-or-complete)'.
 | |
| 
 | |
| To speed up the running of tt(compinit), it can be made to produce a dumped
 | |
| configuration which will be read in on future invocations; this is the
 | |
| default, although it can be turned off by calling tt(compinit) with the
 | |
| option tt(-D).  The dumped file is tt(.zcompdump) in the same
 | |
| directory as the startup files (i.e. tt($ZDOTDIR) or tt($HOME));
 | |
| alternatively, an explicit file name can be given by `tt(compinit -d)
 | |
| var(dumpfile)'.  On the next call to tt(compinit), it will read the dumped
 | |
| file instead of performing a full initialization.
 | |
| 
 | |
| If the number of completion files changes, tt(compinit) will recognise this
 | |
| and produce a new dump file.  However, if the name of a function or the
 | |
| arguments in the first line of a tt(#compdef) function (as described below)
 | |
| change, it is easiest to delete the dump file by hand so that
 | |
| tt(compinit) will re-create it the next time it is run.  The check
 | |
| performed to see if there are new functions can be omitted by giving
 | |
| the option tt(-C).  In this case the dump file will only be created if
 | |
| there isn't one already.
 | |
| 
 | |
| The dumping is actually done by another function, tt(compdump), but you
 | |
| will only need to run this yourself if you change the configuration
 | |
| (e.g. using tt(compdef)) and then want to dump the new one.  The name of
 | |
| the old dumped file will be remembered for this purpose.
 | |
| 
 | |
| If the parameter tt(_compdir) is set, tt(compinit) uses it as a directory
 | |
| where completion functions can be found; this is only necessary if they are
 | |
| not already in the function search path.
 | |
| 
 | |
| For security reasons tt(compinit) also checks if the completion system
 | |
| would use files not owned by root or by the current user, or files in
 | |
| directories that are world- or group-writable or that are not owned by 
 | |
| root or by the current user.  If such files or directories are found,
 | |
| tt(compinit) will ask if the completion system should really be used.  To
 | |
| avoid these tests and make all files found be used without asking, use the
 | |
| option tt(-u), and to make tt(compinit) silently ignore all insecure files
 | |
| and directories use the option tt(-i).  This security check is skipped
 | |
| entirely when the tt(-C) option is given.
 | |
| 
 | |
| findex(compaudit)
 | |
| The security check can be retried at any time by running the function
 | |
| tt(compaudit).  This is the same check used by tt(compinit), but when it
 | |
| is executed directly any changes to tt(fpath) are made local to the
 | |
| function so they do not persist.  The directories to be checked may be
 | |
| passed as arguments; if none are given, tt(compaudit) uses tt(fpath) and
 | |
| tt(_compdir) to find completion system directories, adding missing ones
 | |
| to tt(fpath) as necessary.  To force a check of exactly the directories
 | |
| currently named in tt(fpath), set tt(_compdir) to an empty string before
 | |
| calling tt(compaudit) or tt(compinit).
 | |
| 
 | |
| subsect(Autoloaded files)
 | |
| cindex(completion system, autoloaded functions)
 | |
| 
 | |
| The convention for autoloaded functions used in completion is that they
 | |
| start with an underscore; as already mentioned, the tt(fpath/FPATH)
 | |
| parameter must contain the directory in which they are stored.  If tt(zsh)
 | |
| was properly installed on your system, then tt(fpath/FPATH) automatically
 | |
| contains the required directories for the standard functions.
 | |
| 
 | |
| For incomplete installations, if tt(compinit) does not find enough files
 | |
| beginning with an underscore (fewer than twenty) in the search path, it
 | |
| will try to find more by adding the directory tt(_compdir) to the search
 | |
| path.  Furthermore, if the directory in question ends in the path segment
 | |
| tt(Core), or has a subdirectory named tt(Core), tt(compinit) will add all
 | |
| subdirectories of the directory where tt(Core) is to the path: this allows
 | |
| the functions to be in the same format as in the tt(zsh) source
 | |
| distribution.
 | |
| 
 | |
| cindex(compdef, use of by compinit)
 | |
| When tt(compinit) is run, it searches all such files accessible via
 | |
| tt(fpath/FPATH) and reads the first line of each of them.  This line should
 | |
| contain one of the tags described below.  Files whose first line does not
 | |
| start with one of these tags are not considered to be part of the
 | |
| completion system and will not be treated specially.
 | |
| 
 | |
| The tags are:
 | |
| 
 | |
| startitem()
 | |
| item(tt(#compdef) 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.
 | |
| 
 | |
| 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
 | |
| completion behaviour for multiple commands.  Such a string
 | |
| makes the completion system call the function when completing
 | |
| arguments for the command `tt(cmd)', setting the parameter tt($service) 
 | |
| to the string `tt(service)'.  The function can then use that parameter 
 | |
| to decide what to complete.
 | |
| )
 | |
| item(tt(#compdef -p) var(pattern))(
 | |
| The file will be made autoloadable and the function defined in it will be
 | |
| called when completing for a command whose name matches the given
 | |
| var(pattern) (a standard globbing pattern).  Note that only one
 | |
| var(pattern) may be given.
 | |
| )
 | |
| item(tt(#compdef -P) var(pattern))(
 | |
| Like the previous one, but the function will be called only if no
 | |
| completion function for the command on the line could be found.
 | |
| )
 | |
| item(tt(#compdef -k) var(style key-sequences...))(
 | |
| This can be used to bind special completion functions to the
 | |
| var(key-sequences) specified.  It creates a widget behaving like the
 | |
| builtin widget var(style), which must be one of those that perform
 | |
| completion, namely tt(complete-word), tt(delete-char-or-list),
 | |
| tt(expand-or-complete), tt(expand-or-complete-prefix), tt(list-choices),
 | |
| tt(menu-complete), tt(menu-expand-or-complete), or
 | |
| tt(reverse-menu-complete).  If the tt(zsh/complist) module is loaded (see
 | |
| ifzman(zmanref(zshmodules))\
 | |
| ifnzman(noderef(The zsh/complist Module))\
 | |
| ), the same happens to the tt(menu-select) widget.
 | |
| 
 | |
| The widget is then bound to all the var(key-sequences) given, if any: when
 | |
| one of the var(key-sequences) is typed, the function in the file will
 | |
| be invoked to generate the matches.  Note that a key will not be re-bound
 | |
| if if it already was (that is, was bound to something other than
 | |
| tt(undefined-key)).  The widget created has the same name as the file and
 | |
| can be bound to any other keys using tt(bindkey) as usual.
 | |
| )
 | |
| item(tt(#compdef -K) var(widget-name) var(style) var(key-sequences) ...)(
 | |
| This is similar to tt(-k), with the same var(style) and var(key-sequences)
 | |
| arguments, preceded by a string giving the name of a widget.
 | |
| In this case only one var(key-sequences) argument may be given, but the
 | |
| entire set of three arguments may be repeated with a different set of
 | |
| arguments.  In particular, the var(widget-name) must be distinct in each
 | |
| set.  It should begin with `tt(_)', else one will be added, and should not
 | |
| clash with the name of any existing widget: names based on the name of the
 | |
| function are most useful.  For example,
 | |
| 
 | |
| example(#compdef -K _foo_complete complete-word "^X^C" \ 
 | |
|   _foo_list list-choices "^X^D")
 | |
| 
 | |
| (all on one line) defines a widget tt(_foo_complete) for completion, bound
 | |
| to `tt(^X^C)', and a widget tt(_foo_list) for listing, bound to `tt(^X^D)'.
 | |
| )
 | |
| item(tt(#autoload) [ var(options) ])(
 | |
| This is used for files defining utility functions that are not to be
 | |
| called directly as completion functions but should be loaded automatically
 | |
| when invoked.  Typically they are to be called from within one of the
 | |
| completion functions.
 | |
| 
 | |
| The var(options) will be given to the tt(autoload) builtin command
 | |
| when making the function autoloaded.  Most often, this will be tt(+X) to
 | |
| force the function to be loaded immediately.  Note that the tt(-U) flag is
 | |
| always implicitly added.
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| The tt(#) is part of the tag name and no white space is allowed after it.
 | |
| The tt(#compdef) tags use the tt(compdef) function described below; the
 | |
| main difference is that the name of the function is supplied implicitly.
 | |
| 
 | |
| Note also that the functions for the completion system assume that the
 | |
| tt(KSH_AUTOLOAD) option is not set and cannot be loaded when it is
 | |
| set.  To avoid having to unset tt(KSH_AUTOLOAD), you can instead use one or
 | |
| more tt(zwc) file(s) which have been created with the command tt(zcompile
 | |
| -z) to load the functions for the completion system; see
 | |
| ifzman(zmanref(zshbuiltins))\
 | |
| ifnzman(noderef(Shell Builtin Commands))\
 | |
| .  This forces the functions to be autoloaded the way zsh normally
 | |
| loads functions.
 | |
| 
 | |
| subsect(Functions)
 | |
| 
 | |
| The tt(compinit) file defines the following function, which may
 | |
| also be called directly by the user.
 | |
| 
 | |
| findex(compdef)
 | |
| cindex(completion system, adding definitions)
 | |
| startitem()
 | |
| xitem(tt(compdef) [ tt(-an) ] var(function names...))
 | |
| xitem(tt(compdef -d) var(names...))
 | |
| xitem(tt(compdef -p) [ tt(-a) ] var(function pattern))
 | |
| xitem(tt(compdef -P) [ tt(-a) ] var(function pattern))
 | |
| xitem(tt(compdef -k) [ tt(-an) ] var(function style key-sequences...))
 | |
| item(tt(compdef -K) [ tt(-an) ] var(function name style key-sequences ...))(
 | |
| The first form tells the completion system to call the given
 | |
| var(function) when completing for the contexts or commands
 | |
| whose var(names) are given:  this is like the tt(#compdef) tag unless
 | |
| the first word contains an equal sign.  In this case all words have to 
 | |
| be of the form `var(cmd)tt(=)var(service)' where var(service) is the
 | |
| name of a command or of a service defined by an autoloaded function
 | |
| with the tt(#compdef) tag and an argument of the form
 | |
| `var(cmd)tt(=)var(service)'.  This kind of use makes the arguments of
 | |
| the var(cmd)s be completed as those for the var(services).
 | |
| 
 | |
| If the
 | |
| tt(-n) option is given, any existing completion behaviour for particular
 | |
| contexts or commands will not be altered.  These definitions can be deleted
 | |
| by giving the tt(-d) option as in the second form.
 | |
| 
 | |
| The form with tt(-p) is similar to the first, but var(function) will be
 | |
| called for all commands whose name matches the var(pattern); this is like
 | |
| the tt(#compdef -p) function tag.
 | |
| 
 | |
| The form with tt(-P) is like the third, but the var(function) will be
 | |
| called only if no function for the command itself was found or if one
 | |
| was found and it set the tt(_compskip) parameter to a value em(not)
 | |
| containing the substring tt(patterns).
 | |
| 
 | |
| The form with tt(-k) defines a widget with the same name as the var(function)
 | |
| which will be called for each of the var(key-sequences); this is like the
 | |
| tt(#compdef -k) tag.  The function should generate the completions needed
 | |
| and will otherwise behave like the builtin widget whose name is given as
 | |
| the var(style) argument. The widgets usable for this are:
 | |
| tt(complete-word), tt(delete-char-or-list), tt(expand-or-complete),
 | |
| tt(expand-or-complete-prefix), tt(list-choices), tt(menu-complete),
 | |
| tt(menu-expand-or-complete), and tt(reverse-menu-complete), as well as
 | |
| tt(menu-select) if the tt(zsh/complist) module is loaded.  The option tt(-n)
 | |
| prevents the key being bound if it is already to bound to something other
 | |
| than tt(undefined-key).
 | |
| 
 | |
| The form with tt(-K) is similar and defines multiple widgets based on the
 | |
| same var(function), each of which requires the set of three arguments
 | |
| var(name), var(style) and var(key-sequences), where the latter two are as
 | |
| for tt(-k) and the first must be a unique widget name beginning with an
 | |
| underscore.
 | |
| 
 | |
| In each of the forms supporting it the tt(-a) option makes the
 | |
| var(function) autoloadable (exactly equivalent to
 | |
| tt(autoload -U )var(function)).
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| The tt(compdef) function is the place to turn to when one wants to
 | |
| define what the completion system should complete for a certain
 | |
| command.  The function named can of course be one of the functions
 | |
| supplied or one written by the user.  For example, if one has a
 | |
| command tt(foo) that gets process identifiers as arguments, one could
 | |
| do:
 | |
| 
 | |
| example(compdef _pids foo)
 | |
| 
 | |
| using the tt(_pids) function from the distribution to generate the
 | |
| process identifiers.  Not also the tt(_use_lo) function described
 | |
| below, which can be used to complete options for commands that
 | |
| understand the `tt(-)tt(-help)' option.
 | |
| 
 | |
| texinode(Completion System Configuration)(Control Functions)(Initialization)(Completion System)
 | |
| sect(Completion System Configuration)
 | |
| cindex(completion system, configuration)
 | |
| 
 | |
| This section gives a short overview of how the completion system works,
 | |
| and then more detail on how users can configure how and when matches are
 | |
| generated.
 | |
| 
 | |
| subsect(Overview)
 | |
| 
 | |
| When completion is attempted somewhere on a command line the
 | |
| completion system first tries to find out the context where completion 
 | |
| was tried.  The context depends on such things as the name of the
 | |
| command when completing an argument, and possibly also
 | |
| the name of an option when completing an argument to that option.
 | |
| 
 | |
| The `context' of a completion is a string consisting of multiple fields. This
 | |
| is used to look up styles that can be used to configure the
 | |
| completion system.  Since it is not possible to build the whole context 
 | |
| string in advance, completion functions may modify some of the fields and 
 | |
| hence the context used for lookup may vary during the same call
 | |
| to the completion system.
 | |
| 
 | |
| The context string always consists of the following fields, separated
 | |
| by colons and with a leading colon before the first:
 | |
| 
 | |
| startitemize()
 | |
| itemiz(\
 | |
| The literal string tt(completion), saying that this style is used by
 | |
| the completion system.
 | |
| )
 | |
| itemiz(\
 | |
| The var(function); in many cases this field will be blank, but when
 | |
| the completion system is called from other functions, like
 | |
| tt(predict-on) or one of the functions in the tt(Command) directory of 
 | |
| the distribution, this field contains the name of that function, often
 | |
| in an abbreviated form.
 | |
| )
 | |
| itemiz(\
 | |
| The var(completer) currently active, which is the name of the function
 | |
| without the leading underscore.  A `completer' is in
 | |
| overall control of how completion is to be performed; `tt(complete)'
 | |
| is the basic one for ordinary completion, but completers may perform
 | |
| various related tasks such as correction, or modify the behaviour of a
 | |
| later completer (see
 | |
| ifzman(the section `Control Functions' below)\
 | |
| ifnzman(noderef(Control Functions)) 
 | |
| 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
 | |
| 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
 | |
| completion function for the tt(cvs) command sets this field to strings
 | |
| such as tt(cvs-add) when completing for the tt(add) sub-command).
 | |
| )
 | |
| itemiz(\
 | |
| The var(argument), describing which argument we are
 | |
| completing.  Normally this is either a string of the form
 | |
| tt(argument-)var(n), where var(n) is the number of the argument or it
 | |
| is a string of the form tt(option-)var(opt)tt(-)var(n) when completing the
 | |
| var(n)'th argument of the option var(opt).
 | |
| )
 | |
| itemiz(\
 | |
| The var(tag).  Tags are used to discriminate between the types
 | |
| of matches a completion function can generate in a certain context.
 | |
| )
 | |
| enditemize()
 | |
| 
 | |
| As an example, the context name
 | |
| 
 | |
| example(tt(:completion::complete:dvips:option-o-1:files))
 | |
| 
 | |
| says that normal completion was attempted on an argument of the tt(dvips)
 | |
| command (more precisely: completion was attempted on the first argument
 | |
| after the tt(-o) option) and the completion function will generate
 | |
| filenames for this context.
 | |
| 
 | |
| In many of the possible contexts the completion system can generate
 | |
| matches, often multiple types of matches.  These types are represented as
 | |
| simple names called `tags'.  The completion system will decide internally
 | |
| what sort of tags are allowed; a list of the standard possibilities is given
 | |
| below.  To determine in which order the tags are to be used by the
 | |
| completion function, the `tt(tag-order)' style for the appropriate
 | |
| context may be set, as described in the list of standard styles below.
 | |
| Only those types of matches whose tags were selected by this style
 | |
| will be produced, and in the order given, although the default is to try
 | |
| all relevant tags in an order determined by the particular completion in
 | |
| use.
 | |
| 
 | |
| The tt(_complete_help) bindable command described in 
 | |
| ifzman(the section `Bindable Commands' below)\
 | |
| ifnzman(noderef(Bindable Commands))
 | |
| can be invoked to find out the context and tag names and styles used at a
 | |
| particular point in completion.  It shows the list of contexts and tags 
 | |
| that would be used in if completion were tried at the current cursor
 | |
| position.  Hence one can easily find out all the information needed to
 | |
| change the behaviour of the tt(tag-order) style for a particular context.
 | |
| 
 | |
| Completion behaviour can be modified by various other
 | |
| styles defined with the tt(zstyle) builtin command (\
 | |
| ifzman(see zmanref(zshmodules))\
 | |
| ifnzman(noderef(The zsh/zutil Module))).
 | |
| When looking up styles the completion system uses full context names,
 | |
| including the tag.
 | |
| 
 | |
| Styles determine such things as how the matches are generated; some of them
 | |
| correspond to shell options (for example, the use of menu completion), but
 | |
| styles provide more specific control.  They can have any number of strings as
 | |
| their value.  Looking up the value of a style therefore consists of two
 | |
| things:  the context, which may be matched as a pattern, and the name of
 | |
| the style itself, which must be given exactly.
 | |
| 
 | |
| For example, many completion functions can generate matches in a
 | |
| simple and a verbose form and use the tt(verbose) style to decide
 | |
| which form should be used.  To make all such functions use the verbose form,
 | |
| put
 | |
| 
 | |
| example(zstyle ':completion:*' verbose yes)
 | |
| 
 | |
| in one of the startup files like tt(.zshrc); this sort of style can also be
 | |
| configured with the tt(compinstall) function.  This definition simply
 | |
| means that the tt(verbose) style has tt(yes) as its value in every
 | |
| context inside the completion system.  If the context pattern were `tt(*)',
 | |
| the verbose style would have this value anywhere the style mechanism is
 | |
| used, not just in completion.
 | |
| 
 | |
| As a more specific example, the completion function for the tt(kill)
 | |
| builtin command uses the tt(verbose) style to decide if jobs and processes
 | |
| are listed only as job numbers and process identifiers or if they are
 | |
| listed with the full job texts and the command lines of the processes (the
 | |
| latter is achieved by calling the tt(ps) command).  To make this builtin
 | |
| list the matches only as numbers one could call:
 | |
| 
 | |
| example(zstyle ':completion:*:*:kill:*' verbose no)
 | |
| 
 | |
| Furthermore, if one wanted to see the command lines for processes but not the
 | |
| job texts one could use the fact that the context name contains the tag name
 | |
| when styles are looked up.  As the function for the tt(kill)
 | |
| builtin command uses the tags tt(jobs) and tt(processes), we can use:
 | |
| 
 | |
| example(zstyle ':completion:*:*:kill:*:jobs' verbose no)
 | |
| 
 | |
| To have more control over when certain values for styles are used one
 | |
| can use the special parameters available in completion widgets (see
 | |
| ifzman(see zmanref(zshcompwid))\
 | |
| ifnzman(noderef(Completion Widgets)))\
 | |
| ) and the tt(-e) option to tt(zstyle) that makes the value be
 | |
| evaluated when looked up.  For example, to make the tt(completer)
 | |
| style have a different value when completing for the tt(cvs) command,
 | |
| one could use the tt(words) special array:
 | |
| 
 | |
| example(zstyle -e ':completion:*' completer '
 | |
|     if [[ $words[1] = cvs ]]; then
 | |
|       reply=(_complete)
 | |
|     else
 | |
|       reply=(_complete _approximate)
 | |
|     fi')
 | |
| 
 | |
| One should be careful not to use too complicated code with this
 | |
| option, at least for the styles that are looked up quite often.  These 
 | |
| are basically those that define some global completion behaviour but
 | |
| allow that to be different for all matches or groups of matches (such
 | |
| as the tt(menu) and tt(list-rows-first) styles).  Alternatively one
 | |
| can always use a less general pattern for the context than in the
 | |
| example above and use a second call to tt(zstyle) with a generic
 | |
| pattern and without using the tt(-e) option to define the default
 | |
| behaviour.
 | |
| 
 | |
| Note that the order in which styles are em(defined) does not matter; the
 | |
| style mechanism uses the most specific possible match for a particular
 | |
| style to determine the set of values.  More precisely, strings are
 | |
| preferred over patterns (for example, `tt(:completion::complete:foo)' is
 | |
| more specific than `tt(:completion::complete:*')), and longer patterns are
 | |
| preferred over shorter patterns.
 | |
| 
 | |
| As with tags, completion functions can use any style they choose, so
 | |
| there can't be a complete list.  However, the following two sections
 | |
| list those tags and styles that are used in many places of the
 | |
| completion system.
 | |
| 
 | |
| subsect(Standard Tags)
 | |
| cindex(completion system, tags)
 | |
| 
 | |
| Here are the tags currently used by the completion system.  Some of them
 | |
| are only used when looking up styles and do not refer to a particular type
 | |
| of match.
 | |
| 
 | |
| startitem()
 | |
| kindex(accounts, completion tag)
 | |
| item(tt(accounts))(
 | |
| used to look up the tt(users-hosts) style
 | |
| )
 | |
| kindex(all-files, completion tag)
 | |
| item(tt(all-files))(
 | |
| for the names of all files (as distinct from a particular subset, see the
 | |
| tt(globbed-files) tag).
 | |
| )
 | |
| kindex(all-expansions, completion tag)
 | |
| item(tt(all-expansions))(
 | |
| used by the tt(_expand) completer when adding the single string containing
 | |
| all possible expansions
 | |
| )
 | |
| kindex(arguments, completion tag)
 | |
| item(tt(arguments))(
 | |
| when an argument of a command may be completed
 | |
| )
 | |
| kindex(arrays, completion tag)
 | |
| item(tt(arrays))(
 | |
| for names of array parameters
 | |
| )
 | |
| kindex(association-keys, completion tag)
 | |
| item(tt(association-keys))(
 | |
| for keys of associative arrays; used when completing inside a
 | |
| subscript of a parameter of this type
 | |
| )
 | |
| kindex(bookmarks, completion tag)
 | |
| item(tt(bookmarks))(
 | |
| when completing bookmarks (e.g. for URLs and the tt(zftp) function suite)
 | |
| )
 | |
| kindex(builtins, completion tag)
 | |
| item(tt(builtins))(
 | |
| for names of builtin commands
 | |
| )
 | |
| kindex(characters, completion tag)
 | |
| item(tt(characters))(
 | |
| used for commands like tt(stty) when completing characters; also used
 | |
| when completing character classes after a opening bracket
 | |
| )
 | |
| kindex(colormapids, completion tag)
 | |
| item(tt(colormapids))(
 | |
| for X colormap ids
 | |
| )
 | |
| kindex(colors, completion tag)
 | |
| item(tt(colors))(
 | |
| for color names
 | |
| )
 | |
| kindex(commands, completion tag)
 | |
| item(tt(commands))(
 | |
| for names of external commands and names of sub-commands (used by some 
 | |
| commands like tt(cvs))
 | |
| )
 | |
| kindex(contexts, completion tag)
 | |
| item(tt(contexts))(
 | |
| for contexts used by the zstyle builtin command
 | |
| )
 | |
| kindex(corrections, completion tag)
 | |
| item(tt(corrections))(
 | |
| used by the tt(_approximate) and tt(_correct) completers for the possible
 | |
| corrections
 | |
| )
 | |
| kindex(cursors, completion tag)
 | |
| item(tt(cursors))(
 | |
| for cursor names used by X programs
 | |
| )
 | |
| kindex(default, completion tag)
 | |
| item(tt(default))(
 | |
| used to look up default values for various styles that may also be set 
 | |
| for tags that are used when generating matches; note that this tag is
 | |
| used when only the var(function) field of the context name is set up
 | |
| )
 | |
| kindex(descriptions, completion tag)
 | |
| item(tt(descriptions))(
 | |
| used when looking up the value of the tt(format) style for
 | |
| descriptions
 | |
| )
 | |
| kindex(devices, completion tag)
 | |
| item(tt(devices))(
 | |
| for names of device special files
 | |
| )
 | |
| kindex(directories, completion tag)
 | |
| item(tt(directories))(
 | |
| for names of directories
 | |
| )
 | |
| kindex(directory-stack, completion tag)
 | |
| item(tt(directory-stack))(
 | |
| for entries in the directory stack
 | |
| )
 | |
| kindex(displays, completion tag)
 | |
| item(tt(displays))(
 | |
| for X display names
 | |
| )
 | |
| kindex(domains, completion tag)
 | |
| item(tt(domains))(
 | |
| for network domains
 | |
| )
 | |
| kindex(expansions, completion tag)
 | |
| item(tt(expansions))(
 | |
| used by the tt(_expand) completer for individual possibilities resulting
 | |
| from expansion of a word
 | |
| )
 | |
| kindex(extensions, completion tag)
 | |
| item(tt(extensions))(
 | |
| for X server extensions
 | |
| )
 | |
| kindex(file-descriptors, completion tag)
 | |
| item(tt(file-descriptors))(
 | |
| for the numbers of open file descriptors
 | |
| )
 | |
| kindex(files, completion tag)
 | |
| item(tt(files))(
 | |
| the generic file-matching tag used by completion functions that can
 | |
| complete the names of some kind of file
 | |
| )
 | |
| kindex(fonts, completion tag)
 | |
| item(tt(fonts))(
 | |
| used for X font names
 | |
| )
 | |
| kindex(functions, completion tag)
 | |
| item(tt(functions))(
 | |
| names of functions, normally shell functions although certain commands may
 | |
| understand other kinds of function
 | |
| )
 | |
| kindex(globbed-files, completion tag)
 | |
| item(tt(globbed-files))(
 | |
| for names of files matching the glob pattern used by completion
 | |
| functions that expect a certain type of file
 | |
| )
 | |
| kindex(groups, completion tag)
 | |
| item(tt(groups))(
 | |
| used when completing names of user groups
 | |
| )
 | |
| kindex(history-words, completion tag)
 | |
| item(tt(history-words))(
 | |
| for words from the history
 | |
| )
 | |
| kindex(hosts, completion tag)
 | |
| item(tt(hosts))(
 | |
| for hostnames
 | |
| )
 | |
| kindex(indexes, completion tag)
 | |
| item(tt(indexes))(
 | |
| used for array indexes
 | |
| )
 | |
| kindex(jobs, completion tag)
 | |
| item(tt(jobs))(
 | |
| used for jobs
 | |
| )
 | |
| kindex(keymaps, completion tag)
 | |
| item(tt(keymaps))(
 | |
| for names of zsh keymaps
 | |
| )
 | |
| kindex(keysyms, completion tag)
 | |
| item(tt(keysyms))(
 | |
| for names of X keysyms
 | |
| )
 | |
| kindex(local-directories, completion tag)
 | |
| item(tt(local-directories))(
 | |
| for names of directories which are subdirectories of the current working
 | |
| directory when completing for the tt(cd) and related builtin commands
 | |
| )
 | |
| kindex(libraries, completion tag)
 | |
| item(tt(libraries))(
 | |
| for names of system libraries
 | |
| )
 | |
| kindex(limits, completion tag)
 | |
| item(tt(limits))(
 | |
| for system limits
 | |
| )
 | |
| kindex(manuals, completion tag)
 | |
| item(tt(manuals))(
 | |
| for names of manual pages
 | |
| )
 | |
| kindex(maps, completion tag)
 | |
| item(tt(maps))(
 | |
| for map names (e.g. NIS maps)
 | |
| )
 | |
| kindex(messages, completion tag)
 | |
| item(tt(messages))(
 | |
| used to look up the tt(format) style for messages
 | |
| )
 | |
| kindex(modifiers, completion tag)
 | |
| item(tt(modifiers))(
 | |
| for names of X modifiers
 | |
| )
 | |
| kindex(modules, completion tag)
 | |
| item(tt(modules))(
 | |
| for modules (e.g. tt(zsh) modules)
 | |
| )
 | |
| kindex(my-accounts, completion tag)
 | |
| item(tt(my-accounts))(
 | |
| used to look up the tt(users-hosts) style
 | |
| )
 | |
| kindex(named-directories, completion tag)
 | |
| item(tt(named-directories))(
 | |
| for named directories (you wouldn't have guessed that, would you?)
 | |
| )
 | |
| kindex(names, completion tag)
 | |
| item(tt(names))(
 | |
| for all kinds of names
 | |
| )
 | |
| kindex(nicknames, completion tag)
 | |
| item(tt(nicknames))(
 | |
| for nicknames of NIS maps
 | |
| )
 | |
| kindex(options, completion tag)
 | |
| item(tt(options))(
 | |
| for command options
 | |
| )
 | |
| kindex(original, completion tag)
 | |
| item(tt(original))(
 | |
| used by the tt(_approximate), tt(_correct) and tt(_expand) completers when
 | |
| adding the original string
 | |
| )
 | |
| kindex(other-accounts, completion tag)
 | |
| item(tt(other-accounts))(
 | |
| used to look up the tt(users-hosts) style
 | |
| )
 | |
| kindex(packages, completion tag)
 | |
| item(tt(packages))(
 | |
| for packages (e.g. tt(rpm) or installed tt(Debian) packages)
 | |
| )
 | |
| kindex(parameters, completion tag)
 | |
| item(tt(parameters))(
 | |
| for names of parameters
 | |
| )
 | |
| kindex(path-directories, completion tag)
 | |
| item(tt(path-directories))(
 | |
| for names of directories found by searching the tt(cdpath) array when
 | |
| completing for the tt(cd) and related builtin commands
 | |
| )
 | |
| kindex(paths, completion tag)
 | |
| item(tt(paths))(
 | |
| used to look up the values of the tt(expand), tt(ambiguous) and
 | |
| tt(special-dirs) styles
 | |
| )
 | |
| kindex(pods, completion tag)
 | |
| item(tt(pods))(
 | |
| for perl pods (documentation files)
 | |
| )
 | |
| kindex(ports, completion tag)
 | |
| item(tt(ports))(
 | |
| for communication ports
 | |
| )
 | |
| kindex(prefixes, completion tag)
 | |
| item(tt(prefixes))(
 | |
| for prefixes (like those of a URL)
 | |
| )
 | |
| kindex(printers, completion tag)
 | |
| item(tt(printers))(
 | |
| for printer names
 | |
| )
 | |
| kindex(processes, completion tag)
 | |
| item(tt(processes))(
 | |
| for process identifiers
 | |
| )
 | |
| kindex(processes-names, completion tag)
 | |
| item(tt(processes-names))(
 | |
| used to look up the tt(command) style when generating the names of
 | |
| processes for tt(killall)
 | |
| )
 | |
| kindex(sequences, completion tag)
 | |
| item(tt(sequences))(
 | |
| for sequences (e.g. tt(mh) sequences)
 | |
| )
 | |
| kindex(sessions, completion tag)
 | |
| item(tt(sessions))(
 | |
| for sessions in the tt(zftp) function suite
 | |
| )
 | |
| kindex(signals, completion tag)
 | |
| item(tt(signals))(
 | |
| for signal names
 | |
| )
 | |
| kindex(strings, completion tag)
 | |
| item(tt(strings))(
 | |
| for strings (e.g. the replacement strings for the tt(cd) builtin
 | |
| command)
 | |
| )
 | |
| kindex(styles, completion tag)
 | |
| item(tt(styles))(
 | |
| for styles used by the zstyle builtin command
 | |
| )
 | |
| kindex(tags, completion tag)
 | |
| item(tt(tags))(
 | |
| for tags (e.g. tt(rpm) tags)
 | |
| )
 | |
| kindex(targets, completion tag)
 | |
| item(tt(targets))(
 | |
| for makefile targets
 | |
| )
 | |
| kindex(types, completion tag)
 | |
| item(tt(types))(
 | |
| for types of whatever (e.g. address types for the tt(xhost) command)
 | |
| )
 | |
| kindex(urls, completion tag)
 | |
| item(tt(urls))(
 | |
| used to look up the tt(urls) and tt(local) styles when completing URLs
 | |
| )
 | |
| kindex(users, completion tag)
 | |
| item(tt(users))(
 | |
| for usernames
 | |
| )
 | |
| kindex(values, completion tag)
 | |
| item(tt(values))(
 | |
| when completing a value out of a set of values (or a list of such
 | |
| values)
 | |
| )
 | |
| kindex(version, completion tag)
 | |
| item(tt(version))(
 | |
| used by tt(_call) to look up the command to run to determine the installed
 | |
| version of various other commands (such as tt(diff) and tt(make)).
 | |
| )
 | |
| kindex(warnings, completion tag)
 | |
| item(tt(warnings))(
 | |
| used to look up the tt(format) style for warnings
 | |
| )
 | |
| kindex(widgets, completion tag)
 | |
| item(tt(widgets))(
 | |
| for zsh widget names
 | |
| )
 | |
| kindex(windows, completion tag)
 | |
| item(tt(windows))(
 | |
| for IDs of X windows
 | |
| )
 | |
| kindex(zsh-options, completion tag)
 | |
| item(tt(zsh-options))(
 | |
| for shell options
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| subsect(Standard Styles)
 | |
| cindex(completion system, styles)
 | |
| 
 | |
| Here are the names of the styles used by the completion system.  Note
 | |
| that the values of several of these styles represent boolean
 | |
| values; here, any of the strings `tt(true)', `tt(on)',
 | |
| `tt(yes)', and `tt(1)' can be used for the truth value `true' and
 | |
| the strings `tt(false)', `tt(off)', `tt(no)', and `tt(0)' are
 | |
| interpreted as `false'.  The behavior for any other value is undefined 
 | |
| unless the description for the particular style mentions other
 | |
| possible values; in particular, the default value may be either on or off
 | |
| if the style is not set.
 | |
| 
 | |
| Some of these styles are tested for every tag used to add possible
 | |
| matches and for the tt(default) tag (most notably tt(menu),
 | |
| tt(list-colors) and the styles controlling the completion listing like 
 | |
| tt(list-packed) and tt(last-prompt)). When tested for the tt(default)
 | |
| tag, only the var(function) field of the context will be set up, so
 | |
| the default value will normally be set like:
 | |
| 
 | |
| example(zstyle ':completion:*:default' menu ...)
 | |
| 
 | |
| startitem()
 | |
| kindex(accept-exact, completion style)
 | |
| item(tt(accept-exact))(
 | |
| This is tested for the default tag and the tags used when generating
 | |
| matches.  If it is set to `true' for at least one match which is the
 | |
| same as the string on the line, this match will immediately be
 | |
| accepted.
 | |
| 
 | |
| When completing pathnames (where it is looked up for the tt(paths)
 | |
| tag), this style also accepts any number of patterns as the value. If
 | |
| this is used, pathnames matching one of these patterns will be
 | |
| accepted immediately even if the command line contains some more
 | |
| partially typed pathname components and these match no file under the
 | |
| directory accepted.
 | |
| 
 | |
| Note that this is also used by the tt(_expand) completer to decide if
 | |
| words beginning with a tilde or parameter expansion should be
 | |
| expanded. This means that if, for example, there are parameters
 | |
| tt(foo) and tt(foobar), the string `tt($foo)' will only be expanded if 
 | |
| tt(accept-exact) is set to `true'.
 | |
| )
 | |
| kindex(add-space, completion style)
 | |
| item(tt(add-space))(
 | |
| This style is used by the tt(_expand) completer.  If it is `true' (the
 | |
| default), a space will be inserted after all words resulting from the 
 | |
| expansion (except for directory names which get a slash).  The value
 | |
| may also be the string `tt(file)' to make the completer add a space
 | |
| only to names of existing files.  Finally, the `true' values and
 | |
| `tt(file)' may be combined with `tt(subst)' to keep the completer from 
 | |
| adding a space when the resulting words were generated by expanding a
 | |
| substitution of the form `tt($LPAR()...RPAR())' or `tt(${...})'.
 | |
| 
 | |
| It is also used by the tt(_prefix) completer as a simple boolean value
 | |
| to decide if a space should be inserted before the suffix.
 | |
| )
 | |
| kindex(ambiguous, completion style)
 | |
| item(tt(ambiguous))(
 | |
| This applies when completing non-final components of filename paths.
 | |
| If it is set, the cursor is left after the first ambiguous component, even
 | |
| if menu completion is in use.  It is tested with the tt(paths) tag.
 | |
| )
 | |
| kindex(assign-list, completion style)
 | |
| item(tt(assign-list))(
 | |
| When completing after an equals sign, the completion system normally
 | |
| completes only one filename.  In some cases, particularly for certain
 | |
| parameters such as tt(PATH), a list of filenames separated by colons is
 | |
| required.  This style can be set to a list of patterns matching the names
 | |
| of such parameters.
 | |
| 
 | |
| The default is to complete lists when the word on the line already
 | |
| contains a colon.
 | |
| )
 | |
| kindex(auto-description, completion style)
 | |
| item(tt(auto-description))(
 | |
| If set, this style's value will be used as the description for options which
 | |
| are not described by the completion functions, but that have exactly
 | |
| one argument.  The sequence `tt(%d)' in the value will be replaced by
 | |
| the description for this argument.  Depending on personal preferences,
 | |
| it may be useful to set this style to something like `tt(specify: %d)'. 
 | |
| Note that this may not work for some commands.
 | |
| )
 | |
| kindex(avoid-completer, completion style)
 | |
| item(tt(avoid-completer))(
 | |
| This is used by the tt(_all_matches) completer to decide if the string 
 | |
| consisting of all matches should be added to the list currently being
 | |
| generated.  Its value is a list of names of completers.  If any of
 | |
| these is the name of the completer that generated the matches in this
 | |
| completion, the string will not be added.
 | |
| 
 | |
| The default value for this style is `tt(_expand _old_list _correct
 | |
| _approximate)', i.e. it contains the completers for which a string
 | |
| with all matches will almost never be wanted.
 | |
| )
 | |
| kindex(cache-path, completion style)
 | |
| item(tt(cache-path))(
 | |
| This style defines the path where any cache files containing dumped
 | |
| completion data are stored.  Defaults to `tt($ZDOTDIR/.zcompcache)', or
 | |
| `tt($HOME/.zcompcache)' if tt($ZDOTDIR) is not defined.  The completion
 | |
| layer will not be used unless the tt(use-cache) style is set.
 | |
| )
 | |
| kindex(call-command, completion style)
 | |
| item(tt(call-command))(
 | |
| Currently this is only used by the function completing tt(make)
 | |
| targets.  If it is set to `true' and the installed version of the
 | |
| tt(make) command allows it, tt(make) is called in a way to generate
 | |
| all possible targets.  The default value of this style is `false'
 | |
| because calling tt(make) can potentially take a very long time and in
 | |
| some cases may even cause actions from the makefile be executed
 | |
| despite the options given to tt(make).
 | |
| )
 | |
| kindex(command, completion style)
 | |
| item(tt(command))(
 | |
| In many places, completion functions need to call external commands to
 | |
| generate the list of completions.  This style can be used to override the
 | |
| command which is called in some such cases.  The elements of the value are
 | |
| joined with spaces to form a command line to execute.  The value can also
 | |
| start with a hyphen, in which case the usual command will be added to the
 | |
| end; this is most useful for putting `tt(builtin)' or `tt(command)' in
 | |
| front to make sure the appropriate version of a command is called, for
 | |
| example to avoid calling a shell function with the same name as an external
 | |
| command.
 | |
| 
 | |
| As an example, the function generating process IDs as matches uses this
 | |
| style with the tt(processes) tag to generate the IDs to complete and
 | |
| the list of processes to display (if the tt(verbose) style is `true').
 | |
| The list produced by the command should look like the output of the
 | |
| tt(ps) command.  The first line is not displayed, but is searched for
 | |
| the string `tt(PID)' (or `tt(pid)') to find the position of the
 | |
| process IDs in the following lines.  If the line does not contain
 | |
| `tt(PID)', the first numbers in each of the other lines are taken as the 
 | |
| process IDs to complete.
 | |
| 
 | |
| Note that the completion function generally has to call the command
 | |
| everytime it is called.  Because of that care should be taken to
 | |
| specify only commands that take a short time to run (and that will
 | |
| eventually stop at all).
 | |
| )
 | |
| kindex(commands, completion style)
 | |
| item(tt(commands))(
 | |
| This is used by the function completing sub-commands for the system
 | |
| initialisation scripts (residing in tt(/etc/init.d) or somewhere not
 | |
| too far away from that).  It's values give the default commands to
 | |
| complete for those commands for which the completion function isn't
 | |
| able to find them out automatically.  The default for this style are
 | |
| the two strings `tt(start)' and `tt(stop)'.
 | |
| )
 | |
| kindex(complete, completion style)
 | |
| item(tt(complete))(
 | |
| This is used by the tt(_expand_alias) function when invoked as a
 | |
| bindable command.  If it set to `true' and the word on the command
 | |
| line is not the name of an alias, matching alias names will be
 | |
| completed.
 | |
| )
 | |
| kindex(completer, completion style)
 | |
| item(tt(completer))(
 | |
| The strings given as the value of this style provide the names of the
 | |
| completer functions to use. The available completer functions are
 | |
| described in
 | |
| ifzman(the section `Control Functions' below)\
 | |
| ifnzman(noderef(Control Functions))\
 | |
| .
 | |
| 
 | |
| Each string may be the name of a completer function or a string of the 
 | |
| form `var(function)tt(:)var(name)'. In the first case the
 | |
| var(completer) field of the context will contain the name of the
 | |
| completer without the leading underscore and with all other
 | |
| underscores replaced by hyphens.  In the second case the
 | |
| var(function) is the name of the completer to call, but the context
 | |
| will contain the var(name) in the var(completer) field of the
 | |
| context.  If the var(name) starts with a hyphen, the string for the
 | |
| context will be build from the name of the completer function as in
 | |
| the first case with the var(name) appended to it.  For example: 
 | |
| 
 | |
| example(zstyle ':completion:*' completer _complete _complete:-foo)
 | |
| 
 | |
| Here, completion will call the tt(_complete) completer twice, once
 | |
| using `tt(complete)' and once using `tt(complete-foo)' in the
 | |
| var(completer) field of the context.  Normally, using the same
 | |
| completer more than once makes only sense when used with the
 | |
| `var(functions)tt(:)var(name)' form, because otherwise the context
 | |
| name will be the same in all calls to the completer; possible
 | |
| exceptions to this rule are the tt(_ignored) and tt(_prefix)
 | |
| completers.
 | |
| 
 | |
| The default value for this style is tt(_complete _ignored),
 | |
| i.e. normally only completion will be done, first using the
 | |
| tt(ignored-patterns) style and the tt($fignore) array and then without 
 | |
| ignoring matches.
 | |
| )
 | |
| kindex(condition, completion style)
 | |
| item(tt(condition))(
 | |
| This style is used by the tt(_list) completer function to decide if
 | |
| insertion of matches should be delayed unconditionally. The default is 
 | |
| `true'.
 | |
| )
 | |
| kindex(disabled, completion style)
 | |
| item(tt(disabled))(
 | |
| If this is set to `true', the tt(_expand_alias) completer and bindable 
 | |
| command will try to expand disabled aliases, too.  The default is
 | |
| `tt(false)'.
 | |
| )
 | |
| kindex(disable-stat, completion style)
 | |
| item(tt(disable-stat))(
 | |
| This is used with an empty tag by the function completing for the
 | |
| tt(cvs) command to decide if the tt(zsh/stat) module should be used to
 | |
| generate names of modified files in the appropriate places (this is its
 | |
| only use).  If set, completion will use the tt(ls) command.
 | |
| )
 | |
| kindex(domains, completion style)
 | |
| item(tt(domains))(
 | |
| If set, gives the names of network domains that should be
 | |
| completed.  If this is not set by the user domain names will be taken from
 | |
| the file tt(/etc/resolv.conf).
 | |
| )
 | |
| kindex(expand, completion style)
 | |
| item(tt(expand))(
 | |
| This style is used when completing strings consisting of multiple
 | |
| parts, such as path names.  If its
 | |
| value contains the string `tt(prefix)', the partially typed word from
 | |
| the line will be expanded as far as possible even if trailing parts
 | |
| cannot be completed.  If it contains the string `tt(suffix)'
 | |
| and normal (non-menu-) completion is used, matching names for
 | |
| components after the first ambiguous one will also be added.  This
 | |
| means that the resulting string is the longest unambiguous string
 | |
| possible, but if menu completion is started on the list of matches
 | |
| generated this way (e.g. due to the option tt(AUTO_MENU) being set),
 | |
| this will also cycle through the names of the files in pathname
 | |
| components after the first ambiguous one.
 | |
| )
 | |
| kindex(fake-files, completion style)
 | |
| item(tt(fake-files))(
 | |
| This style is used when completing files and looked up 
 | |
| without a tag.  Its values are of the form
 | |
| `var(dir)tt(:)var(names...)'.  This will add the var(names) (strings
 | |
| separated by spaces) as
 | |
| possible matches when completing in the directory var(dir), even if no 
 | |
| such files really exist.
 | |
| 
 | |
| This can be useful on systems that support special filesystems whose
 | |
| top-level pathnames can not be listed or generated with glob patterns.
 | |
| It can also be used for directories for which one does not have read
 | |
| permission.
 | |
| )
 | |
| kindex(fake-parameters, completion style)
 | |
| item(tt(fake-parameters))(
 | |
| This is used by the completion function generating parameter names as
 | |
| matches.  Its values are names of parameters which might not yet be
 | |
| set, but which should be completed nonetheless.  Each name may also be 
 | |
| followed by a colon and a string specifying the type of the parameter
 | |
| (like `tt(scalar)', `tt(array)' or `tt(integer)').  If such a type is
 | |
| given, the name will only be completed if parameters of that type are
 | |
| requested in the particular context.  Names for which no type is
 | |
| specified will always be completed.
 | |
| )
 | |
| kindex(file-patterns, completion style)
 | |
| item(tt(file-patterns))(
 | |
| In most places where filenames are completed, the function tt(_files)
 | |
| is used which can be configured with this style.  If the style is
 | |
| unset, tt(_files) offers, one after another, up to three tags:
 | |
| `tt(globbed-files)',
 | |
| `tt(directories)' and `tt(all-files)', depending on the types of files
 | |
| expected by the caller of tt(_files).
 | |
| 
 | |
| If the tt(file-patterns) style is set, the default tags are not
 | |
| used.  Instead, the value of the style says which tags and which
 | |
| patterns are to be offered.  The strings in the value contain
 | |
| specifications of the form
 | |
| `var(pattern)tt(:)var(tag)'; each string may contain any number of
 | |
| such specifications.  The var(pattern) gives a glob 
 | |
| pattern that is to be used to generate
 | |
| filenames.  If it contains the sequence `tt(%p)', that is replaced by
 | |
| the pattern(s) given by the calling function.
 | |
| Colons in the pattern must be preceded by a backslash to
 | |
| make them distinguishable from the colon before the var(tag).  If more
 | |
| than one pattern is needed, the patterns can be given inside braces,
 | |
| separated by commas.  The
 | |
| var(tag)s of all strings in the value will be offered by tt(_files)
 | |
| (again, one after another) and used when looking up other styles.  For
 | |
| strings containing more than one specification, the filenames for all
 | |
| specifications will be generated at the same try.  If
 | |
| no `tt(:)var(tag)' is given the `tt(files)' tag will be used.  The
 | |
| var(tag) may also be
 | |
| followed by an optional second colon and a description.  If that is
 | |
| given, this description will be used for the `tt(%d)' in the value of
 | |
| the tt(format) style (if that is set) instead of the default
 | |
| description supplied by the completion function.  If the description
 | |
| given here contains itself a `tt(%d)', that is replaced with the
 | |
| description supplied by the completion function.
 | |
| 
 | |
| For example, to make the tt(rm) command first complete only names of
 | |
| object files and the names of all files if no object file matches
 | |
| the string on the line, one would do:
 | |
| 
 | |
| example(zstyle ':completion:*:*:rm:*' file-patterns \ 
 | |
|     '*.o:object-files' '%p:all-files')
 | |
| 
 | |
| Another interesting example is to change the default behaviour that
 | |
| makes completion first offer files matching the patterns given by the
 | |
| calling function, then directories and then all files.  Many people 
 | |
| prefer to get both the files matching the given patterns and the
 | |
| directories in the first try and all files at the second try.  To
 | |
| achieve this, one could do:
 | |
| 
 | |
| example(zstyle ':completion:*' file-patterns \ 
 | |
|     '%p:globbed-files *(-/):directories' '*:all-files')
 | |
| 
 | |
| This works even for contexts in which all files would be completed,
 | |
| because tt(_files) will not try a pattern more than once and it stops
 | |
| when the pattern `tt(*)' was tried.
 | |
| 
 | |
| Note also that during the execution of completion functions, the
 | |
| tt(EXTENDED_GLOB) option is in effect, so the characters `tt(#)',
 | |
| `tt(~)' and `tt(^)' have special meanings in the patterns.
 | |
| )
 | |
| kindex(file-sort, completion style)
 | |
| item(tt(file-sort))(
 | |
| The completion function that generates filenames as possible matches
 | |
| uses this style without a tag to determine in which order the 
 | |
| names should be listed and completed when using menu completion.  The
 | |
| value may be one of `tt(size)' to sort them by the size of the file,
 | |
| `tt(links)' to sort them by the number of links to the file,
 | |
| `tt(modification)' (or `tt(time)' or `tt(date)') to sort them by the last
 | |
| modification time, `tt(access)' to sort them by the last access time, or
 | |
| `tt(inode)' (or `tt(change)') to sort them by the last inode change
 | |
| time.  If the style is set to any other value, or is unset, files will be
 | |
| sorted alphabetically by name.  If the value contains the string
 | |
| `tt(reverse)', sorting is done in decreasing order.
 | |
| )
 | |
| kindex(force-list, completion style)
 | |
| item(tt(force-list))(
 | |
| This forces a list of completions to be shown at any point where listing is
 | |
| done, even in cases where the list would usually be suppressed.
 | |
| For example, normally the list is only shown if
 | |
| there are at least two different matches.  By setting this style to
 | |
| `tt(always)', the list will always be shown, even if there is only a
 | |
| single match which is immediately accepted.  The style may also
 | |
| be set to a number.  In this case the list will be shown if there are
 | |
| at least that many matches, even if they would all insert the same
 | |
| string.
 | |
| 
 | |
| This style is tested for the default tag and all tags used when
 | |
| generating matches. This allows one to turn unconditional listing on
 | |
| for certain types of matches.
 | |
| )
 | |
| kindex(format, completion style)
 | |
| item(tt(format))(
 | |
| If this is set for the tt(descriptions) tag, its value is used as a
 | |
| string to display above matches in completion lists.  The sequence
 | |
| `tt(%d)' in this string will be replaced with a short description of
 | |
| what these matches are.  This string may also contain the sequences to
 | |
| specify output attributes, such as `tt(%B)', `tt(%S)' and
 | |
| `tt(%{)...tt(%})'.
 | |
| 
 | |
| For the same purpose, this style is also tested with the tags used when
 | |
| matches are generated before it is tested for the tt(descriptions)
 | |
| tag.  This provides the possibility of defining different format
 | |
| strings for different types of matches.
 | |
| 
 | |
| Note also that some completer functions define additional
 | |
| `tt(%)'-sequences.  These are described for the completer functions that 
 | |
| make use of them.
 | |
| 
 | |
| For the tt(messages) tag, this style defines a string used by some
 | |
| completion functions to display messages.  Here, the `tt(%d)' is
 | |
| replaced with a message given by the completion function.
 | |
| 
 | |
| Finally, when set with the tt(warnings) tag, the format string is
 | |
| printed when no matches could be generated at all.  In this case the
 | |
| `tt(%d)' is replaced with the descriptions for the matches that were
 | |
| expected separated by spaces and the sequence `tt(%D)' is replaced with
 | |
| those descriptions separated by newlines.
 | |
| 
 | |
| The `tt(%)' for the sequences that are replaced by strings provided by 
 | |
| the completion functions like the `tt(%d)' may be followed by field
 | |
| width specifications as  described for the tt(zformat) builtin command
 | |
| from the tt(zsh/zutil) module, see
 | |
| ifzman(zmanref(zshmodules))\
 | |
| ifnzman(noderef(The zsh/zutil Module))\
 | |
| .
 | |
| )
 | |
| kindex(glob, completion style)
 | |
| item(tt(glob))(
 | |
| This is used by the tt(_expand) completer.  If
 | |
| it is set to `true' (the default), globbing will be attempted on the
 | |
| words resulting from substitution (see the tt(substitute) style) or
 | |
| the original string from the line.
 | |
| )
 | |
| kindex(global, completion style)
 | |
| item(tt(global))(
 | |
| If this is set to `true' (the default), the tt(_expand_alias)
 | |
| completer and bindable command will try to expand global aliases.
 | |
| )
 | |
| kindex(group-name, completion style)
 | |
| item(tt(group-name))(
 | |
| The completion system can put different types of matches in different
 | |
| groups which are then displayed separately in the list of possible
 | |
| completions.  This style can be used to give the names for these groups
 | |
| for particular tags.  For example, in command position the completion
 | |
| system generates names of builtin and external commands, names of
 | |
| aliases, shell functions and parameters and reserved words as possible
 | |
| completions.  To have the external commands and shell functions listed
 | |
| separately, one can set:
 | |
| 
 | |
| example(zstyle ':completion:*:*:-command-:*:commands' group-name commands
 | |
| zstyle ':completion:*:*:-command-:*:functions' group-name functions)
 | |
| 
 | |
| This also means that if the same name is used for different types of
 | |
| matches, then those matches will be displayed together in the same
 | |
| group.
 | |
| 
 | |
| If the name given is the empty string, then the name of the tag for
 | |
| the matches will be used as the name of the group. So, to have all
 | |
| different types of matches displayed separately, one can just set:
 | |
| 
 | |
| example(zstyle ':completion:*' group-name '')
 | |
| 
 | |
| All matches for which no group name is defined will be put in a group
 | |
| named tt(-default-).
 | |
| )
 | |
| kindex(group-order, completion style)
 | |
| item(tt(group-order))(
 | |
| This style is to be used together with the tt(group-name) style.  Once
 | |
| different types of matches are put into different groups, this style
 | |
| can be used to define in which order these groups should appear when listing 
 | |
| (compare tt(tag-order), which determines which completions appear at
 | |
| all).  The strings in the value are taken as group names and the named
 | |
| groups will be shown in the order in which their names appear in the
 | |
| value.  All groups whose names are not given in the value of this style 
 | |
| will appear in the order defined by the function generating the
 | |
| matches.
 | |
| 
 | |
| For example, to have names of builtin commands, shell functions and
 | |
| external commands appear in this order when completing in command
 | |
| position one would set:
 | |
| 
 | |
| example(zstyle ':completion:*:*:-command-:*' group-order \ 
 | |
|        builtins functions commands)
 | |
| )
 | |
| kindex(groups, completion style)
 | |
| item(tt(groups))(
 | |
| A style holding the names of the groups that should be completed. If
 | |
| this is not set by the user, the group names from the YP database or
 | |
| the file `tt(/etc/group)' will be used.
 | |
| )
 | |
| kindex(hidden, completion style)
 | |
| item(tt(hidden))(
 | |
| If this is set to one of the `true' values, the matches for the tags
 | |
| for which this is set will not appear in the list; only the
 | |
| description for the matches as set with the tt(format) style will be
 | |
| shown.  If this is set to `tt(all)', not even the description will be
 | |
| displayed.
 | |
| 
 | |
| Note that the matches will still be completed; they are just not shown 
 | |
| in the list.  To avoid having matches considered as possible
 | |
| completions at all, the tt(tag-order) style can be modified as described
 | |
| below.
 | |
| )
 | |
| kindex(hosts, completion style)
 | |
| item(tt(hosts))(
 | |
| A style holding the names of hosts that should be completed. If this
 | |
| is not set by the user the hostnames in `tt(/etc/hosts)' will be used.
 | |
| )
 | |
| kindex(hosts-ports, completion style)
 | |
| item(tt(hosts-ports))(
 | |
| This style is used by commands that need or accept hostnames and
 | |
| ports.  The strings in the value should be of the form
 | |
| `var(host)tt(:)var(port)'.  These hostnames and ports are completed
 | |
| depending on the information already on the line, so that if, for
 | |
| example, the hostname is already typed, only those ports specified for that
 | |
| host will be completed.  Multiple ports for the same host may appear.
 | |
| )
 | |
| kindex(ignore-line, completion style)
 | |
| item(tt(ignore-line))(
 | |
| This style is tested for the tags used when generating matches.  If it
 | |
| is set to `true', then none of the words that are already on the line
 | |
| will be considered possible completions.  If it is set to
 | |
| `tt(current)', the word the cursor is on will not be considered a
 | |
| possible completion.  The same happens if the value is
 | |
| `tt(current-shown)', but only if the list of completions is currently
 | |
| shown on the screen.  Finally, if it is set to `tt(other)' all words
 | |
| except the current one will not be considered to be a possible
 | |
| completion.
 | |
| 
 | |
| The values `tt(current)' and `tt(current-shown)' are a bit like the
 | |
| opposite of tt(accept-exact). They mean that only strings with
 | |
| missing characters will be completed.
 | |
| 
 | |
| Note that you almost certainly don't want to set this to `true' or
 | |
| `tt(other)' for a general
 | |
| context such as `tt(:completion:*)'.  This is because it would disallow
 | |
| completion of, for example, options multiple times even if the command
 | |
| in question accepts the option more than once.
 | |
| )
 | |
| kindex(ignore-parents, completion style)
 | |
| item(tt(ignore-parents))(
 | |
| The style is tested by the function completing pathnames without a tag to
 | |
| determine whether to ignore
 | |
| the names of directories already mentioned in the current word, or the
 | |
| name of the current working directory.  The value must include one or both
 | |
| of the following strings:
 | |
| 
 | |
| startitem()
 | |
| item(tt(parent))(
 | |
| The name of any directory whose path is already contained in the word on
 | |
| the line is ignored.  For example, when completing after tt(foo/../), the
 | |
| directory tt(foo) will not be considered a valid completion.
 | |
| )
 | |
| item(tt(pwd))(
 | |
| The name of the current working directory will not be completed, so that,
 | |
| for example, completion after tt(../) will not use the name of the current
 | |
| directory.
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| In addition, the value may include one or both of:
 | |
| 
 | |
| startitem()
 | |
| item(tt(..))(
 | |
| Ignore the specified directories only when the word on the line contains
 | |
| the substring `tt(../)'.
 | |
| )
 | |
| item(tt(directory))(
 | |
| Ignore only when names of directories are completed, not when completing
 | |
| names of files.
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| Note that names of directories ignored because of one of the tests
 | |
| will be ignored in the same way as the matches ignored because of the
 | |
| tt(ignored-patterns) style.  I.e., by using the tt(_ignored) completer
 | |
| it is possible to complete these directories nonetheless.
 | |
| )
 | |
| kindex(ignored-patterns, completion style)
 | |
| item(tt(ignored-patterns))(
 | |
| This style can be used to specify a list of patterns which are tested
 | |
| against against the trial completions in a given context; any matching
 | |
| completions will be removed from the list of possibilities.  The
 | |
| tt(_ignored) completer can appear in the list of completers to produce a
 | |
| list which includes these matches once more.  This is a more configurable
 | |
| version of the shell parameter tt($fignore).
 | |
| 
 | |
| Note that during the execution of completion functions, the
 | |
| tt(EXTENDED_GLOB) option is in effect, so the characters `tt(#)',
 | |
| `tt(~)' and `tt(^)' have special meanings in the patterns.
 | |
| )
 | |
| kindex(insert-ids, completion style)
 | |
| item(tt(insert-ids))(
 | |
| When completing process IDs, for example as arguments to the tt(kill) and
 | |
| tt(wait) builtins, completion allows the user to type the name of a
 | |
| command, which will be converted to the appropriate process ID.  A problem
 | |
| arises when the process name typed is not unique.  By default (or if this
 | |
| style is set explicitly to `tt(menu)') the name will be converted
 | |
| immediately to a set of possible IDs, and menu completion will be started
 | |
| to cycle through them.  If the value of the style is `tt(single)', however,
 | |
| the shell will wait until the user has typed enough to make the command
 | |
| unique before converting the name to an ID; the user must type any
 | |
| additional characters required.  If the value is any other string, menu
 | |
| completion will be started when the string typed by the user is longer than
 | |
| the common prefix of the corresponding IDs.
 | |
| )
 | |
| kindex(insert-tab, completion style)
 | |
| item(tt(insert-tab))(
 | |
| If this has one of the `true' values, the completion system will
 | |
| insert a TAB character (assuming it was used to start completion) instead
 | |
| of performing completion when there is no non-blank character to the left
 | |
| of the cursor.  If set to `false', completion will be done even there.
 | |
| 
 | |
| The value may also contain the substrings `tt(pending)' or
 | |
| `tt(pending=)var(val)' to make the character typed to start completion 
 | |
| be inserted instead of completion being tried when there is input
 | |
| pending which has not yet been processed by the shell. If a var(val)
 | |
| is given, completion will not be done if there are at least that many
 | |
| characters of unprocessed input. This is often useful to have set when 
 | |
| pasting characters into a terminal. Note however, that it relies on
 | |
| the tt($PENDING) special parameter from the tt(zsh/zle) module being set
 | |
| properly which is not guaranteed on all platforms.
 | |
| 
 | |
| The default value of this style is `true' unless when completing
 | |
| inside the tt(vared) builtin command, where it defaults to `false'.
 | |
| )
 | |
| kindex(insert-unambiguous, completion style)
 | |
| item(tt(insert-unambiguous))(
 | |
| This is used by the tt(_match) and tt(_approximate) completer
 | |
| functions, where the possible completions may not have a common prefix so
 | |
| that menu completion is often the most useful may of choosing completions.
 | |
| If the style is set to `true', the completer will start menu
 | |
| completion only if no unambiguous string could be generated that is at
 | |
| least as long as the original string typed by the user.  Note that the
 | |
| tt(_approximate) completer uses it after setting the completer field
 | |
| in the context name to one of tt(correct-)var(num) or
 | |
| tt(approximate-)var(num), where var(num) is the number of errors that
 | |
| were accepted.
 | |
| 
 | |
| When used for the tt(_match) completer, the style may also be set to
 | |
| the string `tt(pattern)'.  This makes the pattern on the line be left
 | |
| unchanged if it didn't match unambiguously.
 | |
| )
 | |
| kindex(keep-prefix, completion style)
 | |
| item(tt(keep-prefix))(
 | |
| This style is used by the tt(_expand) completer.  If it is `true', the
 | |
| completer will try to keep a prefix containing a tilde or parameter
 | |
| expansion.  I.e., the string `tt(~/f*)' would be expanded to
 | |
| `tt(~/foo)' instead of `tt(/home/user/foo)'.  If the style is set to
 | |
| `tt(changed)' (the default), the prefix will only be left unchanged if
 | |
| there were other changes between the expanded words and the original
 | |
| word from the command line.  Any other value makes the prefix be
 | |
| expanded unconditionally.
 | |
| 
 | |
| Note that with one of the `true' values, the tt(_expand) completer
 | |
| returns if there is only one expansion and that is, after restoring
 | |
| the original prefix, the same as the original word.  This means that
 | |
| other completers will be called immediately after tt(_expand).
 | |
| )
 | |
| kindex(last-prompt, completion style)
 | |
| item(tt(last-prompt))(
 | |
| This is used to determine if the completion code should try to put the
 | |
| cursor back onto the previous command line after showing a completion
 | |
| listing (as for the tt(ALWAYS_LAST_PROMPT) option).  As with several other
 | |
| styles, it is tested for the tt(default) tag as well as all the possible
 | |
| tags when generating matches.  The cursor will be moved back to the
 | |
| previous line if this style is `true' for all types of matches added.  Note
 | |
| also that this is independent of the numeric argument, unlike the
 | |
| tt(ALWAYS_LAST_PROMPT) option.
 | |
| )
 | |
| kindex(list, completion style)
 | |
| item(tt(list))(
 | |
| This style is used by the tt(_history_complete_word) bindable command.
 | |
| If it is set to `true' it has no effect, but if it is set to `false'
 | |
| the matches will not be listed, overriding the setting of the options
 | |
| that control listing behaviour, especially tt(AUTO_LIST). Use the
 | |
| context prefix `tt(:completion:history-words)'.
 | |
| )
 | |
| kindex(list-colors, completion style)
 | |
| item(tt(list-colors))(
 | |
| If the tt(zsh/complist) module is used, this style can be used to set
 | |
| color specifications as with the tt(ZLS_COLORS) and tt(ZLS_COLOURS)
 | |
| parameters (see
 | |
| ifzman(the section `The zsh/complist Module' in zmanref(zshmodules))\
 | |
| ifnzman(noderef(The zsh/complist Module))\
 | |
| ).
 | |
| 
 | |
| If this style is set for the tt(default) tag, the strings in the value 
 | |
| are taken as specifications that are to be used everywhere.  If it is
 | |
| set for other tags, the specifications are used only for matches of
 | |
| the type described by the tag.  For this to work best, the tt(group-name)
 | |
| style must be set to an empty string.  If the tt(group-name) tag
 | |
| specifies other names for the groups the matches in these groups can
 | |
| be colored by using these names together with the `tt((group)...)'
 | |
| syntax described for the tt(ZLS_COLORS) and tt(ZLS_COLOURS) parameters 
 | |
| and adding the specifications to the value for this style with the
 | |
| tt(default) tag (although in most cases it should work by setting this 
 | |
| style for the appropriate tags).
 | |
| 
 | |
| It is possible to use the same specifications set up for the GNU
 | |
| version of the tt(ls) command:
 | |
| 
 | |
| example(zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS})
 | |
| 
 | |
| The default colors are the same as for the GNU tt(ls) command and can be
 | |
| obtained by setting the style to an empty string (i.e. tt('')).
 | |
| )
 | |
| kindex(list-packed, completion style)
 | |
| item(tt(list-packed))(
 | |
| Like the tt(list-colors) style, this is tested with the tt(default)
 | |
| tag and all tags used when generating matches.  If it is set to `true'
 | |
| for a tag, the matches added for it will be listed as if the
 | |
| tt(LIST_PACKED) option were set.  If it is set to `false',
 | |
| they are listed normally.
 | |
| )
 | |
| kindex(list-prompt, completion style)
 | |
| item(tt(list-prompt))(
 | |
| If this style is set for the tt(default) tag,
 | |
| completion lists that don't fit on the screen can be scrolled (see
 | |
| ifzman(the description of the tt(zsh/complist) module in zmanref(zshmodules))\
 | |
| ifnzman(noderef(The zsh/complist Module))\
 | |
| ).  The value, if not the empty string, will be displayed after every
 | |
| screenful and the shell will prompt for a key press; if the style is
 | |
| set to the empty string,
 | |
| a default prompt will be used.  The value may contain the escape sequences
 | |
| `tt(%l)' or `tt(%L)', which will be replaced by the number of the last line
 | |
| displayed and the total number of lines; `tt(%m)' or `tt(%M)', which will
 | |
| be replaced by the number of the  last match shown and the total number of
 | |
| matches; and `tt(%p)' and `tt(%P)', which will be replaced by `tt(Top)'
 | |
| when at the beginning of the list, `tt(Bottom)' when at the end and the
 | |
| position shown in percent of the total length otherwise.  In each of these
 | |
| cases the form with the uppercase letter is replaced by a string of fixed
 | |
| width, padded to the  right with spaces.  As in other prompt strings, the
 | |
| escape sequences `tt(%S)', `tt(%s)', `tt(%B)', `tt(%b)', `tt(%U)',
 | |
| `tt(%u)', and `tt(%{)...tt(%})' for entering and leaving the display modes
 | |
| standout, bold and underline are also available.
 | |
| )
 | |
| kindex(list-rows-first, completion style)
 | |
| item(tt(list-rows-first))(
 | |
| This style is tested in the same way as the tt(list-packed) style and
 | |
| determines if matches are to be listed in a rows-first fashion, as for the
 | |
| tt(LIST_ROWS_FIRST) option.
 | |
| )
 | |
| kindex(list-suffixes, completion style)
 | |
| item(tt(list-suffixes))(
 | |
| This style is used by the function used to complete filenames.  If
 | |
| completion is attempted on a string containing multiple partially
 | |
| typed pathname components and this style is set to `true', all
 | |
| components starting with the first one for which more than one match
 | |
| could be generated will be shown.
 | |
| )
 | |
| kindex(local, completion style)
 | |
| item(tt(local))(
 | |
| This style is used by completion functions which generate URLs as
 | |
| possible matches to add suitable matches when a URL points to a
 | |
| local web server, that is, one whose files are available directly on the
 | |
| local file system.  Its value should consist of three strings: a
 | |
| hostname, the path to the default web pages for the server and the
 | |
| directory name used by a user placing web pages within their home
 | |
| area.  For example, completion after `tt(http://toast/~yousir/)' will
 | |
| attempt to match the name `tt(toast)' against the first argument to the
 | |
| style, and if successful will look in the directory under tt(~yousir) given
 | |
| by the third argument to the style for possible completions.
 | |
| )
 | |
| kindex(match-original, completion style)
 | |
| item(tt(match-original))(
 | |
| This is used by the tt(_match) completer.  If it is set to
 | |
| tt(only), tt(_match) will try to generate matches without inserting a
 | |
| `tt(*)' at the cursor position.  If set to any other non-empty value,
 | |
| it will first try to generate matches without inserting the `tt(*)'
 | |
| and if that yields no matches, it will try again with the `tt(*)'
 | |
| inserted.  If it is unset or set to the empty string, matching will
 | |
| only be done with the `tt(*)' inserted.
 | |
| )
 | |
| kindex(matcher, completion style)
 | |
| item(tt(matcher))(
 | |
| This style is tested for tags used when generating matches.  Its value
 | |
| is used as an match specification additional to any given by the
 | |
| tt(matcher-list) style which should be in the form described in
 | |
| ifzman(the section `Matching Control' in zmanref(zshcompwid))\
 | |
| ifnzman(noderef(Matching Control))\
 | |
| .
 | |
| )
 | |
| kindex(matcher-list, completion style)
 | |
| item(tt(matcher-list))(
 | |
| This style is used by the main completion function to retrieve match
 | |
| specifications that are to be used everywhere.  Its value should be a
 | |
| list of such specifications.  The completion system will try them one
 | |
| after another for each completer selected. For example, to first try
 | |
| simple completion and, if that generates no matches, case-insensitive
 | |
| completion one would do:
 | |
| 
 | |
| example(zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}')
 | |
| 
 | |
| By default every specification replaces previous ones. If specification
 | |
| is prefixed with tt(+), it is added to the existing list. This allows
 | |
| testing more general patterns without repeating the whole list every
 | |
| time, as in:
 | |
| 
 | |
| example(zstyle ':completion:*' matcher-list '' '+m{a-Z}={A-Z}' '+m{A-Z}={a-z}')
 | |
| 
 | |
| The style allows even finer control by specifying a particular completer,
 | |
| without the leading underscore, in the third field of the completion
 | |
| context.  For example, if one uses the completers tt(_complete) and
 | |
| tt(_prefix) but wants to try case-insensitive completion only when using
 | |
| the tt(_complete) completer, one would do:
 | |
| 
 | |
| example(zstyle ':completion:*' completer _complete _prefix
 | |
| zstyle ':completion:*:complete:*' matcher-list \ 
 | |
|        '' 'm:{a-zA-Z}={A-Za-z}')
 | |
| 
 | |
| Note that the tt(completer) style allows user-defined names to 
 | |
| be used in the context instead of the name of the completer.
 | |
| This is useful if, for example, one wants to try
 | |
| normal completion without a match specification and with
 | |
| case-insensitive matching first, correction if that doesn't generate
 | |
| any matches and partial-word completion if that doesn't yield any
 | |
| matches either.  In this case one can give the tt(_complete)
 | |
| completer more than once in the tt(completer) style and define different
 | |
| match specifications for each occurrence, as in:
 | |
| 
 | |
| example(zstyle ':completion:*' completer _complete _correct _complete:foo
 | |
| zstyle ':completion:*:complete:*' matcher-list \ 
 | |
|     '' 'm:{a-zA-Z}={A-Za-z}'
 | |
| zstyle ':completion:*:foo:*' matcher-list \ 
 | |
|     'm:{a-zA-Z}={A-Za-z} r:|[-_./]=* r:|=*')
 | |
| 
 | |
| If the style is unset in any context no match specification is applied;
 | |
| further, some completers such as tt(_correct) and tt(_approximate) do not
 | |
| use the match specifications at all.  However, it is always safe
 | |
| to use the simple form for this style (as in the first example above),
 | |
| since any completers which do not use match specifications will only ever
 | |
| be called once, rather than once per specification.
 | |
| 
 | |
| Since the specification-strings in this style have to be tried one after
 | |
| another, it is a good idea to keep their number low.  In most cases
 | |
| one to three strings (each of which may, without to large a performance 
 | |
| hit, consist of more than one single match specification) will give
 | |
| acceptable performance.
 | |
| )
 | |
| kindex(max-errors, completion style)
 | |
| item(tt(max-errors))(
 | |
| This is used by the tt(_approximate) and tt(_correct) completer functions
 | |
| to determine the maximum number of errors to allow.  The completer will try
 | |
| to generate completions by first allowing one error, then two errors, and
 | |
| so on, until either a match or matches were found or the maximum number of
 | |
| errors given by this style has been reached.
 | |
| 
 | |
| If the value for this style contains the string `tt(numeric)', the 
 | |
| completer function will take any numeric argument as the
 | |
| maximum number of errors allowed. For example, with
 | |
| 
 | |
| example(zstyle ':completion:*:approximate:::' max-errors 2 numeric)
 | |
| 
 | |
| two errors are allowed if no numeric argument is given, but with
 | |
| a numeric argument of six (as in `tt(ESC-6 TAB)'), up to six
 | |
| errors are accepted.  Hence with a value of `tt(0 numeric)', no correcting
 | |
| completion will be attempted unless a numeric argument is given.
 | |
| 
 | |
| If the value contains the string `tt(not-numeric)', the completer
 | |
| will em(not) try to generate corrected
 | |
| completions when given a numeric argument, so in this case the number given
 | |
| should be greater than zero.  For example, `tt(2 not-numeric)' specifies that
 | |
| correcting completion with two errors will usually be performed, but if a
 | |
| numeric argument is given, correcting completion will not be
 | |
| performed.
 | |
| 
 | |
| The default value for this style is `tt(2 numeric)'.
 | |
| )
 | |
| kindex(menu, completion style)
 | |
| item(tt(menu))(
 | |
| If this is set to true in a given context, using any of the tags defined
 | |
| for a given completion, menu completion will be used.  The tag
 | |
| `tt(default)' can be used to set the default value, but a specific tag will take
 | |
| precedence.  If none of the values found in this way is true but at least
 | |
| one is set to `tt(auto)' the behaviour will be as for the tt(AUTO_MENU)
 | |
| option.  Finally, if one of the values is explicitly set to false, menu
 | |
| completion will be turned off even if it would otherwise be active (for
 | |
| example, with the tt(MENU_COMPLETE) option).
 | |
| 
 | |
| Using the form `tt(yes=)var(num)', where `tt(yes)' may be any of the
 | |
| true values (`tt(yes)', `tt(true)', `tt(on)' and `tt(1)') turns on
 | |
| menu completion if there at least var(num) matches.  Using this for one
 | |
| of the `false' values (as in `tt(no=10)') makes menu completion
 | |
| em(not) be used if there are var(num) or more matches.  Of course,
 | |
| this is only useful when menu completion is normally used, e.g. by
 | |
| setting the tt(MENU_COMPLETE) option.  The `true' values may also be
 | |
| used in the form `tt(yes=long)' to turn on menu completion
 | |
| if the list does not fit onto the screen.  This will start menu
 | |
| completion only if normal completion was attempted, not when only the
 | |
| list of possible completions was requested.  To start menu completion
 | |
| even then, the value `tt(yes=long-list)' can be used.
 | |
| 
 | |
| In addition to (or instead of) the above possibilities, the value may
 | |
| contain the string `tt(select)', optionally followed by an equals sign and a
 | |
| number.  In this case menu selection (as defined by the tt(zsh/complist)
 | |
| module) will be started.  Without the optional number, it will be started
 | |
| unconditionally and with a number it will be started only if at least that
 | |
| many matches are generated; if the values for more than one tag provide a
 | |
| number, the smallest number is taken.  Menu selection can be turned off
 | |
| explicitly by defining a value containing the string `tt(no-select)'.
 | |
| 
 | |
| It is also possible to start menu selection only if the list of
 | |
| matches does not fit on the screen by using the value
 | |
| `tt(select=long)'.  This will only start menu selection if the widget
 | |
| invoked does completion, not simply listing as done by
 | |
| tt(delete-char-or-list); to start menu selection even here, use the value
 | |
| `tt(select=long-list)'.
 | |
| 
 | |
| To turn on menu completion or menu selection when a certain number of
 | |
| matches is generated em(or) the list of matches does not fit onto the
 | |
| screen, both of `tt(yes=)' and `tt(select=)' can be given twice, once
 | |
| with a number and once with `tt(long)' or `tt(long-list)'.
 | |
| )
 | |
| kindex(numbers, completion style)
 | |
| item(tt(numbers))(
 | |
| This is used with the tt(jobs) tag.  If it is `true', the shell will
 | |
| complete the job numbers instead of the shortest unambiguous strings
 | |
| of the jobs' command lines.  If the value is a number, job numbers will
 | |
| only be used if that many words from the job descriptions are required to
 | |
| resolve ambiguities.  For example, if the value is `tt(1)', strings will
 | |
| only be used if all jobs differ in the first word on their command lines.
 | |
| )
 | |
| kindex(old-list, completion style)
 | |
| item(tt(old-list))(
 | |
| This is used by the tt(_oldlist) completer.  If it is set to `tt(always)',
 | |
| then standard widgets which perform listing will retain the current list of
 | |
| matches, however they were generated; this can be turned off explicitly
 | |
| with the value `tt(never)', giving the behaviour without the tt(_oldlist)
 | |
| completer.  If the style is unset, or any other value, then the existing
 | |
| list of completions is displayed if it is not already; otherwise, the
 | |
| standard completion list is generated; this is the default behaviour of
 | |
| tt(_oldlist).  However, if there is an old list and this style contains
 | |
| the name of the completer function that generated the list, then the
 | |
| old list will be used even if it was generated by a widget which does
 | |
| not do listing.
 | |
| 
 | |
| For example, suppose you type tt(^Xc) to use the tt(_correct_word)
 | |
| widget, which generates a list of corrections for the word under the
 | |
| cursor.  Usually, typing tt(^D) would generate a standard list of
 | |
| completions for the word on the command line, and show that.  With
 | |
| tt(_oldlist), it will instead show the list of corrections already
 | |
| generated.
 | |
| 
 | |
| As another example consider the tt(_match) completer: with the
 | |
| tt(insert-unambiguous) style set to `true' it inserts only a common prefix
 | |
| string, if there is any.  However, this may remove parts of the original
 | |
| pattern, so that further completion could produce more matches than on the
 | |
| first attempt.  By using the tt(_oldlist) completer and setting this style
 | |
| to tt(_match), the list of matches generated on the first attempt will be
 | |
| used again.
 | |
| )
 | |
| kindex(old-matches, completion style)
 | |
| item(tt(old-matches))(
 | |
| This is used by the tt(_all_matches) completer to decide if an old
 | |
| list of matches should be used if one exists.  It may be set to one of 
 | |
| the `true' values or to the string `tt(only)' to use such a list.  If
 | |
| it is set to `tt(only)', tt(_all_matches) will only use an old list
 | |
| and won't have any effect on the list of matches currently being
 | |
| generated.
 | |
| )
 | |
| kindex(old-menu, completion style)
 | |
| item(tt(old-menu))(
 | |
| This is used by the tt(_oldlist) completer.  It controls how menu
 | |
| completion behaves when a completion has already been inserted and the
 | |
| user types a standard completion key type such as tt(TAB).  The default
 | |
| behaviour of tt(_oldlist) is that menu completion always continues
 | |
| with the existing list of completions.  If this style is set to
 | |
| `false', however, a new completion is started if the old list was
 | |
| generated by a different completion command; this is the behaviour without
 | |
| the  tt(_oldlist) completer.
 | |
| 
 | |
| For example, suppose you type tt(^Xc) to generate a list of corrections,
 | |
| and menu completion is started in one of the usual ways.  Usually, or with
 | |
| this style set to tt(false), typing tt(TAB) at this point would start
 | |
| trying to complete the line as it now appears.  With tt(_oldlist), it
 | |
| instead continues to cycle through the list of corrections.
 | |
| )
 | |
| kindex(original, completion style)
 | |
| item(tt(original))(
 | |
| This is used by the tt(_approximate) and tt(_correct)
 | |
| completers to decide if the original string should be added as
 | |
| one possible completion.  Normally, this is done only if there are
 | |
| at least two possible corrections, but if this style is set to `true', it
 | |
| is always added.  Note that these completers use this style after
 | |
| setting the completer field in the context name to
 | |
| tt(correct-)var(num) or tt(approximate-)var(num), where var(num) is
 | |
| the number of errors that were accepted.
 | |
| )
 | |
| kindex(regular, completion style)
 | |
| item(tt(regular))(
 | |
| This style is used by the tt(_expand_alias) completer and bindable 
 | |
| command.  If set to `true' (the default), regular aliases will be
 | |
| expanded but only in command position.  If it is set to `false', regular
 | |
| aliases will never be expanded and if it is set to the string
 | |
| `tt(always)', regular aliases will be expanded even if not in command
 | |
| position.
 | |
| )
 | |
| kindex(packageset, completion style)
 | |
| item(tt(packageset))(
 | |
| This style is used when completing arguments of the Debian `tt(dpkg)'
 | |
| program.  It contains an override for the default package set
 | |
| for a given context.  For example,
 | |
| 
 | |
| example(zstyle ':completion:*:complete:dpkg:option--status-1:*' \ 
 | |
|                packageset avail)
 | |
| 
 | |
| causes available packages, rather than only installed packages,
 | |
| to be completed for `dpkg --status'.
 | |
| )
 | |
| kindex(path, completion style)
 | |
| item(tt(path))(
 | |
| The function that completes color names uses this style with the 
 | |
| tt(colors) tag.  The value should be the pathname of a file
 | |
| containing color names in the format of an X11 tt(rgb.txt) file.  If
 | |
| the style is not set but this file is found in one of various standard
 | |
| locations it will be used as the default.
 | |
| )
 | |
| kindex(ports, completion style)
 | |
| item(tt(ports))(
 | |
| A style holding the service names of ports to complete.  If this is
 | |
| not set by the user, the service names from `tt(/etc/services)' will
 | |
| be used.
 | |
| )
 | |
| kindex(prefix-hidden, completion style)
 | |
| item(tt(prefix-hidden))(
 | |
| This is used when matches with a common prefix are added (e.g. option
 | |
| names).  If it is `true', this prefix will not be shown in the list of
 | |
| matches.
 | |
| 
 | |
| The default value for this style is `false'.
 | |
| )
 | |
| kindex(prefix-needed, completion style)
 | |
| item(tt(prefix-needed))(
 | |
| This, too, is used for matches with a common prefix.  If it is set to
 | |
| `true' this common prefix has to be typed by the user to generate the
 | |
| matches.  E.g. for options this means that the `tt(-)', `tt(+)', or
 | |
| `tt(-)tt(-)' has to be on the line to make option names be completed at
 | |
| all.
 | |
| 
 | |
| The default style for this style is `true'.
 | |
| )
 | |
| kindex(range, completion style)
 | |
| item(tt(range))(
 | |
| This is used by the tt(_history) completer and the
 | |
| tt(_history_complete_word) bindable command to decide which words
 | |
| should be completed.  It may be set to a number, var(N), to say that
 | |
| only the last var(N) words from the history should be completed.  The
 | |
| value may also be of the form `var(max)tt(:)var(slice)'.  This means
 | |
| that first the last var(slice) words will be completed.  If that
 | |
| yields no matches, the var(slice) words before those will be tried and 
 | |
| so on, until either at least one match is generated or var(max) words
 | |
| have been tried.  The default is to complete all words from the
 | |
| history at once.
 | |
| )
 | |
| kindex(remove-all-dups, completion style)
 | |
| item(tt(remove-all-dups))(
 | |
| The tt(_history_complete_word) bindable command and the tt(_history)
 | |
| completer use this to decide if all duplicate matches should be
 | |
| removed, rather than just consecutive duplicates.
 | |
| )
 | |
| kindex(select-prompt, completion style)
 | |
| item(tt(select-prompt))(
 | |
| If this is set for the tt(default) tag, its
 | |
| value will be displayed during menu selection (see the tt(menu) style
 | |
| above) when the completion list does not fit on the screen as a
 | |
| whole.  The same escapes as for the tt(list-prompt) style are
 | |
| understood, but give the number of the match or line the mark is
 | |
| on.  A default prompt is used when the value is the empty string.
 | |
| )
 | |
| kindex(select-scroll, completion style)
 | |
| item(tt(select-scroll))(
 | |
| This style is tested for the tt(default) tag and determines how a
 | |
| completion list is scrolled during a menu selection (see the tt(menu)
 | |
| style above) when the completion list does not fit on the screen as a
 | |
| whole.  Its value should be `tt(0)' (zero) to scroll by
 | |
| half-screenfuls, a positive integer to scroll by that many lines and a
 | |
| negative number to scroll by the number of lines of the screen minus
 | |
| that number (or plus the number, since it is negative).  The default is to
 | |
| scroll by single lines.
 | |
| )
 | |
| kindex(single-ignored, completion style)
 | |
| item(tt(single-ignored))(
 | |
| This is used by the tt(_ignored) completer.  It specifies what
 | |
| should be done if it can generate only one match, which is often a
 | |
| special case.  If its value is `tt(show)', the single match will be
 | |
| displayed but not inserted.  If the value is `tt(menu)', then the single
 | |
| match and the original string are both added as matches and menu completion
 | |
| is started so that one can easily select either of them.
 | |
| )
 | |
| kindex(sort, completion style)
 | |
| item(tt(sort))(
 | |
| If set to `true', completion functions that generate words from the
 | |
| history as possible matches sort these words alphabetically instead of
 | |
| keeping them in the order in which they appear in the history (from
 | |
| youngest to oldest).
 | |
| 
 | |
| This is also used by the tt(_expand) completer.  Here, if it is set to
 | |
| `true', the expansions generated will always be sorted.  If it is set
 | |
| to `tt(menu)', then the expansions are only sorted when they are offered 
 | |
| as single strings (not in the string containing all possible
 | |
| expansions).
 | |
| )
 | |
| kindex(special-dirs, completion style)
 | |
| item(tt(special-dirs))(
 | |
| Normally, the completion code will not produce the directory names
 | |
| `tt(.)' and `tt(..)' as possible completions.  If this style is set to
 | |
| `true', it will add both `tt(.)' and `tt(..)' as possible completions;
 | |
| if it is set to `tt(..)', only `tt(..)' will be added.
 | |
| )
 | |
| kindex(squeeze-slashes, completion style)
 | |
| item(tt(squeeze-slashes))(
 | |
| If set to `true', sequences of slashes (as in `tt(foo//bar)') will be
 | |
| treated as if they were only one slash when completing pathnames.  This
 | |
| is the usual behaviour of UNIX paths.  However, by default the file
 | |
| completion function behaves as if there were a `tt(*)' between
 | |
| the slashes.
 | |
| )
 | |
| kindex(stop, completion style)
 | |
| item(tt(stop))(
 | |
| If set to `true', the tt(_history_complete_word) bindable
 | |
| command will stop once when reaching the beginning or end of the
 | |
| history.  Invoking tt(_history_complete_word) will then wrap around to 
 | |
| the opposite end of the history.  If this style is set to `false' (the 
 | |
| default), tt(_history_complete_word) will loop immediately as in a
 | |
| menu completion.
 | |
| )
 | |
| kindex(subst-globs-only, completion style)
 | |
| item(tt(subst-globs-only))(
 | |
| This is used by the tt(_expand) completer.  If it is set to `true',
 | |
| the expansion will only be used if it resulted from globbing; hence,
 | |
| if expansions resulted from the use of the tt(substitute) style
 | |
| described below, but these were not further changed by globbing, the
 | |
| expansions will be rejected.
 | |
| 
 | |
| The default for this style is `false'.
 | |
| )
 | |
| kindex(substitute, completion style)
 | |
| item(tt(substitute))(
 | |
| This boolean style controls whether the tt(_expand) completer will
 | |
| first try to expand all substitutions in the string (such as
 | |
| `tt($LPAR()...RPAR())' and `tt(${...})').
 | |
| 
 | |
| The default is `true'.
 | |
| )
 | |
| kindex(suffix, completion style)
 | |
| item(tt(suffix))(
 | |
| This is used by the tt(_expand) completer if the word starts with a
 | |
| tilde or parameter expansion. If it is set to `true', the word will
 | |
| only be expanded if it doesn't have a suffix, i.e. if it is something
 | |
| like `tt(~foo)' or `tt($foo)', but not if it is `tt(~foo/)' or
 | |
| `tt($foo/bar)', unless that suffix itself contains characters eligible
 | |
| for expansion.  The default for this style is `true'.
 | |
| )
 | |
| kindex(tag-order, completion style)
 | |
| item(tt(tag-order))(
 | |
| This provides a mechanism for sorting how the tags available in a
 | |
| particular context will be used.
 | |
| 
 | |
| The values for the style are sets of space-separated lists of tags.
 | |
| The tags in each value will be tried at the same time; if no match is
 | |
| found, the next value is used.  (See the tt(file-patterns) style for
 | |
| an exception to this behavior.)
 | |
| 
 | |
| For example:
 | |
| 
 | |
| example(zstyle ':completion:*:complete:-command-:*' tag-order \ 
 | |
|     'commands functions')
 | |
| 
 | |
| specifies that completion in command position should offer only
 | |
| completions for external commands and shell functions immediately.
 | |
| 
 | |
| In addition to tag names, each string in the value may take one of the
 | |
| following forms:
 | |
| 
 | |
| startitem()
 | |
| item(tt(-))(
 | |
| If any string in the value consists of only a hyphen,
 | |
| then em(only) the tags specified by the other strings in the value are
 | |
| generated.  Normally all tags not explicitly selected are tried last
 | |
| if the specified tags fail to generate any matches.  This means 
 | |
| that a value consisting only of a single hyphen turns off completion.
 | |
| )
 | |
| item(tt(!) var(tags)...)(
 | |
| A string starting with an exclamation mark
 | |
| specifies names of tags that are em(not) to be used.  The effect is
 | |
| the same as if all other possible tags for the context had been
 | |
| listed.
 | |
| )
 | |
| item(var(tag)tt(:)var(label) ...)(
 | |
| In strings not starting with an exclamation mark, it is also possible
 | |
| to specify tag labels instead of only tags, where var(tag) is one of
 | |
| the tags offered
 | |
| by the completion function for the current context and var(label) is a 
 | |
| name.  For this, the completion function will generate matches in the
 | |
| same way as for the var(tag) but it will use the var(label) in place
 | |
| of the tag in the context names used to look up styles.  If the
 | |
| var(label) starts with a hyphen, the var(tag) is prepended to the
 | |
| var(label) to form the name used for lookup.  This can be
 | |
| used to make the completion system try a certain tag more than once,
 | |
| supplying different style settings for each attempt.  For example,
 | |
| 
 | |
| example(zstyle ':completion:*:*:-command-:*' \ 
 | |
|     tag-order 'functions:-non-comp'
 | |
| zstyle ':completion:*:functions-non-comp' \ 
 | |
|     ignored-patterns '_*')
 | |
| 
 | |
| This makes completion in command position first try only names of shell
 | |
| functions that don't match the pattern `tt(_*)'. If that generates no
 | |
| matches, the default of trying all the other things that can be
 | |
| completed in command position is used, including the names of all
 | |
| shell functions.
 | |
| 
 | |
| The var(label) may optionally be followed by a second colon and a
 | |
| description.  This description will then be used for the `tt(%d)' in
 | |
| the value of the tt(format) style instead of the default description
 | |
| supplied by the completion function.  Spaces in the description have to 
 | |
| be quoted by preceding them with a backslash and a `tt(%d)' appearing
 | |
| in the description is replaced with the description given by the
 | |
| completion function.
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| In each of the cases above, the tag may also be a pattern or more than 
 | |
| one pattern inside braces and separated by commas.  In this
 | |
| case all of the offered tags matching the pattern(s) will be used except 
 | |
| for those that are given explicitly in the same string.  There are
 | |
| probably two main uses of this.  One is the case where one wants to try
 | |
| one of the tags more than once, setting other styles differently for
 | |
| each try, but still wants to use all the other tags without having to
 | |
| repeat them all.  For example, to make completion of function names in
 | |
| command position ignore all the completion functions starting with an
 | |
| underscore the first time completion is tried, one could do:
 | |
| 
 | |
| example(zstyle ':completion:*:*:-command-:*' tag-order \ 
 | |
|     'functions:-non-comp *' functions
 | |
| zstyle ':completion:*:functions-non-comp' ignored-patterns '_*')
 | |
| 
 | |
| Here, the completion system will first try all tags offered, but will
 | |
| use the tag label tt(functions-non-comp) when looking up styles for
 | |
| the function names completed.  For this, the tt(ignored-patterns) style 
 | |
| is set to exclude functions starting with an underscore from the set
 | |
| of possible matches.  If none of the generated matches match the string 
 | |
| on the line, the completion system will use the second value of the
 | |
| tt(tag-order) style and complete functions names again, but this time
 | |
| using the name tt(functions) to look up styles, so that the
 | |
| tt(ignored-patterns) style is not used and all function names
 | |
| are considered.
 | |
| 
 | |
| Of course, this can also be used to split the matches for one tag into 
 | |
| different groups. For example:
 | |
| 
 | |
| example(zstyle ':completion:*' tag-order \ 
 | |
|     'options:-long:long\ options
 | |
|      options:-short:short\ options
 | |
|      options:-single-letter:single\ letter\ options'
 | |
| 
 | |
| zstyle ':completion:*:options-long' ignored-patterns '[-+](|-|[^-]*)'
 | |
| zstyle ':completion:*:options-short' ignored-patterns '--*' '[-+]?'
 | |
| zstyle ':completion:*:options-single-letter' ignored-patterns '???*')
 | |
| 
 | |
| With the tt(group-names) style set, this makes options beginning with
 | |
| `tt(-)tt(-)', options beginning with a single `tt(-)' or `tt(+)' but
 | |
| containing multiple characters, and single-letter options be displayed
 | |
| in separate groups with different descriptions.
 | |
| 
 | |
| The second interesting use of patterns is the case where one wants to
 | |
| try multiple match specifications one after another.  The
 | |
| tt(matcher-list) style offers something similar, but it is tested very
 | |
| early in the completion system and hence can't be set for single
 | |
| commands nor for more specific contexts.  Here is how to
 | |
| try normal completion without any match specification and, if that
 | |
| generates no matches, try again with case-insensitive matching, restricting
 | |
| the effect to arguments of the command tt(foo):
 | |
| example(zstyle ':completion:*:*:foo:*' tag-order '*' '*:-case'
 | |
| zstyle ':completion:*-case' matcher 'm:{a-z}={A-Z}')
 | |
| 
 | |
| First, all the tags offered when completing after tt(foo) are tried using
 | |
| the normal tag name.  If that generates no matches, the second value of
 | |
| tt(tag-order) is used, which tries all tags again except that this time
 | |
| each has tt(-case) appended to its name for lookup of styles.  Hence this
 | |
| time the value for the tt(matcher) style from the second call to tt(zstyle)
 | |
| in the example is used to make completion case-insensitive.
 | |
| 
 | |
| Using the tt(-e) option of the tt(zstyle) builtin command, it is
 | |
| possible to specify conditions saying when certain tags are to be
 | |
| used. For example:
 | |
| 
 | |
| example(zstyle -e '*:-command-:*' tag-order '
 | |
|     if [[ -n $PREFIX ]]; then
 | |
|       reply=( )
 | |
|     else
 | |
|       reply=( - )
 | |
|     fi')
 | |
| 
 | |
| Makes completion in command position happen only if the string on 
 | |
| the line is not empty.  This is tested using the tt(PREFIX)
 | |
| parameter which is special in completion widgets; see
 | |
| ifzman(zshcompwid)\
 | |
| ifnzman(noderef(Completion Widgets))
 | |
| for a description of these special parameters.
 | |
| Setting tt(reply) to an empty array ensures that only the default
 | |
| behaviour of trying all tags at once is used and setting it to an
 | |
| array containing only a hyphen disables that default behaviour -- thus 
 | |
| keeping all tags from being tried.
 | |
| 
 | |
| If no style has been defined for a context, the strings
 | |
| `tt((|*-)argument-* (|*-)option-* values)' and `tt(options)' plus all
 | |
| tags offered by the completion function will be used to provide a
 | |
| sensible default behavior that causes arguments (whether normal command
 | |
| arguments or arguments of options) to be completed before option names for
 | |
| most commands.
 | |
| )
 | |
| kindex(urls, completion style)
 | |
| item(tt(urls))(
 | |
| This is used together with the the tt(urls) tag by completion
 | |
| functions that generate URLs as possible matches.  If the value
 | |
| consists of more than one string or if the only string does not name a 
 | |
| file or directory, the strings are used as the URLs to complete.
 | |
| 
 | |
| If the value contains only one string and that is the name of a normal 
 | |
| file, the URLs are taken from that file (where the URLs may be
 | |
| separated by white space or newlines).
 | |
| 
 | |
| Finally, if the only string in the value names a directory, that
 | |
| should contain sub-directories named after the
 | |
| retrieval methods which occur as the first part of a URL, i.e.
 | |
| `tt(http)', `tt(ftp)', `tt(bookmark)', and so on.  These
 | |
| sub-directories should contain files and other sub-directories whose
 | |
| pathnames are possible completions after the initial `tt(http://)',
 | |
| `tt(ftp://)', etc. See the description in the file tt(_urls) in the
 | |
| tt(User) sub-directory of the completion system for more information.
 | |
| )
 | |
| kindex(use-cache, completion style)
 | |
| item(tt(use-cache))(
 | |
| If this is set, the completion caching layer is activated for any completions
 | |
| which use it (via the tt(_store_cache), tt(_retrieve_cache), and
 | |
| tt(_cache_invalid) functions).  The directory containing the cache
 | |
| files can be changed with the tt(cache-path) style.
 | |
| )
 | |
| kindex(use-compctl, completion style)
 | |
| item(tt(use-compctl))(
 | |
| If this style is set to a string em(not) equal to tt(false), tt(0),
 | |
| tt(no), and tt(off), the completion system may use any completion
 | |
| specifications defined with the tt(compctl) builtin command.  If the
 | |
| style is unset, this is done only if the tt(zsh/compctl) module
 | |
| is loaded.  The string may also contain the substring `tt(first)' to
 | |
| make the definition for `tt(compctl -T)' be used, and the substring
 | |
| `tt(default)' to make the one for `tt(compctl -D)' be used.
 | |
| 
 | |
| Note that this is only intended to smooth the transition from
 | |
| tt(compctl) to the new completion system and may disappear in the
 | |
| future.
 | |
| 
 | |
| Note also that the definitions from tt(compctl) will only be used if
 | |
| there is no specific completion function for the command in question.  For
 | |
| example, while completing arguments to the command tt(foo), if this was
 | |
| handled by a command function tt(_foo), tt(compctl) would never be tried,
 | |
| while if it was handled by tt(_default), tt(compctl) would be tried.
 | |
| )
 | |
| kindex(users, completion style)
 | |
| item(tt(users))(
 | |
| This may be set to a list of names that should be completed whenever 
 | |
| a username is needed. If it is not set or the string on the line
 | |
| doesn't match any of the strings in this list, all usernames will be
 | |
| completed.
 | |
| )
 | |
| kindex(users-hosts, completion style)
 | |
| item(tt(users-hosts))(
 | |
| The values of this style should be of the form
 | |
| `var(user)tt(@)var(host)' or `var(user)tt(:)var(host)'. It is used for
 | |
| commands that need pairs of
 | |
| user- and hostnames.  For such commands, only the pairs from this style 
 | |
| are used and if, for example, the username is already typed, then only 
 | |
| the hostnames for which there is a pair with that username is defined.
 | |
| 
 | |
| If set for the tt(my-accounts) tag, this is used for commands such as
 | |
| tt(rlogin) and tt(ssh); in this case the style should contain the names of
 | |
| the user's own accounts on remote hosts.  If set for the tt(other-accounts)
 | |
| tag, it is used for commands such as tt(talk) and tt(finger) and should
 | |
| contain other people's accounts.  Finally, it may also be used by some
 | |
| commands with the tt(accounts) tag.
 | |
| )
 | |
| kindex(users-hosts-ports, completion style)
 | |
| item(tt(users-hosts-ports))(
 | |
| Like tt(users-hosts) but used for commands like tt(telnet) and
 | |
| containing strings of the form `var(user)tt(@)var(host)tt(:)var(port)'.
 | |
| )
 | |
| kindex(verbose, completion style)
 | |
| item(tt(verbose))(
 | |
| This is used in several contexts to decide if only a simple or a
 | |
| verbose list of matches should be generated. For example some commands 
 | |
| show descriptions for option names if this style is `true'.
 | |
| 
 | |
| The default value for this style is `true'.
 | |
| )
 | |
| kindex(word, completion style)
 | |
| item(tt(word))(
 | |
| This is used by the tt(_list) completer, which prevents the insertion of
 | |
| completions until a second completion attempt when the line has not
 | |
| changed.  The normal way of finding out if the line has changed is to
 | |
| compare its entire contents between the two occasions.  If this style is
 | |
| true, the comparison is instead performed only on the current word.
 | |
| Hence if completion is performed on another word with the same contents,
 | |
| completion will not be delayed.
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| texinode(Control Functions)(Bindable Commands)(Completion System Configuration)(Completion System)
 | |
| sect(Control Functions)
 | |
| cindex(completion system, choosing completers)
 | |
| 
 | |
| The initialization script tt(compinit) redefines all the widgets
 | |
| which perform completion to call the supplied widget function
 | |
| tt(_main_complete).  This function acts as a wrapper calling the
 | |
| so-called `completer' functions that generate matches.  If
 | |
| tt(_main_complete) is called with arguments, these are taken as the
 | |
| names of completer functions to be called in the order given.  If no
 | |
| arguments are given, the set of functions to try is taken from the
 | |
| tt(completer) style.  For example, to use normal completion and
 | |
| correction if that doesn't generate any matches:
 | |
| 
 | |
| example(zstyle ':completion:*' completer _complete _correct)
 | |
| 
 | |
| after calling tt(compinit). The default value for this style is
 | |
| `tt(_complete _ignored)', i.e. normally only ordinary completion is tried,
 | |
| first with the effect of the tt(ignored-patterns) style and then without
 | |
| it.  The tt(_main_complete) function uses the return value of the completer
 | |
| functions to decide if other completers should be called.  If the return
 | |
| value is zero, no other completers are tried and the tt(_main_complete)
 | |
| function returns.
 | |
| 
 | |
| If the first argument to tt(_main_complete) is a single hyphen, the
 | |
| arguments will not be taken as names of completers. Instead, the
 | |
| second argument gives a name to use in the var(completer) field of the 
 | |
| context and the other arguments give a command name and arguments to
 | |
| call to generate the matches.
 | |
| 
 | |
| The following completer functions are contained in the distribution (users
 | |
| may write their own):
 | |
| 
 | |
| cindex(completion system, completers)
 | |
| startitem()
 | |
| findex(_all_matches)
 | |
| item(tt(_all_matches))(
 | |
| This completer can be used to add a string consisting of all other
 | |
| matches.  To ensure, that this string is always added, this completer
 | |
| has to be used as the first completer in the list.  The
 | |
| tt(avoid-completer) style is used to decide if the string should be
 | |
| added.  This will only be done if the matches were generated by a
 | |
| completer not named by one of the values of the style.
 | |
| 
 | |
| This function also uses the style tt(old-matches).  If it is set to
 | |
| `true' or to the string `tt(only)' and there is a list of matches from 
 | |
| a previous completion, those matches will be inserted in the command
 | |
| line.  If it is set to the the string `tt(only)', it will only insert
 | |
| an old list and won't add the string for all matches of the list
 | |
| currently being generated.
 | |
| 
 | |
| With the tt(old-matches) style set, this completer should probably not 
 | |
| be called unconditionally.  Instead one could use the tt(-e) option of 
 | |
| the tt(zstyle) builtin command to add a condition to the tt(completer) 
 | |
| or to the tt(old-matches) style.  Alternatively, one could use the
 | |
| tt(_generic) function to bind tt(_all_matches) to a separate key
 | |
| binding, for example:
 | |
| 
 | |
| example(zle -C all-matches complete-word _generic
 | |
| bindkey '^Xa' all-matches
 | |
| zstyle ':completion:all-matches:*' old-matches only
 | |
| zstyle ':completion:all-matches:*' completer _all_matches)
 | |
| )
 | |
| findex(_approximate)
 | |
| item(tt(_approximate))(
 | |
| This completer function uses the tt(_complete) completer to generate
 | |
| a list of strings for the context the cursor is currently in, allowing 
 | |
| you to specify a maximum number of errors:  see the description of
 | |
| approximate matching in
 | |
| ifzman(\
 | |
| zmanref(zshexpn)
 | |
| )\
 | |
| ifnzman(\
 | |
| noderef(Filename Generation)
 | |
| )\
 | |
| for how errors are counted.  The resulting list of corrected and completed
 | |
| strings is then presented to the user.  The intended use of this completer
 | |
| function is to try after the normal tt(_complete) completer by setting:
 | |
| 
 | |
| example(zstyle ':completion:*' completer _complete _approximate)
 | |
| 
 | |
| This will give correcting completion if and only if
 | |
| normal completion yields no possible completions.  When
 | |
| corrected completions are found, the completer will normally start
 | |
| menu completion allowing you to cycle through these strings.
 | |
| 
 | |
| This completer uses the tags tt(corrections) and tt(original) when
 | |
| generating the possible corrections and the original string.  The
 | |
| tt(format) style for the former may contain the additional sequences
 | |
| `tt(%e)' and `tt(%o)' which will be replaced by the number of errors
 | |
| accepted to generate the corrections and the original string,
 | |
| respectively.
 | |
| 
 | |
| As with all completers, tt(_approximate) uses its name without the
 | |
| underscore in the var(completer) field of the context name.  Once it
 | |
| has started trying to generate matches, it will append a minus sign
 | |
| and the number of errors accepted to its name.  tt(_approximate) will
 | |
| first look for completions with one error, then two, and on so up to the
 | |
| limit on the number of errors set by the tt(max-errors) style.
 | |
| Hence on the first try the completer field of the context contains
 | |
| `tt(approximate-1)', on the second try `tt(approximate-2)', and so on.
 | |
| 
 | |
| When tt(_approximate) is called from another function, the number of
 | |
| errors to accept may be given with the tt(-a) option.  Its argument
 | |
| should be the same as the value of the tt(max-errors) style, all in one
 | |
| string.
 | |
| 
 | |
| Note that this completer (and the tt(_correct) completer mentioned
 | |
| below) can be quite expensive to call, especially when a large number
 | |
| of errors are allowed.  One way to avoid this is to set up the
 | |
| tt(completer) style using the tt(-e) option to zstyle so that some
 | |
| completers are only used when completion is attempted a second time on 
 | |
| the same string, e.g.:
 | |
| 
 | |
| example(zstyle ':completion:*' completer '
 | |
|   if [[ $_last_try != "$HISTNO$BUFFER$CURSOR" ]]; then
 | |
|     _last_try="$HISTNO$BUFFER$CURSOR"
 | |
|     reply=(_complete _match _prefix)
 | |
|   else
 | |
|     reply=(_ignored _correct _approximate)
 | |
|   fi')
 | |
| 
 | |
| This uses the tt(HISTNO) parameter and the tt(BUFFER) and tt(CURSOR)
 | |
| special parameters that are available inside zle and completion
 | |
| widgets to find out if the command line hasn't changed since the last
 | |
| time completion was tried.  Only then are the tt(_ignored),
 | |
| tt(_correct) and tt(_approximate) completers called.
 | |
| )
 | |
| findex(_complete)
 | |
| item(tt(_complete))(
 | |
| This completer generates all possible completions in a context-sensitive
 | |
| manner, i.e. using the settings defined with the tt(compdef) function
 | |
| explained above and the current settings of all special parameters.
 | |
| 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(-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)').
 | |
| 
 | |
| 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
 | |
| array, the elements are taken to be the possible matches which will be
 | |
| completed using the tag `tt(values)' and the description
 | |
| `tt(value)'.   If it is set to an associative array, the keys are used
 | |
| as the possible completions and the values (if non-empty) are used as
 | |
| descriptions for the matches.  If `tt(compcontext)' is set to a string
 | |
| containing colons, it should be of
 | |
| the form `var(tag)tt(:)var(descr)tt(:)var(action)'.  In this case the
 | |
| var(tag) and var(descr) give the tag and description to use and the
 | |
| var(action) says what should be completed in one of the forms
 | |
| described for the tt(_arguments) utility function below.
 | |
| 
 | |
| Finally, if `tt(compcontext)' is set to a string without colons, the
 | |
| value is taken as the name of the context to use and the function
 | |
| defined for that context will be called.  For this purpose, there is a
 | |
| special context named tt(-command-line-) that completes whole command
 | |
| lines (commands and their arguments) and is not used by the completion
 | |
| system itself, but has a function handling completion for it.
 | |
| )
 | |
| findex(_correct)
 | |
| item(tt(_correct))(
 | |
| Generate corrections, but not completions, for the current word; this is
 | |
| similar to tt(_approximate) but will not allow any number of extra
 | |
| characters at the cursor as that completer does, hence this is
 | |
| similar to spell-checking.  It calls tt(_approximate) but uses a
 | |
| different var(completer) field in the context name.
 | |
| 
 | |
| For example, with:
 | |
| 
 | |
| example(zstyle ':completion:::::' completer _complete _correct _approximate
 | |
| zstyle ':completion:*:correct:::' max-errors 2 not-numeric
 | |
| zstyle ':completion:*:approximate:::' max-errors 3 numeric)
 | |
| 
 | |
| correction will accept up to two errors.  If a numeric argument is
 | |
| given, correction will not be performed, but correcting completion
 | |
| will be, and will accept as many errors as given by the numeric
 | |
| argument.  Without a numeric argument, first correction and then
 | |
| correcting completion will be tried, with the first one accepting two
 | |
| errors and the second one accepting three errors.
 | |
| 
 | |
| When tt(_correct) is called as a function, the number of errors to accept
 | |
| may be given following the tt(-a) option.  The argument should be the same
 | |
| as the value of the tt(accept) style, all in one string.
 | |
| 
 | |
| This completer function is intended to be used without the
 | |
| tt(_approximate) completer or, as in the example, just before
 | |
| it.  Using it after the tt(_approximate) completer is useless since
 | |
| tt(_approximate) will at least generate the corrected strings
 | |
| generated by the tt(_correct) completer -- and probably more.
 | |
| )
 | |
| findex(_expand)
 | |
| item(tt(_expand))(
 | |
| This completer function does not really do completion, but instead
 | |
| checks if the word on the command line is eligible for expansion and,
 | |
| if it is, gives detailed control over how this expansion is done.  When
 | |
| using this, one should not use the tt(expand-or-complete) widget, but
 | |
| instead use tt(complete-word), as tt(expand-or-complete)
 | |
| will expand the string on the line before the completion widget is
 | |
| called.  Also, this completer should be called before the tt(_complete) 
 | |
| completer function.
 | |
| 
 | |
| The tags used when generating expansions are tt(all-expansions) for
 | |
| the string containing all possible expansions, tt(expansions) when
 | |
| adding the possible expansions as single matches and tt(original) when 
 | |
| adding the original string from the line.  In which order these strings 
 | |
| are generated and which of these strings are generated at all can be
 | |
| controlled by using the tt(group-order) style and by modifying the
 | |
| tt(tag-order) style, as usual.
 | |
| 
 | |
| The format string for tt(all-expansions) and for tt(expansions) may
 | |
| contain the sequence `tt(%o)' which will be replaced by the original
 | |
| string from the line.
 | |
| 
 | |
| Which kind of expansion is tried is controlled by the tt(substitute),
 | |
| tt(glob) and tt(subst-globs-only) styles.
 | |
| 
 | |
| When tt(_expand) is called as a function, the different modes may be
 | |
| selected with options.  The tt(-s) to tt(substitute), tt(-g) to
 | |
| tt(glob) and tt(-o) to tt(subst-globs-only).
 | |
| )
 | |
| findex(_expand_alias)
 | |
| item(tt(_expand_alias))(
 | |
| If the word the cursor is on is an alias, it is expanded and no other
 | |
| completers are called.  The types of aliases which are to be expanded can
 | |
| be controlled with the tt(regular), tt(global) and tt(disabled)
 | |
| styles.
 | |
| 
 | |
| This function is also a bindable command, see
 | |
| ifzman(the section `Bindable Commands' below)\
 | |
| ifnzman(noderef(Bindable Commands)).
 | |
| )
 | |
| findex(_history)
 | |
| item(tt(_history))(
 | |
| Complete words from the shell's command  history.  This completer 
 | |
| uses the tt(remove-all-dups), and tt(sort) styles also used by the
 | |
| tt(_history_complete_word) bindable command, see
 | |
| ifzman(the section `Bindable Commands' below)\
 | |
| ifnzman(noderef(Bindable Commands))
 | |
| and
 | |
| ifzman(the section `Completion System Configuration' above)\
 | |
| ifnzman(noderef(Completion System Configuration)).
 | |
| )
 | |
| findex(_ignored)
 | |
| item(tt(_ignored))(
 | |
| The tt(ignored-patterns) style can be set to a list of patterns which are
 | |
| compared against possible completions; matching ones are removed.
 | |
| With this completer those matches can be reinstated, as
 | |
| if no tt(ignored-patterns) style were set.  The completer actually
 | |
| generates its own list of matches; which completers are used
 | |
| for this is determined in the same way as for the tt(_prefix)
 | |
| completer.
 | |
| 
 | |
| The tt(single-ignored) style is used if only one
 | |
| match could be generated.  It can be set to tt(show) to prevent that match 
 | |
| from being displayed or inserted into the line, or it can be set to
 | |
| tt(menu), in which case the single match and the original string from the
 | |
| line will be offered in a menu completion.
 | |
| )
 | |
| findex(_list)
 | |
| item(tt(_list))(
 | |
| This completer allows one to delay the insertion of matches until
 | |
| completion is attempted a second time without the word on the line
 | |
| being changed.  On the first attempt, only the list of matches will be
 | |
| shown.  It is affected by the styles tt(condition) and tt(word), see
 | |
| ifzman(the section `Completion System Configuration' above)\
 | |
| ifnzman(noderef(Completion System Configuration)).
 | |
| )
 | |
| findex(_match)
 | |
| item(tt(_match))(
 | |
| This completer is intended to be used after the tt(_complete)
 | |
| completer. It allows one to give patterns on the command line and
 | |
| to complete all strings matching these patterns from the set of
 | |
| possible completions for the context the cursor is in, without having
 | |
| to set the tt(GLOB_COMPLETE) option.
 | |
| 
 | |
| Normally this will be done by taking the pattern from the line,
 | |
| inserting a `tt(*)' at the cursor position and comparing the resulting
 | |
| pattern with the possible completions generated.  However, if the
 | |
| tt(match-original) style has a value of tt(only), no `tt(*)' will be
 | |
| inserted.  If tt(match-original) has any other non-empty string as its
 | |
| value, this completer will first try to generate matches without, then
 | |
| with a `tt(*)' inserted at the cursor position.
 | |
| 
 | |
| The generated matches will be offered in a menu completion unless the
 | |
| tt(insert-unambiguous) style is set to `true'.  In
 | |
| this case menu completion will only be started if no unambiguous string
 | |
| could be generated that is at least as long as the original string.
 | |
| The style may also be set to the string `tt(pattern)'.  This will keep 
 | |
| the pattern on the line intact as long as there isn't an unambiguous
 | |
| completion with which it could be replaced.
 | |
| 
 | |
| Note that the matcher specifications defined globally or used by the
 | |
| completion functions will not be used.
 | |
| )
 | |
| findex(_menu)
 | |
| item(tt(_menu))(
 | |
| This completer is a simple example function implemented to show how
 | |
| menu completion can be done in shell code.  It should be used as the
 | |
| first completer and has the effect of making the code perform
 | |
| menu completion.  Note that this is independent of the setting of the
 | |
| tt(MENU_COMPLETE) option and does not work with the other
 | |
| menu completion widgets such as tt(reverse-menu-complete), or
 | |
| tt(accept-and-menu-complete).
 | |
| )
 | |
| findex(_oldlist)
 | |
| item(tt(_oldlist))(
 | |
| This completer controls how the standard completion widgets behave
 | |
| when there is an existing list of completions which may have been
 | |
| generated by a special completion (i.e. a separately-bound completion
 | |
| command).  It allows the ordinary completion keys to continue to use the
 | |
| list of completions thus generated, instead of producing a new list of
 | |
| ordinary contextual completions.
 | |
| It should appear in the list of completers before any of
 | |
| the widgets which generate matches.  It uses two styles: tt(old-list) and
 | |
| tt(old-menu), see
 | |
| ifzman(the section `Completion System Configuration' above)\
 | |
| ifnzman(noderef(Completion System Configuration)).
 | |
| )
 | |
| findex(_prefix)
 | |
| item(tt(_prefix))(
 | |
| This completer can be used to try completion with the suffix (everything
 | |
| after the cursor) ignored.  In other words, the suffix will not be
 | |
| considered to be
 | |
| part of the word to complete and hence does not need to be matched.  It
 | |
| uses the tt(completer) style to decide which other completers to call to
 | |
| try to generate matches.  If this style is unset, the list of completers
 | |
| set for the current context is used -- except, of course,
 | |
| the tt(_prefix) completer itself.  Furthermore, if this completer appears
 | |
| more than once in the list of completers only those completers not
 | |
| already tried by the last invocation of tt(_prefix) will be
 | |
| called.
 | |
| 
 | |
| For example, consider this global tt(completer) style:
 | |
| 
 | |
| example(zstyle ':completion:*' completer \ 
 | |
|     _complete _prefix _correct _prefix:foo)
 | |
| 
 | |
| Here, the tt(_prefix) completer tries normal completion but ignoring the
 | |
| suffix.  If that doesn't generate any matches, and neither does
 | |
| the call to the tt(_correct) completer after it, tt(_prefix) will 
 | |
| be called a second time and, now only trying correction with the
 | |
| suffix ignored.  If you want to use tt(_prefix) as the last resort and
 | |
| try only normal completion, you can use:
 | |
| 
 | |
| example(zstyle ':completion:*' completer _complete ... _prefix
 | |
| zstyle ':completion::prefix:*' completer _complete)
 | |
| 
 | |
| The tt(add-space) style is also used.  If it is set to `true' then
 | |
| tt(_prefix) will insert a space between the matches generated (if any) 
 | |
| and the suffix.
 | |
| 
 | |
| Note that this completer is only useful if the
 | |
| tt(COMPLETE_IN_WORD) option is set; otherwise, the cursor will
 | |
| be moved to the end of the current word before the completion code is
 | |
| called and hence there will be no suffix.
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| texinode(Bindable Commands)(Completion Functions)(Control Functions)(Completion System)
 | |
| sect(Bindable Commands)
 | |
| cindex(completion system, bindable commands)
 | |
| 
 | |
| In addition to the context-dependent completions provided, which are
 | |
| expected to work in an intuitively obvious way, there are a few widgets
 | |
| implementing special behaviour which can be bound separately to keys.  The
 | |
| following is a list of these and their default bindings.
 | |
| 
 | |
| startitem()
 | |
| findex(_bash_completions)
 | |
| item(tt(_bash_completions))(
 | |
| This function is used by two widgets, tt(_bash_complete-word) and
 | |
| tt(_bash_list-choices).  It exists to provide compatibility with
 | |
| completion bindings in bash.  The last character of the binding determines
 | |
| what is completed: `tt(!)', command names; `tt($)', environment variables;
 | |
| `tt(@)', host names; `tt(/)', file names; `tt(~)' user names.  In bash, the
 | |
| binding preceded by `tt(\e)' gives completion, and preceded by `tt(^X)'
 | |
| lists options.  As some of these bindings clash with standard zsh
 | |
| bindings, only `tt(\e~)' and `tt(^X~)' are bound by default.  To add the
 | |
| rest, the following should be added to tt(.zshrc) after tt(compinit) has
 | |
| been run:
 | |
| 
 | |
| example(for key in '!' '$' '@' '/' '~'; do
 | |
|   bindkey "\e$key" _bash_complete-word
 | |
|   bindkey "^X$key" _bash_list-choices
 | |
| done)
 | |
| 
 | |
| This includes the bindings for `tt(~)' in case they were already bound to
 | |
| something else; the completion code does not override user bindings.
 | |
| )
 | |
| findex(_correct_filename (^XC))
 | |
| item(tt(_correct_filename (^XC)))(
 | |
| Correct the filename path at the cursor position.  Allows up to six errors
 | |
| in the name.  Can also be called with an argument to correct
 | |
| a filename path, independently of zle; the correction is printed on
 | |
| standard output.
 | |
| )
 | |
| findex(_correct_word) (^Xc)
 | |
| item(tt(_correct_word) (^Xc))(
 | |
| Performs correction of the current argument using the usual contextual
 | |
| completions as possible choices. This stores the string
 | |
| `tt(correct-word)' in the var(function) field of the context name and
 | |
| then calls the tt(_correct) completer.
 | |
| )
 | |
| findex(_expand_alias (^Xa))
 | |
| item(tt(_expand_alias (^Xa)))(
 | |
| This function can be used as a completer and as a bindable command.
 | |
| It expands the word the cursor is on if it is an alias.  The types of
 | |
| aliases expanded can be controlled with the tt(regular), tt(global) and
 | |
| tt(disabled) styles.
 | |
| 
 | |
| When used as a bindable command there is one additional feature that
 | |
| can be selected by setting the tt(complete) style to `true'.  In this
 | |
| case, if the word isn't the name of an alias, tt(_expand_alias) tries
 | |
| to complete the word to a full alias name without expanding it (but
 | |
| leaving the cursor directly after the completed word so that invoking
 | |
| tt(_expand_alias) once more will expand the now-complete alias name).
 | |
| )
 | |
| findex(_expand_word (^Xe))
 | |
| item(tt(_expand_word (^Xe)))(
 | |
| Performs expansion on the current word:  equivalent to the standard
 | |
| tt(expand-word) command, but using the tt(_expand) completer.  Before
 | |
| calling it, the var(function) field is set to `tt(expand-word)'.
 | |
| )
 | |
| findex(_generic)
 | |
| item(tt(_generic))(
 | |
| This function is not defined as a widget and not bound by
 | |
| default. However, it can be used to define a widget and will then
 | |
| store the name of the widget in the var(function) field of the context 
 | |
| and call the completion system. This allows custom completion widgets
 | |
| with their own set of style settings to be easily defined. For example, 
 | |
| to define a widget that does normal completion and starts
 | |
| menu selection, one could do:
 | |
| 
 | |
| example(zle -C foo complete-word _generic
 | |
| bindkey '...' foo
 | |
| zstyle ':completion:foo:*' menu yes select=1)
 | |
| )
 | |
| findex(_history_complete_word) (\e/))
 | |
| item(tt(_history_complete_word) (\e/))(
 | |
| Complete words from the shell's command history. This uses the
 | |
| tt(list), tt(remove-all-dups), tt(sort), and tt(stop) styles.
 | |
| )
 | |
| findex(_most_recent_file (^Xm))
 | |
| item(tt(_most_recent_file (^Xm)))(
 | |
| Complete the name of the most recently modified file matching the pattern
 | |
| on the command line (which may be blank).  If given a numeric argument
 | |
| var(N), complete the var(N)th most recently modified file.  Note the
 | |
| completion, if any, is always unique.
 | |
| )
 | |
| findex(_next_tags (^Xn))
 | |
| item(tt(_next_tags) (^Xn))(
 | |
| This command alters the set of matches used to that for the next tag, or
 | |
| set of tags, either as given by the tt(tag-order) style or as set by
 | |
| default; these matches would otherwise not be available.
 | |
| Successive invocations of the command cycle through all possible sets of
 | |
| tags.
 | |
| )
 | |
| findex(_read_comp (^X^R))
 | |
| item(tt(_read_comp (^X^R)))(
 | |
| Prompt the user for a string, and use that to perform completion on the
 | |
| current word.  There are two possibilities for the string.  First, it can
 | |
| be a set of words beginning `tt(_)', for example `tt(_files -/)', in which
 | |
| case the function with any arguments will be called to generate the
 | |
| completions.  Unambiguous parts of the function name will be completed
 | |
| automatically (normal completion is not available at this point) until a
 | |
| space is typed.
 | |
| 
 | |
| Second, any other string will be passed as a set of arguments to
 | |
| tt(compadd) and should hence be an expression specifying what should
 | |
| be completed.
 | |
| 
 | |
| A very restricted set of editing commands is available when reading the
 | |
| string:  `tt(DEL)' and `tt(^H)' delete the last character; `tt(^U)' deletes
 | |
| the line, and `tt(^C)' and `tt(^G)' abort the function, while `tt(RET)'
 | |
| accepts the completion.  Note the string is used verbatim as a command
 | |
| line, so arguments must be quoted in accordance with standard shell rules.
 | |
| 
 | |
| Once a string has been read, the next call to tt(_read_comp) will use the
 | |
| existing string instead of reading a new one.  To force a new string to be
 | |
| read, call tt(_read_comp) with a numeric argument.
 | |
| )
 | |
| findex(_complete_help (^Xh))
 | |
| item(tt(_complete_help (^Xh)))(
 | |
| This widget displays information about the context names, 
 | |
| the tags, and the completion functions used 
 | |
| when completing at the current cursor position. If given a numeric
 | |
| argument other than tt(1) (as in `tt(ESC-2 ^Xh)'), then the styles
 | |
| used and the contexts for which they are used will be shown, too.
 | |
| 
 | |
| Note that the information about styles may be incomplete; it depends on the
 | |
| information available from the completion functions called, which in turn
 | |
| is determined by the user's own styles and other settings.
 | |
| )
 | |
| findex(_complete_debug (^X?))
 | |
| item(tt(_complete_debug (^X?)))(
 | |
| This widget performs ordinary completion, but captures in a temporary file
 | |
| a trace of the shell commands executed by the completion system.  Each
 | |
| completion attempt gets its own file.  A command to view each of these
 | |
| files is pushed onto the editor buffer stack.
 | |
| )
 | |
| findex(_complete_tag (^Xt))
 | |
| item(tt(_complete_tag (^Xt)))(
 | |
| This widget completes symbol tags created by the tt(etags) or tt(ctags)
 | |
| programmes (note there is no connection with the completion system's tags)
 | |
| stored in a file tt(TAGS), in the format used by tt(etags), or tt(tags), in the
 | |
| format created by tt(ctags).  It will look back up the path hierarchy for
 | |
| the first occurrence of either file; if both exist, the file tt(TAGS) is
 | |
| preferred.  You can specify the full path to a tt(TAGS) or tt(tags) file by
 | |
| setting the parameter tt($TAGSFILE) or tt($tagsfile) respectively.
 | |
| The corresponding completion tags used are tt(etags) and tt(vtags), after
 | |
| emacs and vi respectively.
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| texinode(Completion Functions)(Completion Directories)(Bindable Commands)(Completion System)
 | |
| sect(Utility Functions)
 | |
| cindex(completion system, utility functions)
 | |
| 
 | |
| Descriptions follow for utility functions that may be
 | |
| useful when writing completion functions.  Most of these reside in the
 | |
| tt(Core) subdirectory. Like the example 
 | |
| functions for commands in the distribution, the utility functions
 | |
| generating matches all follow the convention of returning zero if they
 | |
| generated completions and non-zero if no matching completions could be 
 | |
| added.
 | |
| 
 | |
| When writing completion functions or other ZLE widgets that call
 | |
| completion, it might be interesting to know about two more features
 | |
| offered by the tt(_main_complete) function. The arrays
 | |
| tt(compprefuncs) and tt(comppostfuncs) may be set to contain names of
 | |
| functions that are to be called immediately before or after completion 
 | |
| has been tried. The functions will only be called once, unless they
 | |
| put themselves into the arrays again.
 | |
| 
 | |
| startitem()
 | |
| findex(_all_labels)
 | |
| item(tt(_all_labels) [ tt(-12VJ) ] var(tag) var(name) var(descr) [ var(command) var(args) ... ])(
 | |
| This is a convenient interface to the tt(_next_label) function below,
 | |
| implementing the loop shown in the tt(_next_label) example.  The
 | |
| var(command) is the one that should be called to generate the matches. The
 | |
| options stored in the parameter var(name) will automatically be inserted
 | |
| into the var(args) given to the var(command).  Normally, they are put
 | |
| directly after the var(command), but if one of the var(args) is a single
 | |
| hyphen, they are inserted directly before that. If the hyphen is the last
 | |
| argument, that will be removed from the argument list before the
 | |
| var(command) is called. This allows tt(_all_labels) to be used in almost all
 | |
| cases where the matches can be generated by a single call to the
 | |
| tt(compadd) builtin command or by a call to one of the utility functions.
 | |
| 
 | |
| For example:
 | |
| 
 | |
| example(local expl
 | |
| ...
 | |
| if _requested foo; then
 | |
|   ...
 | |
|   _all_labels foo expl '...' compadd ... - $matches
 | |
| fi)
 | |
| 
 | |
| Will complete the strings from the tt(matches) parameter, using
 | |
| tt(compadd) with additional options which will take precedence over
 | |
| those generated by tt(_all_labels).
 | |
| )
 | |
| findex(_alternative)
 | |
| item(tt(_alternative) [ tt(-C) var(name) ] var(specs) ...)(
 | |
| This function is useful in simple cases where multiple tags are available.
 | |
| Essentially, it implements a loop like the one described for the tt(_tags)
 | |
| function above.
 | |
| 
 | |
| The tags to use and the action to perform if a tag is requested are
 | |
| described using the var(specs) which are of the form:
 | |
| `var(tag)tt(:)var(descr)tt(:)var(action)'. The var(tag)s are offered using
 | |
| tt(_tags) and if the tag is requested, the var(action) is executed with the
 | |
| given description var(descr).  The var(action)s supported are those used
 | |
| by the tt(_arguments) function (described below), without the
 | |
| `tt(->)var(state)' and `tt(=)var(...)' forms.
 | |
| 
 | |
| For example, the var(action) may be a simple function call. With that
 | |
| one could do:
 | |
| 
 | |
| example(_alternative \ 
 | |
|     'users:user:_users' \ 
 | |
|     'hosts:host:_hosts')
 | |
| 
 | |
| to offer usernames and hostnames as possible matches (which are
 | |
| generated by the tt(_users) and tt(_hosts) functions respectively).
 | |
| 
 | |
| Note that, like tt(_arguments) this will also use tt(_all_labels) to execute 
 | |
| the actions, so one doesn't need to call that explicitly unless
 | |
| another tag is to be used, for example in a function called from
 | |
| tt(_alternative).
 | |
| 
 | |
| Like tt(_tags) this function supports the tt(-C) option to give a
 | |
| different name for the argument context field.
 | |
| )
 | |
| findex(_arguments)
 | |
| item(tt(_arguments) var(spec) ...)(
 | |
| This function can be used to complete words on the line by describing the
 | |
| options and arguments which may be passed to the command for which
 | |
| completion is being performed.  The description is given as arguments to
 | |
| this function, with each var(spec) describing one option or normal
 | |
| argument of the command.  The forms of var(spec) understood are:
 | |
| 
 | |
| startitem()
 | |
| xitem(var(n)tt(:)var(message)tt(:)var(action))
 | |
| item(var(n)tt(::)var(message)tt(:)var(action))(
 | |
| This describes the var(n)'th normal argument.  The var(message) will be 
 | |
| printed above the matches generated and the var(action) says what can
 | |
| be completed in this position (see below).  If there are two colons
 | |
| before the var(message), this describes an optional argument.
 | |
| )
 | |
| xitem(tt(:)var(message)tt(:)var(action))
 | |
| item(tt(::)var(message)tt(:)var(action))(
 | |
| Like the previous one, but describing the em(next) argument. I.e. if
 | |
| you want to describe all arguments a command can get, you can leave
 | |
| out the numbers in the description and just use this form to describe
 | |
| them one after another in the order they have to appear on the line.
 | |
| )
 | |
| xitem(tt(*:)var(message)tt(:)var(action))
 | |
| xitem(tt(*::)var(message)tt(:)var(action))
 | |
| item(tt(*:::)var(message)tt(:)var(action))(
 | |
| This describes how arguments (usually non-option arguments, those not
 | |
| beginning with tt(-) or tt(+)) are to be completed when no description
 | |
| with one of the first two forms was given. This also means that any number
 | |
| of arguments can be completed.
 | |
| 
 | |
| With two colons before the var(message), the tt(words) special array and
 | |
| the tt(CURRENT) special parameter are modified to refer only to the
 | |
| normal arguments when the var(action) is executed or evaluated.  With
 | |
| three colons before the var(message) they are modified to refer only to
 | |
| the normal arguments covered by this description.
 | |
| )
 | |
| item(var(optspec)[var(description) ...])(
 | |
| This describes an option and (if var(description) is given) the arguments
 | |
| that have to come after the option.  If no var(description) is given, this
 | |
| means to offer only the option name as a possible completion in the right
 | |
| places.  (Note that the brackets, above, around var(description), indicate
 | |
| that zero or more var(description)s may appear; but the brackets are not
 | |
| themselves part of this format.  If brackets are used, they are part of
 | |
| the var(optspec); see below.)
 | |
| 
 | |
| In the descriptions below, the option names represented by var(optname)
 | |
| are normally taken to be multi-character names, and a word from the line
 | |
| is considered to contain only one option (or none).  By giving the tt(-s)
 | |
| option to tt(_arguments) before the first var(spec), each var(optname) is
 | |
| considered to be a single character and each word from the line may
 | |
| contain more than one such option letter.  However, words beginning with
 | |
| two hyphens (like `tt(-)tt(-prefix)') are still considered to contain only
 | |
| one option name.  This allows the use of the `tt(-s)' option to describe
 | |
| single-letter options together with such long option names.
 | |
| 
 | |
| The forms of var(optspec) are:
 | |
| 
 | |
| startitem()
 | |
| item(tt(*)var(optspec))(
 | |
| If the option may be given more than once, a star (`tt(*)') must be
 | |
| added in front of one of the following forms of var(optspec).  Otherwise,
 | |
| if the option is already on the line and to the left of the cursor, it
 | |
| is not offered as a possible completion again.
 | |
| )
 | |
| xitem(tt(-)var(optname))
 | |
| item(tt(+)var(optname))(
 | |
| In the simplest form the var(optspec) is just the option name beginning
 | |
| with a minus or a plus sign, such as `tt(-foo)'.  The first argument for
 | |
| the option (if any) must follow as a em(separate) word directly after the
 | |
| option.
 | |
| 
 | |
| If the command accepts the option with either a leading minus or a leading
 | |
| plus sign, use either `tt(-+)var(optname)' or `tt(+-)var(optname)' to
 | |
| define both variants at once.
 | |
| 
 | |
| In all the following forms, the leading `tt(-)' may be replaced or paired
 | |
| with `tt(+)' in this way.
 | |
| )
 | |
| item(tt(-)var(optname)tt(-))(
 | |
| The first argument of the option must come directly after the option name
 | |
| em(in the same word), as in `tt(-foo-:)var(...)'.
 | |
| )
 | |
| item(tt(-)var(optname)tt(+))(
 | |
| The first argument may appear immediately after var(optname) in the same
 | |
| word, or may instead appear as a separate word after the option.
 | |
| )
 | |
| item(tt(-)var(optname)tt(=))(
 | |
| The argument may appear as the next word, or in same word as the option
 | |
| name provided that it is separated from it by an equals sign.
 | |
| )
 | |
| item(tt(-)var(optname)tt(=-))(
 | |
| The argument to the option must appear after an equals sign in the same
 | |
| word, and may not be given in the next argument.
 | |
| )
 | |
| item(var(optspec)tt([)var(explanation)tt(]))(
 | |
| An explanation string may be appended to any of the preceding forms of
 | |
| var(optspec) by enclosing it in brackets, as in `tt(-q[query operation])'.
 | |
| 
 | |
| The tt(verbose) style is used to decide if these explanation strings
 | |
| should be displayed with the option in a completion listing.
 | |
| 
 | |
| If no bracketed explanation string is given but the tt(auto-description)
 | |
| style is set and only one argument is described for this var(optspec), the
 | |
| value of the style is displayed, with any appearance of the sequence
 | |
| `tt(%d)' in it replaced by the var(message) of the first var(description)
 | |
| that follows the var(optspec); see below.
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| Note that the special meaning of a leading or trailing tt(-) or tt(+) in
 | |
| var(optspec) means that when the command to be completed accepts options
 | |
| like `tt(-+)' or `tt(-=)', the second character has to be quoted with a
 | |
| backslash, as in `tt(-\+)'.
 | |
| 
 | |
| Each var(description) following an var(optspec) must take one of the
 | |
| following forms:
 | |
| 
 | |
| startitem()
 | |
| xitem(tt(:)var(message)tt(:)var(action))
 | |
| item(tt(::)var(message)tt(:)var(action))(
 | |
| Describes a mandatory argument with one colon, or an optional argument
 | |
| with two colons.  As in other forms of var(spec), the var(message) will be
 | |
| printed above the matches generated and the var(action) says what can be
 | |
| completed in this position.
 | |
| )
 | |
| xitem(tt(:*)var(pattern)tt(:)var(message)tt(:)var(action))
 | |
| xitem(tt(:*)var(pattern)tt(::)var(message)tt(:)var(action))
 | |
| item(tt(:*)var(pattern)tt(:::)var(message)tt(:)var(action))(
 | |
| This describes multiple arguments.  Only the em(last) description may be
 | |
| given in this form.  If the var(pattern) is empty (i.e., tt(:*:)), all
 | |
| following words on the line are to be completed as described by the
 | |
| var(action); otherwise, all words up to a word matching the var(pattern)
 | |
| are to be completed using the var(action).
 | |
| 
 | |
| When the var(message) is preceded by two colons, the tt(words) special
 | |
| array and the tt(CURRENT) special parameter are modified during the
 | |
| execution or evaluation of the var(action) to refer only to the words
 | |
| after the option.  When preceded by three colons, they are modified to
 | |
| refer only to the words covered by this description.
 | |
| 
 | |
| Note that only one such `tt(:*)'-specification is useful
 | |
| and no other argument specification may be given after it.
 | |
| )
 | |
| enditem()
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| To include a colon in any var(optname), var(message), or var(action)
 | |
| anywhere above, it has to be preceded by a backslash, as `tt(\:)'.
 | |
| 
 | |
| Each of the six forms of var(spec) (yes, there are six, keep track of
 | |
| the nestings) may be preceded by a list
 | |
| of option names and argument numbers with which the option or argument
 | |
| described is mutually exclusive.  This list is given in parentheses, as
 | |
| in `tt((-two -three 1)-one:...)' or `tt((-foo):...)'.  In the first
 | |
| example, the options `tt(-two)' and `tt(-three)' and the first
 | |
| argument will not be offered as possible completions if the option
 | |
| `tt(-one)' is on the line before the cursor, and in the second example
 | |
| the option `tt(-foo)' will not be offered if the argument described by
 | |
| the specification is on the line.
 | |
| 
 | |
| The list may also contain a single star (tt(*)) as one of its elements to
 | |
| specify that the description for the rest arguments (i.e. a specification
 | |
| of the form `tt(*:...)') should not be used, a colon (tt(:)) to specify
 | |
| that the descriptions for all normal (non-option-) arguments should not be
 | |
| used and a hyphen (tt(-)) to specify that the descriptions for all options
 | |
| should not be used.  This paragraph desperately needs rewriting.
 | |
| 
 | |
| To simplify writing writing functions that call tt(_arguments) more
 | |
| than once, the var(specs) may also start with the character `tt(!)'
 | |
| (exclamation mark) to make the spec em(not) be completed.  However, if
 | |
| this is used with one of the forms describing options, the option (and 
 | |
| its arguments, if it takes any) will be understood and skipped if they 
 | |
| appear on the command line.  It's just that the option itself will not
 | |
| be completed. This is intended to be used with an array containing the 
 | |
| options used in the first call to tt(arguments).  The second call can
 | |
| then use `tt(\!${^global_options})' to ignore those options and
 | |
| complete only the ones understood in the current context.
 | |
| 
 | |
| In every case above, the var(action) determines how the possible
 | |
| completions should be generated.  In places where no sensible matches can
 | |
| be generated, the action should consist of only a space. This will make
 | |
| the var(message) be displayed but no possible completions listed. Note
 | |
| that even in this case the colon at the end of the var(message) is
 | |
| needed. The only case where it can be left is when neither a var(message),
 | |
| nor a var(action) is given.
 | |
| 
 | |
| Except for the `tt(->)var(string)' form below, the var(action) will be
 | |
| executed by calling the tt(_all_labels) function to process all tag labels,
 | |
| so one doesn't need to call that explicitly unless another tag is to
 | |
| be used, for example in a function called in the var(action).
 | |
| 
 | |
| When only one of a fixed set of strings can be completed, the var(action)
 | |
| can consist of these strings as a list in parentheses, as in:
 | |
| 
 | |
| example(tt(:foo:LPAR()foo bar baz)tt(RPAR()))
 | |
| 
 | |
| Such a list in doubled parentheses should contain strings consisting of
 | |
| the string to complete followed by `tt(\:)' and a description, as in:
 | |
| 
 | |
| example(tt(:foo:LPAR()LPAR()a\:bar b\:baz)tt(RPAR()RPAR()))
 | |
| 
 | |
| The matches will be listed together with their descriptions if the
 | |
| tt(description) style for the tt(values) tag is set.
 | |
| 
 | |
| vindex(context, use of)
 | |
| vindex(line, use of)
 | |
| vindex(opt_args, use of)
 | |
| An var(action) of the form `tt(->)var(string)' is used by functions
 | |
| that implement a state machine. In this case, the `var(string)'s (with
 | |
| all leading and trailing spaces and tabs removed) of all actions that
 | |
| have to be used will be stored in the global array tt(state).  The
 | |
| function returns with a non-zero return value if the cursor is not in
 | |
| a position where options can be completed or if the current word could 
 | |
| not be completed to an option.  But if the tt(-R) option is given to
 | |
| tt(_arguments), the function will instead return with a return
 | |
| value of 300 (to make it distinguishable from other return values)
 | |
| after setting the global `tt(context)', `tt(line)' and `tt(opt_args)'
 | |
| parameters as described below, and without resetting any changes made
 | |
| to the special parameters such as tt(PREFIX) and tt(words).  This
 | |
| allows to write wrapper functions around tt(_arguments) that have to
 | |
| be able to find out if they have to make sure that the special
 | |
| completion parameters are not reset when they return.
 | |
| 
 | |
| Note that this means that a function calling tt(_arguments) with at least
 | |
| one action containing such a `tt(->)var(string)' has to declare
 | |
| appropriate local parameters as in:
 | |
| 
 | |
| example(local context state line
 | |
| typeset -A opt_args)
 | |
| 
 | |
| This will ensure that tt(_arguments) does not create unused global
 | |
| parameters.
 | |
| 
 | |
| vindex(expl, use of)
 | |
| A string in braces is evaluated to generate the matches and if the
 | |
| var(action) does not begin with an opening parentheses or brace, it
 | |
| is also split into separate words and executed. If the var(action)
 | |
| starts with a space, this list of words will be invoked unchanged,
 | |
| otherwise it will be invoked with some extra strings placed after the
 | |
| first word which can be given as arguments to the tt(compadd) builtin
 | |
| command and which make sure that the var(message) given
 | |
| in the description will be shown above the matches. These arguments
 | |
| are taken from the array parameter `tt(expl)' which will be set up
 | |
| before executing the var(action) and hence may be used in it (normally 
 | |
| in an expansion like `tt($expl[@])').
 | |
| 
 | |
| If the var(action) starts with `tt(= )' (an equals sign followed by a
 | |
| space), tt(_arguments) will insert the contents of the var(argument)
 | |
| field of the current context as the new first element in the tt(words) 
 | |
| special array and increments the value of the tt(CURRENT) special
 | |
| parameter. In other words, it inserts a dummy element in the tt(words) 
 | |
| array and makes tt(CURRENT) still point to the word in that array
 | |
| where the cursor is. This is only really useful when used with one of
 | |
| the forms that make tt(_arguments) modify the tt(words) array to
 | |
| contain only some of the words from the line, i.e. one of the argument 
 | |
| description forms where the var(message) is preceded by two or three
 | |
| colons. For example, when the function called in the action for such
 | |
| an argument itself uses tt(_arguments), the dummy element is needed to 
 | |
| make that second call to tt(_arguments) use all words from the
 | |
| restricted range for argument parsing. Without the inserted dummy
 | |
| element, the first word in the range would be taken (by the second
 | |
| tt(_arguments)) to be the command name and hence ignored.
 | |
| 
 | |
| During the evaluation or execution of the action the array `tt(line)'
 | |
| will be set to the command name and normal arguments from the command
 | |
| line, i.e. to the words from the command line excluding all options
 | |
| and their arguments. These are stored in the associative array
 | |
| `tt(opt_args)', using the option names as keys and their arguments as
 | |
| the values. For options that have more than one argument these are
 | |
| given as one string, separated by colons. All colons in the original
 | |
| arguments are preceded with backslashes.
 | |
| 
 | |
| The parameter `tt(context)' (set only in the calling function when
 | |
| using an action of the form `tt(->)var(string)', not during the
 | |
| evaluation of other var(action)s) is set to the automatically
 | |
| created context names. These are either strings of the form
 | |
| `tt(option)var(-opt)tt(-)var(n)' for the var(n)'th argument of the
 | |
| option var(-opt), or strings of the form `tt(argument-)var(n)' for
 | |
| the var(n)'th argument (for rest arguments the var(n) is the string
 | |
| `tt(rest)'). For example, when completing the argument of the tt(-o)
 | |
| option, the name is `tt(option-o-1)' and for the second normal
 | |
| (non-option-) argument it is `tt(argument-2)'.
 | |
| 
 | |
| Also, during the evaluation of the var(action), the context name in
 | |
| the tt(curcontext) parameter is changed by appending the same
 | |
| string that is stored in the tt(context) parameter.
 | |
| 
 | |
| It is also possible to specify multiple sets of options and
 | |
| arguments with the sets separated by single hyphens.  The specifications
 | |
| before the first hyphen are shared by all sets given after the first
 | |
| hyphen.  The first word in every other set gives the name of the
 | |
| set. This name may appear in exclusion lists in the specifications,
 | |
| either alone or before one of the possible values described above
 | |
| (with a `tt(-)' between the name and the rest).
 | |
| 
 | |
| For example:
 | |
| 
 | |
| example(_arguments \ 
 | |
|     -a \ 
 | |
|   - set1 \ 
 | |
|     -c \ 
 | |
|   - set2 \ 
 | |
|     -d \ 
 | |
|     ':arg:(x2 y2)')
 | |
| 
 | |
| This defines two sets. When the command line contains the option
 | |
| `tt(-c)', the `tt(-d)' option and the argument will not be considered
 | |
| possible completions. When it contains `tt(-d)' or an argument, the
 | |
| option `tt(-c)' will not be completed any more, but if `tt(-a)' is
 | |
| given, both sets will still be considered valid, because it appears
 | |
| before the first hyphen, so both sets contain this option.
 | |
| 
 | |
| If the name-string is of the form `tt(LPAR())var(name)tt(RPAR())' then 
 | |
| all specifications in the set have an implicit exclusion list
 | |
| containing the name of the set, i.e. all specifications are mutual
 | |
| exclusive with all other specifications in the same set. This is
 | |
| useful for defining multiple sets of options which are mutually
 | |
| exclusive and in which the options are aliases for each other. E.g.:
 | |
| 
 | |
| example(_arguments \ 
 | |
|     -a -b \ 
 | |
|   - '(compress)' \ 
 | |
|     {-c,--compress}'[compress]' \ 
 | |
|   - '(uncompress)' \ 
 | |
|     {-d,--decompress}'[decompress]')
 | |
| 
 | |
| To simplify the specifications for commands with standard option
 | |
| parsing, the options tt(-S) and tt(-A) may be given.  With tt(-S), no
 | |
| option will be completed after a `tt(-)tt(-)' on the line and this
 | |
| argument will otherwise be ignored. With tt(-A), no options will be
 | |
| completed after the first non-option argument on the line.  The tt(-A) 
 | |
| has to be followed by a pattern matching all strings which are not to
 | |
| be taken as arguments. For example, to make tt(_arguments) stop
 | |
| completing options after the first normal argument, but ignoring all
 | |
| strings starting with a hyphen even if they are not described by one
 | |
| of the var(optspec)s, one would use: `tt(-A "-*")'.
 | |
| 
 | |
| Note that using multiple sets will be slower than using only one set
 | |
| because the completion code has to parse the command line once for
 | |
| every set. So more than one set should only be used if the command
 | |
| syntax is too complicated. Note also that an option specification with
 | |
| rest-arguments (as in `tt(-foo:*:...)') often allows the use of
 | |
| multiple sets to be avoided.
 | |
| 
 | |
| Another option supported is `tt(-O) var(name)'. The var(name) will be
 | |
| taken as the name of an array and its elements will be given to
 | |
| functions called to generate matches when executing the
 | |
| var(actions). For example, this allows one to give options for the
 | |
| tt(compadd) builtin that should be used for all var(action)s.
 | |
| 
 | |
| Also, the tt(-M) option followed by a string may be given before the
 | |
| first description. The string will be used as the match specification
 | |
| when completing option names and values instead of the default
 | |
| `tt(r:|[_-]=* r:|=*)'. 
 | |
| 
 | |
| Finally, the option tt(-C) can be given to make tt(_arguments) modify
 | |
| the tt(curcontext) parameter when an action of the form
 | |
| `tt(->)var(state)' is used. This parameter is used to keep track of
 | |
| the current context and in this case it (and not the parameter
 | |
| tt(context) as explained above) has to be made local to make sure that 
 | |
| calling functions don't use the modified value. Also, the local
 | |
| version of tt(curcontext) has to be initialised with the old value as
 | |
| in:
 | |
| 
 | |
| example(local curcontext="$curcontext")
 | |
| 
 | |
| The function can also be made to automatically complete long options
 | |
| for commands that support the `tt(-)tt(-help)' option as, for example,
 | |
| most of the GNU commands do. For this, the string `tt(-)tt(-)' must be
 | |
| given as one argument and if it is, the command from the line is
 | |
| invoked with the `tt(-)tt(-help)' option and its output is parsed to find
 | |
| possible option names. Note that this means that you should be careful
 | |
| to make sure that this feature is not used for a command that does not
 | |
| support this option.
 | |
| 
 | |
| For such automatically found options that get an argument after an
 | |
| `tt(=)', the function also tries
 | |
| to automatically find out what should be completed as the argument.
 | |
| The possible completions for option-arguments can be described with
 | |
| the arguments after the `tt(-)tt(-)' (which are not used as described
 | |
| above). Each argument contains one description of the form
 | |
| `var(pattern)tt(:)var(message)tt(:)var(action)'. The var(message) and
 | |
| the var(action) have the same format as for the normal option
 | |
| descriptions described above. The var(action) will be executed to
 | |
| complete arguments of options whose description in the output of the
 | |
| command from the line with the `tt(-)tt(-help)' option matches the
 | |
| var(pattern). For example:
 | |
| 
 | |
| example(_arguments -- '*\*:toggle:(yes no)' \ 
 | |
|               '*=FILE*:file:_files' \ 
 | |
|               '*=DIR*:directory:_files -/')
 | |
| 
 | |
| Here, `tt(yes)' and `tt(no)' will be completed as the argument of
 | |
| options whose description ends in a star, file names for options that
 | |
| contain the substring `tt(=FILE)' in the description, and paths for
 | |
| options whose description contains `tt(=DIR)'. In fact, the last two
 | |
| patterns are not needed since this function always completes files
 | |
| for option descriptions containing `tt(=FILE)' and paths for option
 | |
| descriptions that contain `tt(=DIR)' or `tt(=PATH)'. These builtin
 | |
| patterns can be overridden by patterns given as arguments, however.
 | |
| 
 | |
| Note also that tt(_arguments) tries to find out automatically if the
 | |
| argument for an option is optional. If it fails to automatically
 | |
| detect this, the colon before the var(message) can be doubled to tell
 | |
| it about this as described for the normal option descriptions above.
 | |
| 
 | |
| If the var(pattern) ends in `tt((-))', this will removed from the
 | |
| pattern and the var(action) will be used only directly after the
 | |
| `tt(=)', not in the next word. I.e., this is like a normal
 | |
| specification as described above using `tt(=-)'.
 | |
| 
 | |
| The option `tt(-i) var(patterns)' (which must be given after the
 | |
| `tt(-)tt(-)') can be used to give patterns for options which should not be
 | |
| completed. The patterns can be given as the name of an array parameter
 | |
| or as a literal list in parentheses. E.g. `tt(-i
 | |
| "LPAR()-)tt(-(en|dis)able-FEATURE*RPAR()")' will make the options
 | |
| `tt(-)tt(-enable-FEATURE)' and `tt(-)tt(-disable-FEATURE)' be ignored. The
 | |
| option `tt(-s) var(pairs)' (again, after the `tt(-)tt(-)') can be used to
 | |
| describe option aliases. Each var(pair) consists of a pattern and a
 | |
| replacement. E.g. some tt(configure)-scripts describe options only as
 | |
| `tt(-)tt(-enable-foo)', but also accept `tt(-)tt(-disable-foo)'. To allow
 | |
| completion of the second form, one would use `tt(-s "LPAR()#-)tt(-enable-
 | |
| -)tt(-disable-RPAR()")'.
 | |
| 
 | |
| Example:
 | |
| 
 | |
| example(_arguments '-l+:left border:' \ 
 | |
|            '-format:paper size:(letter A4)' \ 
 | |
|            '*-copy:output file:_files::resolution:(300 600)' \ 
 | |
|            ':postscript file:_files -g \*.\(ps\|eps\)' \ 
 | |
|            '*:page number:')
 | |
| 
 | |
| This describes three options: `tt(-l)', `tt(-format)', and
 | |
| `tt(-copy)'. The first one gets one argument described as `var(left
 | |
| border)' for which no completion will be offered because of the empty
 | |
| action. The argument may come directly after the `tt(-l)' or it may be 
 | |
| given as the next word on the line. The `tt(-format)' option gets one
 | |
| argument (in the next word) described as `var(paper size)' for which
 | |
| only the strings `tt(letter)' and `tt(A4)' will be completed. The
 | |
| `tt(-copy)' option differs from the first two in that it may appear
 | |
| more than once on the command line and in that it accepts two
 | |
| arguments. The first one is mandatory and will be completed as a
 | |
| filename. The second one is optional (because of the second colon
 | |
| before the description `var(resolution)') and will be completed from
 | |
| the strings `tt(300)' and `tt(600)'.
 | |
| 
 | |
| The last two descriptions say what should be completed as
 | |
| arguments. The first one describes the first argument as a
 | |
| `var(postscript file)' and makes files ending in `tt(ps)' or `tt(eps)' 
 | |
| be completed. The last description says that all other arguments are
 | |
| `var(page numbers)' but does not give possible completions.
 | |
| )
 | |
| findex(_cache_invalid)
 | |
| item(tt(_cache_invalid) var(cache_identifier))(
 | |
| This function returns 0 if the completions cache corresponding to the
 | |
| given cache identifier needs rebuilding.  It determines this by
 | |
| looking up the tt(cache-policy) style for the current context, and
 | |
| if it exists, runs the function of the same name, supplying the full
 | |
| path to the relevant cache file as the only argument.
 | |
| 
 | |
| Example:
 | |
| 
 | |
| example(_example_caching_policy () {
 | |
|     # rebuild if cache is more than a week old
 | |
|     oldp=( "$1"(Nmw+1) )
 | |
|     (( $#oldp ))
 | |
| })
 | |
| )
 | |
| findex(_call)
 | |
| item(tt(_call) var(tag) var(string) ...)(
 | |
| This function is used in places where a command is called, making it
 | |
| possible for the user to override the default command call.  It looks up
 | |
| the tt(command) style with the supplied var(tag).  If the style is set, its
 | |
| value is used as the command to execute.
 | |
| 
 | |
| In any case, the var(string)s from the call to tt(_call) or from the
 | |
| style are concatenated with spaces between them and the resulting
 | |
| string is evaluated.  The return value is the return value of the
 | |
| command called.
 | |
| )
 | |
| findex(_combination)
 | |
| item(tt(_combination) [ tt(-s) var(pattern) ] var(tag) var(style) var(specs) ... var(field) var(opts) ...)(
 | |
| This function is used to complete combinations of values such as pairs 
 | |
| of hostnames and usernames.  The possible values will be taken from the 
 | |
| var(style) whose name is given as the second argument.  The first argument
 | |
| is the var(tag) to use to do the lookup.
 | |
| 
 | |
| The style name should consist of multiple parts separated by
 | |
| hyphens which are then used as field names.  Known values for such
 | |
| fields can be given after the second argument in arguments of the form 
 | |
| `var(field)tt(=)var(pattern)'.  The first argument without an equals sign 
 | |
| is taken as the name of the field for which completions should be
 | |
| generated.
 | |
| 
 | |
| The matches generated will be taken from the value of the style.  These 
 | |
| values should contain the possible values for the combinations where
 | |
| the values for the different fields are separated by colons or
 | |
| characters matching the pattern given after the tt(-s) option to
 | |
| tt(_combination); normally this is used to define character classes
 | |
| like the `tt(-s "[:@]")' used for the tt(users-hosts) style.
 | |
| 
 | |
| Only the values for the requested fields for which the patterns given
 | |
| in the `var(field)tt(=)var(pattern)' match the respective fields in
 | |
| the strings from the style value are generated as possible matches.
 | |
| 
 | |
| If no style with the given name is defined for the given tag but a
 | |
| function named with the name of the requested field preceded by an
 | |
| underscore is defined, that function will be called to generate the
 | |
| matches.  This is also done if none of the strings in the value of the
 | |
| style match all the patterns given as arguments.
 | |
| 
 | |
| If the same name is used for more than one field, in both the
 | |
| `var(field)tt(=)var(pattern)' and the argument that gives the field
 | |
| name to complete for, the number of the field (starting with one) may
 | |
| be given after the fieldname, separated from it by a colon.
 | |
| 
 | |
| All arguments after the requested field name are passed to
 | |
| tt(compadd) when generating matches from the style value, or to 
 | |
| the functions for the fields if they are called.
 | |
| )
 | |
| findex(_compalso)
 | |
| item(tt(_compalso) var(names) ...)(
 | |
| This function looks up the definitions for the context and command
 | |
| names given as arguments and calls the handler functions for them if
 | |
| there is a definition (given with the tt(compdef) function).  For
 | |
| example, the function completing inside subscripts might use
 | |
| `tt(_compalso -math-)' to include the completions generated for
 | |
| mathematical environments.
 | |
| )
 | |
| findex(_describe)
 | |
| item(tt(_describe) [ tt(-o) ] var(descr) var(name1) [ var(name2) ] var(opts) ... tt(-)tt(-) ...)(
 | |
| This function is useful for preparing a list of command options or
 | |
| arguments, together with their descriptions var(descr), as matches.
 | |
| Multiple groups separated by tt(-)tt(-) can be supplied, potentially with
 | |
| different completion options var(opts).
 | |
| 
 | |
| The var(descr) is taken as a string to display above the matches if the
 | |
| tt(format) style for the tt(descriptions) tag is set.  After this come one
 | |
| or two names of arrays followed by options to pass to tt(compadd).  The
 | |
| first array contains the possible completions with their descriptions in
 | |
| the form `var(completion)tt(:)var(description)'.  If a second array is
 | |
| given, it should have the same number of elements as the first one and the
 | |
| corresponding elements are added as possible completions instead of the
 | |
| var(completion) strings from the first array.  The completion list will
 | |
| retain the descriptions from the first array.  Finally, a set of completion
 | |
| options can appear.
 | |
| 
 | |
| If the option `tt(-o)' appears before the first argument, the matches added
 | |
| will be treated as option names (typically following a `tt(-)',
 | |
| `tt(-)tt(-)' or `tt(+)' on the command line).  This makes tt(_describe) use
 | |
| the tt(prefix-hidden), tt(prefix-needed) and tt(verbose) styles to find out
 | |
| if the strings should be added at all and if the descriptions should be
 | |
| shown.  Without the `tt(-o)' option, only the tt(verbose) style is used.
 | |
| 
 | |
| tt(_describe) uses the tt(_all_labels) function to generate the matches, so
 | |
| it does not need to appear inside a loop over tag labels.
 | |
| )
 | |
| findex(_description)
 | |
| item(tt(_description) [ tt(-12VJ) ] var(tag) var(name) var(descr) [ var(specs) ... ])(
 | |
| This function is called before completions are added (typically by a call
 | |
| to tt(compadd)); it tests various styles and arranges for any necessary
 | |
| options to be passed on to tt(compadd).  The styles are tested in the
 | |
| current context using the given var(tag); options are put into the array
 | |
| called var(name) for passing on to tt(compadd); the description for the
 | |
| current set of matches is passed in var(descr).  The styles tested are:
 | |
| tt(format) (which is first tested for the given var(tag) and then for the
 | |
| tt(descriptions) tag if that isn't defined), tt(hidden), tt(matcher),
 | |
| tt(ignored-patterns) and tt(group-name) (the last are tested only for the
 | |
| tag given as the first argument).  This function also calls the tt(_setup)
 | |
| function which tests some more styles.
 | |
| 
 | |
| The string returned by the tt(format) style (if any) will be modified so
 | |
| that the sequence `tt(%d)' is replaced by the var(descr) given as the third
 | |
| argument.  If tt(_description) is called with more than three arguments,
 | |
| the additional var(specs) should be of the form `var(char)tt(:)var(str)'
 | |
| and every appearance of `tt(%)var(char)' in the format string will be
 | |
| replaced by var(string).
 | |
| 
 | |
| The options placed in the array will also make sure that the matches
 | |
| are placed in a separate group, depending on the value of the
 | |
| tt(group-name) style.  Normally a sorted group will be used for this
 | |
| (with the `tt(-J)' option), but if an option starting with `tt(-V)',
 | |
| `tt(-J)', `tt(-1)', or `tt(-2)' is given, that option will be included
 | |
| in the array, so that it is possible to make the group unsorted by
 | |
| giving the option `tt(-V)', `tt(-1V)', or `tt(-2V)'. 
 | |
| 
 | |
| In most cases, the function will be used like this:
 | |
| 
 | |
| example(local expl
 | |
| _description files expl file
 | |
| compadd "$expl[@]" - "$files[@]")
 | |
| 
 | |
| Note the use of the parameter tt(expl), the hyphen, and the list of
 | |
| matches.  Almost all calls to tt(compadd) within the completion system use
 | |
| a similar format; this ensures that user-specified styles are correctly
 | |
| passed down to the builtins which implement the internals of completion.
 | |
| )
 | |
| findex(_files)
 | |
| item(tt(_files))(
 | |
| The function tt(_files) uses the tt(file-patterns) style and calls
 | |
| tt(_path_files) with all the arguments it was passed except for tt(-g) 
 | |
| and tt(-/).  These two options are used depending on the setting of the 
 | |
| tt(file-patterns) style.
 | |
| 
 | |
| See tt(_path_files) below for a description of the full set of options
 | |
| accepted by tt(_files).
 | |
| )
 | |
| findex(_funcall)
 | |
| item(tt(_funcall) var(return) var(name) [ var(args) ... ])(
 | |
| If a function var(name) exists, it is called with the arguments
 | |
| var(args). Unless it is the empty string or a single hyphen,
 | |
| var(return) is taken as the name of a parameter and the return status
 | |
| from the called function is stored in it.
 | |
| The return value of tt(_funcall) itself is zero if the function
 | |
| var(name) exists and was called and non-zero otherwise.
 | |
| )
 | |
| findex(_message)
 | |
| item(tt(_message) [ -r ] var(descr))(
 | |
| The var(descr) is used like the third
 | |
| argument to the tt(_description) function. However, the resulting
 | |
| string will always be shown whether or not matches were
 | |
| generated. This is useful to display help texts in places where no
 | |
| completions can be generated automatically.
 | |
| 
 | |
| This function also uses the tt(format) style for the tt(messages) tag in
 | |
| preference to the tt(format) style for the tt(descriptions) tag. The
 | |
| latter is used only if the former is unset.
 | |
| 
 | |
| If the tt(-r) option is given, no style is used and the var(descr) is
 | |
| used literally as the string to display. This is only used in cases
 | |
| where that string is taken from some pre-processed argument list
 | |
| containing an expanded description.
 | |
| )
 | |
| findex(_multi_parts)
 | |
| item(tt(_multi_parts) var(sep) var(array))(
 | |
| This function receives two arguments: a separator character and an
 | |
| array.  As usual, the var(array) may be either the
 | |
| name of an array parameter or a literal array in the form
 | |
| `tt(LPAR()foo bar)tt(RPAR())' (i.e. a list of words separated by white 
 | |
| space in parentheses).  With these arguments, this function will
 | |
| complete to strings from the array where the parts separated by the
 | |
| separator character are completed independently.  For example, the
 | |
| tt(_tar) function from the distribution caches the pathnames from the
 | |
| tar file in an array, and then calls this function to complete these
 | |
| names in the way normal filenames are completed by the
 | |
| tt(_path_files) function, by using `tt(_multi_parts) tt(/)
 | |
| var(patharray)'.
 | |
| 
 | |
| If the tt(-i) option is present, then any time there is a unique match it
 | |
| will immediately be inserted even if that requires additional separators to
 | |
| be inserted as well.  When completing from a fixed set of possible
 | |
| completions which are really words, this is often the expected behaviour;
 | |
| however, if tt(_multi_parts) should behave like completing pathnames, the
 | |
| tt(-i) option should not be used.
 | |
| 
 | |
| Like other utility functions, this function accepts the `tt(-V)',
 | |
| `tt(-J)', `tt(-1)', `tt(-2)', `tt(-n)', `tt(-f)', `tt(-X)', `tt(-M)',
 | |
| `tt(-P)', `tt(-S)', `tt(-r)', `tt(-R)', and `tt(-q)' options and passes
 | |
| them to the tt(compadd) builtin.
 | |
| )
 | |
| findex(_next_label)
 | |
| item(tt(_next_label) [ tt(-12VJ) ] var(tag) var(name) var(descr) [ var(options) ... ])(
 | |
| This function should be called repeatedly to generate the tag
 | |
| labels. On each call it will check if another tag label is to be used 
 | |
| and, if there is at least one, zero is returned. If no more tag
 | |
| labels are to be used, a non-zero status is returned.
 | |
| 
 | |
| The tt(-12JV) options and the first three arguments are given to the
 | |
| tt(_description) function using the tag label instead of the first
 | |
| argument as appropriate. The var(options) given after the var(descr)
 | |
| should be other options to be used for tt(compadd) or whatever
 | |
| function is to be called to add the matches. tt(_next_label) will store these 
 | |
| var(options) in the parameter whose var(name) is given as the second
 | |
| argument. This is done in such a way that the description given by the 
 | |
| user to the tt(tag-order) style is preferred over the one given to
 | |
| tt(_next_label).
 | |
| 
 | |
| Note that this function must not be called without a previous call to
 | |
| tt(_tags) or tt(_requested) because it uses the tag label
 | |
| for the current tag found by these functions.
 | |
| 
 | |
| A normal use of this function for the tag labels of the tag tt(foo)
 | |
| looks like this:
 | |
| 
 | |
| example(local expl ret=1
 | |
| ...
 | |
| if _requested foo; then
 | |
|   ...
 | |
|   while _next_label foo expl '...'; do
 | |
|     compadd "$expl[@]" ... && ret=0
 | |
|   done
 | |
|   ...
 | |
| fi
 | |
| return ret
 | |
| )
 | |
| )
 | |
| findex(_normal)
 | |
| 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
 | |
| the command is looked up to see if special completions exists, including
 | |
| completions defined for patterns which match the name.  If none is found,
 | |
| completion is performed for the context tt(-default-).
 | |
| 
 | |
| The function can also be called by other completion functions which need to
 | |
| 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 ...)'.
 | |
| 
 | |
| 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.
 | |
| )
 | |
| findex(_options)
 | |
| item(tt(_options))(
 | |
| This can be used to complete option names.  It uses a matching
 | |
| specification that ignores a leading `tt(no)', ignores underscores and 
 | |
| allows the user to type upper-case letters which will match their
 | |
| lower-case counterparts.  All arguments passed to this function are
 | |
| propagated unchanged to the tt(compadd) builtin.
 | |
| )
 | |
| findex(_parameters)
 | |
| item(tt(_parameters))(
 | |
| This should be used to complete parameter names.  tt(_parameters) can
 | |
| take a tt(-g var(pattern)) option which specifies that only parameters
 | |
| whose type matches the var(pattern) should be completed.  Strings of
 | |
| the same form as those returned by the tt(t) parameter expansion flag
 | |
| are used here when matching the type.  All other arguments are passed
 | |
| unchanged to the tt(compadd) builtin.
 | |
| )
 | |
| findex(_path_files)
 | |
| item(tt(_path_files))(
 | |
| The function tt(_path_files) is used throughout the completion system
 | |
| to complete filenames.  It allows completion of partial paths.  For
 | |
| example, the string `tt(/u/i/s/sig)' may be completed to
 | |
| `tt(/usr/include/sys/signal.h)'.
 | |
| 
 | |
| The options accepted by both tt(_path_files) and tt(_files) are:
 | |
| 
 | |
| startitem()
 | |
| item(tt(-f))(
 | |
| Complete all filenames.  This is the default.
 | |
| )
 | |
| item(tt(-/))(
 | |
| Specifies that only directories should be completed.
 | |
| )
 | |
| item(tt(-g) var(pattern))(
 | |
| Specifies that only files matching the var(pattern) should be completed.
 | |
| )
 | |
| item(tt(-W) var(paths))(
 | |
| Specifies path prefixes that are to be prepended to the string from the
 | |
| line to generate the filenames but that should not be inserted in the line
 | |
| or shown in a completion listing.  Here, var(paths) may be the name of an
 | |
| array parameter, a literal list of paths enclosed in parentheses or an
 | |
| absolute pathname.
 | |
| )
 | |
| item(tt(-F))(
 | |
| This option from the tt(compadd) builtin gives direct control over which
 | |
| filenames should be ignored.  If the option is not present, the
 | |
| tt(ignored-patterns) style is used.
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| These functions also accept the `tt(-J)', `tt(-V)', `tt(-1)',
 | |
| `tt(-2)', `tt(-n)', `tt(-X)', `tt(-M)', `tt(-P)', `tt(-S)', `tt(-q)',
 | |
| `tt(-r)', and `tt(-R)' options from the tt(compadd) builtin.
 | |
| 
 | |
| Finally, the tt(_path_files) function  uses the styles tt(expand),
 | |
| tt(ambiguous), tt(special-dirs), tt(list-suffixes) and tt(file-sort).
 | |
| )
 | |
| findex(_regex_arguments)
 | |
| item(tt(_regex_arguments) var(name) var(specs) ...)(
 | |
| This function is a compiler to generate a completion function.  The
 | |
| first argument specifies the name of the generated function while the
 | |
| remaining arguments specify a completion as a set of regular
 | |
| expressions with actions.  The generated function has the structure of a
 | |
| finite-state machine whose states correspond to the state (i.e. the
 | |
| context) of the completion. This state machine uses a command line,
 | |
| which comes from the concatenation of the tt(words) array up to the
 | |
| current cursor position using null characters as separators with no extra
 | |
| quotation.  This is analysed and at the end the appropriate action is
 | |
| executed.
 | |
| 
 | |
| Specification arguments take one of following forms, in which
 | |
| 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(tag)tt(:)var(descr)tt(:)var(action)])(
 | |
| This is a primitive element, corresponding to one
 | |
| state of the compiled state machine.  The state is entered if
 | |
| `tt((#b)LPAR()(#B))var(pattern)tt(RPAR()(#B))var(lookahead)tt(*)' matches
 | |
| the command line string.  If it matches, `var(guard)' is evaluated and
 | |
| its return status is examined; if this is successful, the state is entered,
 | |
| otherwise the test fails and other candidates are tried.  The var(pattern)
 | |
| string `tt([])' is guaranteed never to match.
 | |
| 
 | |
| If the test succeeds and the state is entered, the left part of the
 | |
| command line string matched as var(pattern) is removed and the 
 | |
| next state is tried, proceeding from inside to outside and from left to
 | |
| right.
 | |
| 
 | |
| If no test succeeds and the remaining command line string contains no null
 | |
| character, the completion target is restricted to the remainder of the
 | |
| command line string and var(action)s for the target are executed.
 | |
| In this case, nothing is actually removed from the command line string
 | |
| so that any previous or neighbouring state may also have var(actions)s.
 | |
| var(actions)s evaluation are ordered by the tt(tag-order) style and specified
 | |
| var(tag) by tt(_alternative).  So, the various formats supported by
 | |
| tt(_alternative) can be used in var(action).  var(descr) is used for
 | |
| setting up the array parameter tt(expl).
 | |
| )
 | |
| item(tt(/)var(pattern)tt(/+) [tt(%)var(lookahead)tt(%)] [tt(-)var(guard)] [tt(:)var(tag)tt(:)var(descr)tt(:)var(action)])(
 | |
| This is similar to `tt(/)var(pattern)tt(/) ...' but the left part of the
 | |
| 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(tag)tt(:)var(descr)tt(:)var(action)])(
 | |
| This is similar to `tt(/)var(pattern)tt(/) ...' but the var(action)s of the
 | |
| current and previous states are ignored even if the following state's
 | |
| `var(pattern)' matches the empty string.
 | |
| )
 | |
| item(tt(LPAR()) var(spec) tt(RPAR()))(
 | |
| This groups var(spec)s.
 | |
| )
 | |
| item(var(spec) tt(#))(
 | |
| This allows any number of repetitions of var(spec).
 | |
| )
 | |
| item(var(spec) var(spec))(
 | |
| This represents the concatenation of two var(spec)s.
 | |
| )
 | |
| item(var(spec) tt(|) var(spec))(
 | |
| Either of the two var(spec)s can be matched.
 | |
| )
 | |
| enditem()
 | |
| )
 | |
| findex(_requested)
 | |
| item(tt(_requested) [ tt(-12VJ) ] var(tag) [ var(name) var(descr) [ var(command) var(args) ... ] ])(
 | |
| This function is called to decide whether a tag already registered by a
 | |
| call to tt(_tags) (see below) is requested and hence completion should be
 | |
| performed for it; it returns status zero if the tag is requested and
 | |
| non-zero otherwise.  This will usually be done in a loop such as the
 | |
| following:
 | |
| 
 | |
| example(_tags foo bar baz
 | |
| while _tags; do
 | |
|   if _requested foo; then
 | |
|     ... # perform completion for foo
 | |
|   fi
 | |
|   ... # test the tags bar and baz in the same way
 | |
|   ... # exit loop if matches were generated
 | |
| done)
 | |
| 
 | |
| Note that the test for whether matches were generated is not performed
 | |
| until the end of the tt(_tags) loop.  This is so that the user can specify
 | |
| a set of tags to be tested at the same time in the tt(tag-order)
 | |
| parameter.
 | |
| 
 | |
| If the var(name) and the var(descr) are given, tt(_requested) calls the
 | |
| tt(_description) function with these arguments, including the options.
 | |
| 
 | |
| If the var(command) is given, the tt(_all_labels) function will be called
 | |
| immediately with the same arguments.  This is often useful to do both the
 | |
| testing of the tag, getting the description for the matches and adding the
 | |
| matches at once.  For example:
 | |
| 
 | |
| example(local expl ret=1
 | |
| _tags foo bar baz
 | |
| while _tags; do
 | |
|   _requested foo expl 'description' \ 
 | |
|       compadd foobar foobaz && ret=0
 | |
|   ...
 | |
|   (( ret )) || break
 | |
| done)
 | |
| )
 | |
| findex(_retrieve_cache)
 | |
| item(tt(_retrieve_cache) var(cache_identifier))(
 | |
| This function retrieves completion information from the file given by
 | |
| var(cache_identifier), stored in a directory specified by the
 | |
| tt(cache-path) style (defaults to tt(~/.zsh/cache)).  The return value
 | |
| is zero if retrieval was successful.  It will only attempt retrieval
 | |
| if the tt(use-cache) style is set, so you can call this function
 | |
| without worrying about whether the user wanted to use the caching
 | |
| layer.
 | |
| 
 | |
| See tt(_store_cache) below for more details.
 | |
| )
 | |
| findex(_sep_parts)
 | |
| item(tt(_sep_parts))(
 | |
| This function is passed alternating arrays and separators as arguments.
 | |
| The arrays specify completions for parts of strings to be separated by the
 | |
| separators.  The arrays may be the names of array parameters or
 | |
| a quoted list of words in parentheses.  For example, with the array
 | |
| `tt(hosts=(ftp news))' the call `tt(_sep_parts '(foo bar)' @ hosts)' will
 | |
| complete the string  `tt(f)' to `tt(foo)' and the string `tt(b@n)' to
 | |
| `tt(bar@news)'.
 | |
| 
 | |
| This function passes the `tt(-V)', `tt(-J)', `tt(-1)', `tt(-2)',
 | |
| `tt(-n)', `tt(-X)', `tt(-M)', `tt(-P)', `tt(-S)', `tt(-r)', `tt(-R)',
 | |
| and `tt(-q)' options and their arguments to the tt(compadd) builtin
 | |
| used to add the matches.
 | |
| )
 | |
| findex(_set_options)
 | |
| findex(_unset_options)
 | |
| item(tt(_set_options) and tt(_unset_options))(
 | |
| These functions complete only set or unset options, with the same
 | |
| matching specification used in the tt(_options) function.
 | |
| 
 | |
| Note that you need to uncomment a few lines in the tt(_main_complete)
 | |
| function for these functions to work properly.  The lines in question
 | |
| are used to store the option settings in effect before the completion
 | |
| widget locally sets the options it needs.  Hence these options are not
 | |
| generally used by the completion system.
 | |
| )
 | |
| findex(_setup)
 | |
| item(tt(_setup) var(tag) [ var(group) ])(
 | |
| This function expects a tag as its argument and sets up the special
 | |
| parameters used by the completion system appropriately for the tag,
 | |
| using styles such as tt(list-colors) and tt(last-prompt).
 | |
| 
 | |
| The optional var(group) gives the name of the group in which the
 | |
| matches will be placed. If it is not given, the var(tag) is used as
 | |
| the group name.
 | |
| 
 | |
| Note that this function is called automatically from tt(_description)
 | |
| so that one normally doesn't have to call it explicitly.
 | |
| )
 | |
| findex(_store_cache)
 | |
| item(tt(_store_cache) var(cache_identifier) var(vars) ...)(
 | |
| This function, when combined with tt(_retrieve_cache) and
 | |
| tt(_cache_invalid), makes it easy to implement a caching layer for
 | |
| your completion functions.  If a completion function needs to perform
 | |
| a costly operation in order to generate data which is used to
 | |
| calculate completions, you can store that data in variables, and use
 | |
| this function to dump the values of those variables to a file.  Then,
 | |
| if they are needed in subsequent shell invocations, they can be
 | |
| retrieved quickly from that file via tt(_retrieve_cache), avoiding the
 | |
| needly for repeating the costly operation.
 | |
| 
 | |
| The var(cache_identifier) specifies the file which the data should be
 | |
| dumped to, and is stored in a directory specified by the
 | |
| tt(cache-path) style (defaults to tt(~/.zsh/cache)).  The remaining
 | |
| var(vars) arguments are the variables to dump to the file.
 | |
| 
 | |
| The return value is zero if storage was successful.  The function will
 | |
| only attempt storage if the tt(use-cache) style is set, so you can
 | |
| call this function without worrying about whether the user wanted to
 | |
| use the caching layer.
 | |
| 
 | |
| If your completion function avoids calling _retrieve_cache when it
 | |
| already has the completion data in the environment, it should probably
 | |
| at least call tt(_cache_invalid) to check whether this data and the
 | |
| data cached on disk is still valid.
 | |
| 
 | |
| See the _perl_modules completion function for a simple example of
 | |
| usage of this caching layer.
 | |
| )
 | |
| findex(_tags)
 | |
| item(tt(_tags) [ tt(-C) var(name) [ var(tags) ... ] ])(
 | |
| If called with arguments, these are taken as the names of the tags for 
 | |
| the types of matches the calling completion function can generate in
 | |
| the current context.  These tags are stored internally and sorted by
 | |
| using the tt(tag-order) style.  Following calls to this function
 | |
| without arguments from the same function will then select the first,
 | |
| second, etc. set of tags requested by the user.  To test if a certain
 | |
| tag should be tried, the tt(_requested) function has to be called (see 
 | |
| above).
 | |
| 
 | |
| The return value is zero if at least one of the tags is requested and
 | |
| non-zero otherwise. 
 | |
| 
 | |
| This function also accepts the tt(-C) option followed by a
 | |
| var(name). This name is temporarily (i.e. not visible outside
 | |
| tt(_tags)) stored in the argument field of the context name in the
 | |
| tt(curcontext) parameter. This allows tt(_tags) to be made to use a more
 | |
| specific context name without having to change and reset the
 | |
| tt(curcontext) parameter (which would otherwise have the same effect).
 | |
| )
 | |
| findex(_use_lo)
 | |
| item(tt(_use_lo))(
 | |
| This function is a simple wrapper around the tt(_arguments) function
 | |
| described above.  It can be used to automatically complete long
 | |
| options for commands that understand the `tt(-)tt(-help)' option
 | |
| (`tt(_use_lo)' is for `use long options').  It is not intended to be
 | |
| used from completion functions but as a top-level completion function
 | |
| in its own right.  For example, to enable option completion for the
 | |
| commands tt(foo) and tt(bar), one would call:
 | |
| 
 | |
| example(compdef _use_lo foo bar)
 | |
| 
 | |
| in one of the initialization files after the call to tt(compinit).
 | |
| 
 | |
| The default installation uses this function only to generate
 | |
| completions for some GNU-commands because to complete the options, the 
 | |
| command has to be called and hence it shouldn't be used if one can't
 | |
| be sure that the command understands the `tt(-)tt(-help)' option.
 | |
| )
 | |
| findex(_values)
 | |
| item(tt(_values) var(specs) ...)(
 | |
| This is used to complete values (strings) and their arguments or
 | |
| lists of such values.  It can be used in two ways.
 | |
| 
 | |
| If the first argument is the option `tt(-O) var(name)', this will be used
 | |
| in the same way as by the tt(_arguments) function, in other words the
 | |
| elements of the var(name) array will be given to calls to tt(compadd)
 | |
| and when executing an action.
 | |
| 
 | |
| Otherwise, if the first argument (or the first argument after the
 | |
| `tt(-O) var(name)' option if that is used) is the option `tt(-s)', the
 | |
| next argument is used as the character that separates multiple values.
 | |
| Thus the values completed appear in the same word on the command line,
 | |
| unlike completion using tt(_arguments).
 | |
| 
 | |
| The first argument (after the options and separator character if they
 | |
| are given) is used as a string to print as a description before
 | |
| listing the values.
 | |
| 
 | |
| All other arguments describe the possible values and their
 | |
| arguments in the same format used for the description of options by
 | |
| the tt(_arguments) function (see above).  The only differences are that
 | |
| no minus or plus sign is required at the beginning and that
 | |
| values can have only one argument.
 | |
| 
 | |
| Example:
 | |
| 
 | |
| example(_values -s , 'description' \ 
 | |
|         '*foo[bar]' \ 
 | |
|         '(two)*one[number]:first count:' \ 
 | |
|         'two[another number]::second count:(1 2 3)')
 | |
| 
 | |
| This describes three possible values: `tt(foo)', `tt(one)', and
 | |
| `tt(two)'.  The first is described as `tt(bar)', takes no argument 
 | |
| and may appear more than once.  The second is described as
 | |
| `tt(number)', may appear more than once, and takes one mandatory
 | |
| argument described as `tt(first count)' for which no action is
 | |
| specified so that it will not be completed automatically.  The
 | |
| `tt((two))' at the beginning says that if the value `tt(one)' is on
 | |
| the line, the value `tt(two)' will not be considered to be a possible
 | |
| completion anymore.  Finally, the last value (`tt(two)') is described
 | |
| as `tt(another number)' and takes an optional argument described as
 | |
| `tt(second count)' which will be completed from the strings `tt(1)',
 | |
| `tt(2)', and `tt(3)'. The tt(_values) function will complete lists of
 | |
| these values separated by commas.
 | |
| 
 | |
| Like tt(_arguments) this function temporarily adds another context
 | |
| name component to the current context name while executing the
 | |
| var(action).  Here this name is just the name of the value for which
 | |
| the argument is completed.
 | |
| 
 | |
| To decide if the descriptions for the values (not those for the
 | |
| arguments) should be printed, the style tt(verbose) is used.
 | |
| 
 | |
| One last difference from tt(_arguments) is that this function uses the
 | |
| associative array
 | |
| tt(val_args) to report values and their arguments, although otherwise this
 | |
| is the same as the tt(opt_args) association used by
 | |
| tt(_arguments).  This also means that the function calling tt(_values) 
 | |
| should declare the tt(state), tt(line), tt(context) and tt(val_args)
 | |
| parameters as in:
 | |
| 
 | |
| example(local context state line
 | |
| typeset -A val_args)
 | |
| 
 | |
| when using an action of the form `tt(->)var(string)'.  With this
 | |
| function the tt(context) parameter will be set to the name of the
 | |
| value whose argument is to be completed.
 | |
| 
 | |
| Like tt(_arguments), tt(_values) supports the tt(-C) option in
 | |
| which case you have to make the parameter tt(curcontext) local instead 
 | |
| of tt(context) (as described above).
 | |
| )
 | |
| findex(_wanted)
 | |
| item(tt(_wanted) [ tt(-C) var(name) ]  [ tt(-12VJ) ] var(tag) var(name) var(descr) var(command) var(args) ...)(
 | |
| In many contexts, completion will generate one particular set of
 | |
| matches (usually corresponding to a single tag); however, it is
 | |
| still necessary to decide whether the user requires matches of this type.
 | |
| This function is useful in such a case.
 | |
| 
 | |
| Like tt(_requested), it should be passed arguments as for tt(_description).
 | |
| It calls tt(_tags) with the given var(tag) and if that returns zero 
 | |
| (so that the var(tag) is requested by the user) it calls
 | |
| tt(_description).  Hence to offer only one tag and immediately
 | |
| use the description generated:
 | |
| 
 | |
| example(_wanted tag expl 'description' \ 
 | |
|     compadd matches...)
 | |
| 
 | |
| Unlike tt(_requested), however, tt(_wanted) cannot be called without
 | |
| the var(command).  This is because tt(_wanted) also implements the loop
 | |
| over the tags, not just the one for the labels; conversely, it should not
 | |
| be called in the middle of a tt(_tags) loop.
 | |
| 
 | |
| Like tt(_tags) this function supports the tt(-C) option to give a
 | |
| different name for the argument context field.
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| texinode(Completion Directories)()(Completion Functions)(Completion System)
 | |
| sect(Completion Directories)
 | |
| cindex(completion system, directory structure)
 | |
| 
 | |
| In the source distribution, the files are contained in various
 | |
| subdirectories of the tt(Completion) directory.  They may have been
 | |
| installed in the same structure, or into one single function directory.
 | |
| The following is a description of the files found in the original directory
 | |
| structure.  If you wish to alter an installed file, you will need to copy
 | |
| it to some directory which appears earlier in your tt(fpath) than the
 | |
| standard directory where it appears.
 | |
| 
 | |
| startitem()
 | |
| item(tt(Core))(
 | |
| The core scripts and functions.  You will certainly need these, though will
 | |
| probably not need to alter them.  Many of these are documented above.
 | |
| )
 | |
| item(tt(Base))(
 | |
| Other functions you will almost certainly want if you are going to use
 | |
| any of the standard completion functions.  You may want to edit some of
 | |
| these files.
 | |
| )
 | |
| item(tt(Builtins))(
 | |
| Functions for completing arguments of shell builtin commands and
 | |
| utility functions for this.  Some of these are also used by functions from
 | |
| the tt(User) directory.
 | |
| )
 | |
| item(tt(User))(
 | |
| Functions for completing arguments of external commands and suites of
 | |
| commands.  They may need modifying for your system, although in many cases
 | |
| some attempt is made to decide which version of a command is present.  For
 | |
| example, completion for the tt(mount) command tries to determine the system
 | |
| it is running on, while completion for many other utilities try to decide
 | |
| whether the GNU version of the command is in use, and hence whether the
 | |
| tt(--help) option is supported..
 | |
| )
 | |
| item(tt(Commands))(
 | |
| Functions which implement special types of completion to be bound to
 | |
| keystrokes rather than called by context.
 | |
| )
 | |
| enditem()
 |