Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Rewrite of compsys.yo
- X-seq: zsh-workers 18450
- From: Oliver Kiddle <okiddle@xxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxx (Zsh hackers list)
- Subject: Re: Rewrite of compsys.yo
- Date: Fri, 18 Apr 2003 15:17:00 +0200
- In-reply-to: <8773.1050344144@xxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <8773.1050344144@xxxxxxx>
On 14 Apr, Peter wrote:
> I have spent hours and hours rewriting Doc/Zsh/compsys.yo; unfortunately
I have now read through your changes and have a few comments. There is
also a patch below for some things which I have fixed myself. I worked
out the point of $compcontext so have added a bit about that and used
it to make zcalc complete in math context.
I'm not sure the warning added at the end of the old-matches style
description is necessary. If anyone tries to use it and _all_matches
with their main list of completers, they'll soon see the problem. The
style is mainly useful where _all_matches is used as a separate
(_generic based) widget.
For _arguments, there seems to now be no documentation for the option
descriptions that appear in square brackets.
Your description of _argument's return code is also dodgy. This I have
corrected but you may be able to improve my wording. Entering a state
does not imply a non zero return code (consider:
_arguments '-a[a]::val:->val' '*:other:(one two)' after -a
The old documentation also seemed to be implying that setting $context,
$line and $opt_args was dependant on using -R.
> Since nothing serious has cropped up I hope to finish this and release
> 4.1.1 soon after my return. (I realise this is not the traditional way
> round.)
It depends on what you regard as serious but the patch for compiling on
recent Cygwin has not, I think gone in but I don't have access to
cygwin to test. The _arguments seg fault might rate as serious. Also,
someone has recently posted about a bug with pwd and metafy() to the
sourceforge tracker which probably needs looking at.
Oliver
Index: Doc/Zsh/compsys.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/compsys.yo,v
retrieving revision 1.165
diff -u -r1.165 compsys.yo
--- Doc/Zsh/compsys.yo 14 Apr 2003 18:10:39 -0000 1.165
+++ Doc/Zsh/compsys.yo 18 Apr 2003 13:02:54 -0000
@@ -177,7 +177,7 @@
If the tt(#compdef) line contains one of the options tt(-p) or tt(-P),
the words following are taken to be patterns. The function will be
-called when completion is attempt for a command or context that matches
+called when completion is attempted for a command or context that matches
one of the patterns. The options tt(-p) and tt(-P) are used to specify
patterns to be tried before or after other completions respectively.
Hence tt(-P) may be used to specify default actions.
@@ -206,7 +206,7 @@
)
item(tt(#compdef -K) var(widget-name) var(style) var(key-sequences) ...)(
This is similar to tt(-k) except that only one var(key-sequences)
-argument may be given for each var(widget-name) var(style) parir.
+argument may be given for each var(widget-name) var(style) pair.
However, the entire set of three arguments may be repeated with a
different set of arguments. Note in particular that the
var(widget-name) must be distinct in each set. If it does not begin with
@@ -263,7 +263,7 @@
)
kindex(-command-, completion context)
item(tt(-command-))(
-A word In command position
+A word in command position
)
kindex(-condition-, completion context)
item(tt(-condition-))(
@@ -317,13 +317,13 @@
Default implementations are supplied for each of these
contexts. In most cases the context tt(-)var(context)tt(-) is
-implemented by the function tt(_)var(context), for example the context
-`tt(-tilde-)' and the function `tt(_tilde)').
+implemented by a corresponding function tt(_)var(context), for example
+the context `tt(-tilde-)' and the function `tt(_tilde)').
The contexts tt(-redirect-) and tt(-value-) allow extra context-specific
information. (Internally, this is handled by the functions for each
context calling the function tt(_dispatch).) The extra
-information is added separate by commas.
+information is added separated by commas.
For the tt(-redirect-) context, the extra information is in the form
`tt(-redirect-,)var(op)tt(,)var(command)', where var(op) is the
@@ -334,7 +334,7 @@
For the tt(-value-) context, the form is
`tt(-value-,)var(name)tt(,)var(command)', where var(name) is the name of
the parameter. In the case of elements of an associative array, for
-example `tt(assoc=LPAR()key <TAB>)', var(name) is eexpanded to
+example `tt(assoc=LPAR()key <TAB>)', var(name) is expanded to
`var(name)tt(-)var(key)'. In certain special contexts, such as
completing after `tt(make CFLAGS=)', the var(command) part gives the
name of the command, here tt(make); otherwise it is empty.
@@ -530,7 +530,7 @@
example(tt(:completion::complete:dvips:option-o-1:files))
-says that normal completion was attempted as the first arguement to the
+says that normal completion was attempted as the first argument to the
option tt(-o) of the command tt(dvips):
example(tt(dvips -o ...))
@@ -544,7 +544,7 @@
Usually completion will be tried by all possible tags in an order given
by the completion function. However, this can be altered by using the
-tt(tag-order) style. Completion is then limited to the list of given
+tt(tag-order) style. Completion is then restricted to the list of given
tags in the given order.
The tt(_complete_help) bindable command shows all the contexts and tags
@@ -610,7 +610,7 @@
uses the value `tt(_complete)' for the tt(completer) style in most
contexts, but the value `tt(_complete _approximate)' when the first word
-on the command line is `tt(cvs)'. This is probably more conviently done
+on the command line is `tt(cvs)'. This is probably more conveniently done
by specifying the style for two different contexts. This form can be
slow and should be avoided for commonly examined styles such
as tt(menu) and tt(list-rows-first).
@@ -1104,13 +1104,12 @@
)
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 such a way as to
-generate all possible targets. The default value of this style is `false'
-since 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 passed to tt(make).
+This style is used in the function for commands such as tt(make) and
+tt(ant) where calling the command directly to generate matches suffers
+problems such as being slow or, as in the case of tt(make) can
+potentially causes actions in the makefile to be executed. If it is set
+to `true' the command is called to generate matches. The default value
+of this style is `false'.
)
kindex(command, completion style)
item(tt(command))(
@@ -1232,13 +1231,13 @@
kindex(fake, completion style)
item(tt(fake))(
This style may be set for any completion context. It
-specifies additional strings that may always be completed in that
+specifies additional strings that will always be completed in that
context. The form of each string is `var(value)tt(:)var(description)';
the colon and description may be omitted, but any literal colons in
var(value) must be quoted with a backslash. Any var(description)
provided is shown alongside the value in completion listings.
-It is important to use a sufficiently restricted context when specifying
+It is important to use a sufficiently restrictive context when specifying
fake strings. Note that the styles tt(fake-files) and tt(fake-parameters)
provide additional features when completing files or parameters.
)
@@ -1282,7 +1281,7 @@
such specifications separated by spaces.
The var(pattern) is a pattern that is to be used to generate filenames.
-Any occurence of the sequence `tt(%p)' is replaced by any pattern(s)
+Any occurrence of the sequence `tt(%p)' is replaced by any pattern(s)
passed by the function calling tt(_files). 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
@@ -1436,8 +1435,8 @@
)
kindex(group-order, completion style)
item(tt(group-order))(
-This style is additional the tt(group-name) style to put the groups
-defined by that style into order for display (compare tt(tag-order),
+This style is additional to the tt(group-name) style to specify the
+order for display of the groups defined by that style (compare tt(tag-order),
which determines which completions appear at all). The groups named
are shown in the given order; any other groups
are shown in the order defined by the completion function.
@@ -1535,7 +1534,7 @@
enditem()
Excluded values act in a similar fashion to values of the
-tt(ignored-patterns) style, so they can be restored to consideratoin by
+tt(ignored-patterns) style, so they can be restored to consideration by
the tt(_ignored) completer.
)
kindex(ignored-patterns, completion style)
@@ -1567,10 +1566,10 @@
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)'
+If the value of the style is `tt(single)',
the shell will wait until the user has typed enough to make the command
unique before converting the name to an ID; attempts at completion will
-be unsuccessul until that point. If the value is any other
+be unsuccessful until that point. 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 to the corresponding IDs.
)
@@ -1597,9 +1596,9 @@
kindex(insert-unambiguous, completion style)
item(tt(insert-unambiguous))(
This is used by the tt(_match) and tt(_approximate) completers.
-These styles are often used with menu completion since the word typed
+These completers are often used with menu completion since the word typed
may bear little resemblance to the final completion.
-However, if this the style is `true', the completer will start menu
+However, if this style is `true', the completer will start menu
completion only if it could find no unambiguous initial string at
least as long as the original string typed by the user.
@@ -1666,7 +1665,7 @@
withe the `tt((group))' syntax allowed by the tt(ZLS_COLORS) and
tt(ZLS_COLOURS) parameters and simply using the tt(default) tag.
-It is possible to use any color specifications alrady set up for the GNU
+It is possible to use any color specifications already set up for the GNU
version of the tt(ls) command:
example(zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS})
@@ -1781,8 +1780,8 @@
)
kindex(matcher-list, completion style)
item(tt(matcher-list))(
-This style is a list of match specifications that are valid everywhere.
-Match specifications are described in
+This style can be set to a list of match specifications that are to
+be applied everywhere. Match specifications are described in
ifzman(the section `Matching Control' in zmanref(zshcompwid))\
ifnzman(noderef(Matching Control))\
.
@@ -1829,7 +1828,7 @@
Where multiple specifications are useful, note that the em(entire)
completion is done for each element of tt(matcher-list), which can
-quickly reduce the shell's performance. As a rough rule of thum,
+quickly reduce the shell's performance. As a rough rule of thumb,
one to three strings will give acceptable performance. On the other
hand, putting multiple space-separated values into the same string does
not have an appreciable impact on performance.
@@ -1892,9 +1891,9 @@
In 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)'),
-menu completion will be turned on if there at least var(num) matches.
+menu completion will be turned on if there are at least var(num) matches.
In the form `tt(yes=long)', menu completion will be turned on
-if the list does not fit onto the screen. This does not activate menu
+if the list does not fit on the screen. This does not activate menu
completion if the widget normally only lists completions, but menu
completion can be activated in that case with the value `tt(yes=long-list)'
(Typically, the value `tt(select=long-list)' described later is more
@@ -1905,9 +1904,9 @@
The value of this widget also controls menu selection, as implemented by
the tt(zsh/complist) module. The following values may appear either
-alongside or instead of the values bbavoe.
+alongside or instead of the values above.
-If the value contains the string `tt(select)', menu selection (as
+If the value contains the string `tt(select)', menu selection
will be started unconditionally.
In the form `tt(select=)var(num)', menu selection will only be started if
@@ -1923,7 +1922,7 @@
only performs listing, use the value `tt(select=long-list)'.
To turn on menu completion or menu selection when a there are a certain
-number of matches em(or) the list of matches does not fit onto the
+number of matches em(or) the list of matches does not fit on the
screen, both of `tt(yes=)' and `tt(select=)' may be given twice, once
with a number and once with `tt(long)' or `tt(long-list)'.
@@ -1983,7 +1982,7 @@
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. This is selected by one of
-the `true' values or to the string `tt(only)'. If
+the `true' values or by the string `tt(only)'. If
the value is `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.
@@ -2048,7 +2047,7 @@
)
kindex(ports, completion style)
item(tt(ports))(
-A a list of Internet service names (network ports) to complete. If this is
+A list of Internet service names (network ports) to complete. If this is
not set, service names are taken from the file `tt(/etc/services)'.
)
kindex(prefix-hidden, completion style)
@@ -2146,6 +2145,9 @@
added separately using tag names of the form `tt(manual.)var(X)',
where var(X) is the section number. When the tt(group-name) style is
also in effect, pages from different sections will appear separately.
+This style is also used similarly with the tt(words) style when
+completing words for the dict command. It allows words from different
+dictionary databases to be added separately.
The default for this style is `false'.
)
kindex(single-ignored, completion style)
@@ -2355,7 +2357,7 @@
example:
example(zstyle -e '*:-command-:*' tag-order '
- if [[ -n $PREFIX ]]; then
+ if [[ -n $PREFIX$SUFFIX ]]; then
reply=( )
else
reply=( - )
@@ -2626,13 +2628,15 @@
mentioned above as possible arguments to the tt(#compdef) tag.
Before trying to find a function for a specific context, tt(_complete)
-checks if the parameter `tt(compcontext)' is set. If it is set to an
-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
+checks if the parameter `tt(compcontext)' is set. Setting
+`tt(compcontext)' allows the usual completion dispatching to be
+overridden which is useful in places such as a function that uses
+tt(vared) for input. 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) indicates what should be completed in one of the forms
@@ -3077,7 +3081,7 @@
different name for the argument context field.
)
findex(_arguments)
-item(tt(_arguments) [ tt(-ACS) ] [ tt(-O) var(name) ] [ tt(-M) var(matchspec) ] [ tt(:) ] var(spec) ...)(
+item(tt(_arguments) [ tt(-swWACRS) ] [ tt(-O) var(name) ] [ tt(-M) var(matchspec) ] [ tt(:) ] var(spec) ...)(
This function can be used to give a complete specification for
completion for a command whose arguments follow standard UNIX option and
argument conventions. The following forms specify individual sets of
@@ -3088,7 +3092,7 @@
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) indiciates what can
+printed above the matches generated and the var(action) indicates what can
be completed in this position (see below). If there are two colons
before the var(message) the argument is optional. If the
var(message) contains only white space, nothing will be printed above
@@ -3241,8 +3245,9 @@
must be preceded by a backslash, `tt(\:)'.
Each of the forms above may be preceded by a list in parentheses
-of option names and argument numbers. If the given option is completed,
-the options and arguments indicated will not be offered. For example,
+of option names and argument numbers. If the given option is on
+the command line, the options and arguments indicated in parentheses
+will not be offered. For example,
`tt((-two -three 1)-one:...)' completes the option `tt(-one)'; if this
appears on the command line, the options tt(-two) and tt(-three) and the
first ordinary argument will not be completed after it.
@@ -3296,7 +3301,7 @@
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 is set in the context with the tt(values) tag.
+tt(description) style is set with the tt(values) tag in the context.
)
item(tt(->)var(string))(
vindex(context, use of)
@@ -3308,20 +3313,22 @@
for generating completions. For example, functions that implement a state
machine can use this type of action.
-If tt(_arguments) handles the completion by itself, it returns status
-zero. Otherwise, it returns a non-zero status; if this was because it
-encountered a `tt(->)var(string)' action, it will strip all leading and
-trailing whitespace from var(string) and set the array tt(state) to the set
-of all var(strings)s for which the action is to be performed. Hence
-tt($state) must be tested to determine whether actions need to be handled.
-
-If the tt(-R) option is given to tt(_arguments), the function will instead
-return a status of 300 to indicate that tt($state) is valid. In this case
-it also sets the global parameters `tt(context)', `tt(line)' and
-`tt(opt_args)' as described below, and does not reset any changes made to
-the special parameters such as tt(PREFIX) and tt(words). This gives the
-calling function the choice of resetting these parameters or propagating
-changes in them.
+Where tt(_arguments) encounters a `tt(->)var(string)', it will strip
+all leading and trailing whitespace from var(string) and set the array
+tt(state) to the set of all var(strings)s for which an action is to be
+performed.
+
+By default and in common with all other well behaved completion
+functions, _arguments returns zero if it was able to add matches and
+non-zero otherwise. However, if the tt(-R) option is given,
+tt(_arguments) will instead return a status of 300 to indicate that
+tt($state) is to be handled.
+
+In addition to tt($state), tt(_arguments) also sets the global
+parameters `tt(context)', `tt(line)' and `tt(opt_args)' as described
+below, and does not reset any changes made to the special parameters
+such as tt(PREFIX) and tt(words). This gives the calling function the
+choice of resetting these parameters or propagating changes in them.
A function calling tt(_arguments) with at least
one action containing a `tt(->)var(string)' therefore must declare
@@ -3473,12 +3480,16 @@
The option tt(-C) tells tt(_arguments) to modify
the tt(curcontext) parameter for an action of the form
`tt(->)var(state)'. This is the standard parameter used to keep track of
-the current context. Here it should be made local to the calling function
+the current context. Here it (and not the tt(context) array) should be
+made local to the calling function
to avoid passing back the modified value and should be initialised to the
current value at the start of the function:
example(local curcontext="$curcontext")
+This is useful where it is not possible for multiple states to be valid
+together.
+
The option `tt(--)' allows tt(_arguments) to work out the names of long
options that support the `tt(-)tt(-help)' option which is standard in many
GNU commands. The command word is called with the argument
@@ -3655,7 +3666,7 @@
)
findex(_describe)
item(tt(_describe) [ tt(-o) | tt(-t) var(tag) ] var(descr) var(name1) [ var(name2) ] var(opts) ... tt(-)tt(-) ...)(
-This option associates completions with descriptions.
+This function associates completions with descriptions.
Multiple groups separated by tt(-)tt(-) can be supplied, potentially with
different completion options var(opts).
Index: Functions/Misc/zcalc
===================================================================
RCS file: /cvsroot/zsh/zsh/Functions/Misc/zcalc,v
retrieving revision 1.8
diff -u -r1.8 zcalc
--- Functions/Misc/zcalc 9 Jan 2002 11:58:05 -0000 1.8
+++ Functions/Misc/zcalc 18 Apr 2003 13:02:54 -0000
@@ -106,6 +106,7 @@
trap zcalc_restore HUP INT QUIT EXIT
local line ans base defbase forms match mbegin mend psvar optlist opt arg
+local compcontext="-math-"
integer num outdigits outform=1
forms=( '%2$g' '%.*g' '%.*f' '%.*E' )
Messages sorted by:
Reverse Date,
Date,
Thread,
Author