mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			214 lines
		
	
	
	
		
			9.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			214 lines
		
	
	
	
		
			9.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| COMMENT(!MOD!zsh/complist
 | |
| Completion listing extensions.
 | |
| !MOD!)
 | |
| cindex(completion, listing)
 | |
| cindex(completion, coloured listings)
 | |
| The tt(zsh/complist) module offers two extensions to completion listings:
 | |
| the ability to highlight matches in such a list and a different
 | |
| style of menu-completion.
 | |
| 
 | |
| Whenever one of the parameters tt(ZLS_COLORS) or tt(ZLS_COLOURS) is set 
 | |
| and the tt(zsh/complist) module is loaded or linked into the shell,
 | |
| completion lists will be colored.  Note, however, that tt(complist) will
 | |
| not automatically be loaded if it is not linked in:  on systems with
 | |
| dynamic loading, `tt(zmodload zsh/complist)' is required.
 | |
| 
 | |
| subsect(Parameters)
 | |
| vindex(ZLS_COLORS)
 | |
| vindex(ZLS_COLOURS)
 | |
| The parameters tt(ZLS_COLORS) and tt(ZLS_COLOURS) describe how matches
 | |
| are highlighted. To turn on highlighting an empty value suffices, in
 | |
| which case all the default values given below will be used. The format of the
 | |
| value of these parameters is the same as used by the GNU version of the
 | |
| tt(ls) command: a colon-separated list of specifications of the form
 | |
| `var(name)=var(value)'. The var(name) may be one of the following strings,
 | |
| most of which specify file types for which the var(value) will be used. The
 | |
| strings and their default values are:
 | |
| 
 | |
| startitem()
 | |
| item(tt(no 0))(
 | |
| for normal text (i.e. when displaying something other than a matched file)
 | |
| )
 | |
| item(tt(fi 0))(
 | |
| for regular files
 | |
| )
 | |
| item(tt(di 32))(
 | |
| for directories
 | |
| )
 | |
| item(tt(ln 36))(
 | |
| for symbolic links
 | |
| )
 | |
| item(tt(pi 31))(
 | |
| for named pipes (FIFOs)
 | |
| )
 | |
| item(tt(so 33))(
 | |
| for sockets
 | |
| )
 | |
| item(tt(bd 44;37))(
 | |
| for block devices
 | |
| )
 | |
| item(tt(cd 44;37))(
 | |
| for character devices
 | |
| )
 | |
| item(tt(ex 35))(
 | |
| for executable files
 | |
| )
 | |
| item(tt(mi) var(none))(
 | |
| for non-existent file (default is the value defined for tt(fi))
 | |
| )
 | |
| item(tt(lc \e[))(
 | |
| for the left code (see below)
 | |
| )
 | |
| item(tt(rc m))(
 | |
| for the right code
 | |
| )
 | |
| item(tt(tc) var(0))(
 | |
| for the character indicating the file type  printed after filenames if
 | |
| the tt(LIST_TYPES) option is set
 | |
| )
 | |
| item(tt(sp) var(0))(
 | |
| for the spaces printed after matches to align the next column
 | |
| )
 | |
| item(tt(ec) var(none))(
 | |
| for the end code
 | |
| )
 | |
| enditem()
 | |
| 
 | |
| Apart from these strings, the var(name) may also be an asterisk
 | |
| (`tt(*)') followed by any string. The var(value) given for such a
 | |
| string will be used for all files whose name ends with the string.
 | |
| The var(name) may also be a equal sign (`tt(=)') followed by a
 | |
| pattern. The var(value) given for this pattern will be used for all
 | |
| matches (not only filenames) whose display string are matched by
 | |
| the pattern. Definitions for both of these take precedence over the
 | |
| values defined for file types and the form with the leading asterisk 
 | |
| takes precedence over the form with the leading equal sign.
 | |
| 
 | |
| The last form also allows to color separate parts of the displayed
 | |
| strings using different colors. For this, the pattern has to use the
 | |
| `tt((#b))' globbing flag and pairs of parentheses surrounding the
 | |
| parts of the strings that are to be colored differently. In this case 
 | |
| the var(value) may consist of more than one color code separated by
 | |
| equal signs. The first code will be used for all parts for which no
 | |
| explicit code is specified and the following codes will be used for
 | |
| the parts matched by the sub-patterns in parentheses. For example,
 | |
| the specification `tt(=(#b)(?)*(?)=0=3=7)' will be used for all
 | |
| matches which are at least two characters long and will make the use
 | |
| the code `tt(3)' for the first character, `tt(7)' for the last
 | |
| character and `tt(0)' for the rest.
 | |
| 
 | |
| All three forms of var(name) may be preceded by a pattern in
 | |
| parentheses. If such a pattern is given, the var(value) will be used
 | |
| only for matches in groups whose names are matched by the pattern
 | |
| given in the parentheses. E.g. `tt((g*)m*=43)' says to highlight all
 | |
| matches beginning with `tt(m)' in groups whose names  begin with
 | |
| `tt(g)' using the color code `tt(43)'. In case of the `tt(lc)',
 | |
| `tt(rc)', and `tt(ec)' codes, the group pattern is ignored.
 | |
| 
 | |
| Note also that all patterns are tried in the order in which they
 | |
| appear in the parameter value until the first one matches which is
 | |
| then used.
 | |
| 
 | |
| When printing a match, the code prints the value of tt(lc), the value
 | |
| for the file-type or the last matching specification with a `tt(*)',
 | |
| the value of tt(rc), the string to display for the match itself, and
 | |
| then the value of tt(ec) if that is defined or the values of tt(lc),
 | |
| tt(no), and tt(rc) if tt(ec) is not defined.
 | |
| 
 | |
| The default values are ISO 6429 (ANSI) compliant and can be used on
 | |
| vt100 compatible terminals such as tt(xterm)s. On monochrome terminals
 | |
| the default values will have no visual effect.
 | |
| 
 | |
| If the shell function based completion system is used, these
 | |
| parameters should not be set directly because the system controls them 
 | |
| itself. Instead, the tt(list-colors) style should be used (see
 | |
| ifzman(the section `Completion System Configuration' in zmanref(zshcompsys))\
 | |
| ifnzman(noderef(Completion System Configuration))\
 | |
| ).
 | |
| 
 | |
| subsect(Menu selection)
 | |
| cindex(completion, selecting by cursor)
 | |
| vindex(SELECTMIN)
 | |
| tindex(menu-select)
 | |
| The tt(zsh/complist) module also offers an alternative style of selecting
 | |
| matches from a list, called menu-selection, which can be used if the
 | |
| shell is set up to return to the last prompt after showing a
 | |
| completion list (see the tt(ALWAYS_LAST_PROMPT) option in
 | |
| ifzman(zmanref(zshoptions))\
 | |
| ifnzman(noderef(Options))\
 | |
| ). It can be invoked directly by
 | |
| the widget tt(menu-select) defined by the module.  Alternatively,
 | |
| the parameter tt(SELECTMIN) can be set to an integer, which give the
 | |
| minimum number of matches that must be present before menu selection is
 | |
| automatically turned on.  This second method requires that menu completion
 | |
| be started, either directly from a widget such as tt(menu-complete), or due
 | |
| to one of the options tt(MENU_COMPLETE) or tt(AUTO_MENU) being set.  If
 | |
| tt(SELECTMIN) is set, but is 0, 1 or empty, menu selection will always be
 | |
| started during an ambiguous menu completion.
 | |
| 
 | |
| When using the shell function based completion system, the
 | |
| tt(SELECTMIN) parameter should not be used (like the tt(ZLS_COLORS)
 | |
| and tt(ZLS_COLOURS) parameters described above). Instead, the tt(menu) 
 | |
| style should be used.
 | |
| 
 | |
| After menu-selection is started, the matches will be listed. The
 | |
| matches to insert into the command line can be selected from this
 | |
| list. In the list one match is highlighted using the value for tt(ma)
 | |
| from the tt(ZLS_COLORS) or tt(ZLS_COLOURS) parameter. The default
 | |
| value for this is `tt(7)' which forces the selected match to be
 | |
| highlighted using standout mode on a vt100-compatible terminal. If
 | |
| neither tt(ZLS_COLORS) nor tt(ZLS_COLOURS) is set, the same terminal
 | |
| control sequence as for the `tt(%S)' escape in prompts is used.
 | |
| 
 | |
| The completion code sometimes decides not to show all of the matches
 | |
| in the list. These hidden matches are either matches for which the
 | |
| completion function which added them explicitly requested that they
 | |
| not appear in the list (using the tt(-n) option of the tt(compadd)
 | |
| builtin command) or they are matches which duplicate a string already
 | |
| in the list (because they differ only in things like prefixes or
 | |
| suffixes that are not displayed). In the list used for menu-selection,
 | |
| however, even these matches are shown so that it is possible to select
 | |
| them. To highlight such matches the tt(hi) and tt(du) capabilities in
 | |
| the tt(ZLS_COLORS) and tt(ZLS_COLOURS) parameters are supported for
 | |
| hidden matches of the first and second kind, respectively.
 | |
| 
 | |
| Selecting matches is done by moving the mark around using the zle movement
 | |
| functions. The zle functions tt(send-break) and tt(accept-line) can be used
 | |
| to leave menu-selection, leaving the match currently inserted into the line
 | |
| in place.  In the case of tt(accept-line), the match currently inserted
 | |
| will be accepted and a new completion may be attempted.
 | |
| Using tt(send-break) leaves menu-selection and continues with normal
 | |
| menu-completion.  The functions tt(accept-and-hold) and
 | |
| tt(accept-and-menu-complete) can be used to accept the match currently
 | |
| inserted and continue inserting matches from the same list. The
 | |
| function tt(accept-and-infer-next-history) accepts the current match and
 | |
| then tries completion with menu-selection again.  In the case of
 | |
| files this allows one to select a directory and immediately attempt to
 | |
| complete files in it.  Matches inserted in one of these ways can be removed
 | |
| by invoking the tt(undo) function.  Keys bound to one of
 | |
| the completion functions will cycle to the next (or, in case of
 | |
| tt(reverse-menu-complete), the previous) match, and the tt(redisplay) and
 | |
| tt(clear-screen) functions work as usual without leaving
 | |
| menu-selection.
 | |
| 
 | |
| Any other zle function leaves menu-selection and executes that function.
 | |
| It is possible to make widgets in the above list do the same by using the
 | |
| form of the widget with a `tt(.)' in front.  For example, the widget
 | |
| `tt(.accept-line)' has the effect of leaving menu selection and accepting
 | |
| the entire command line.
 | |
| 
 | |
| During this selection the widget uses the keymap tt(menuselect). Any
 | |
| key that is not defined in this keymap or that is bound to
 | |
| tt(undefined-key) is looked up in the keymap currently selected. This
 | |
| is used to ensure that the most important keys used during selection
 | |
| have sensible default (namely the cursor keys, return, and TAB). However,
 | |
| keys in the the tt(menuselect) keymap can be modified directly using the
 | |
| tt(bindkey) builtin command (see
 | |
| ifzman(zmanref(zshmodules))\
 | |
| ifnzman(noderef(The zsh/zle Module))\
 | |
| ). For example, to make the return key leave menu-selection and
 | |
| continue with normal menu-completion one can call
 | |
| 
 | |
| indent(tt(bindkey -M menuselect '^M' send-break))
 | |
| 
 | |
| after loading the tt(zsh/complist) module.
 |