mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-11-01 06:20:55 +01:00
18866: document conventions used in completion functions
This commit is contained in:
parent
307812f4ce
commit
639272fb27
2 changed files with 71 additions and 1 deletions
|
|
@ -1,5 +1,8 @@
|
|||
2003-07-17 Oliver Kiddle <opk@zsh.org>
|
||||
|
||||
* 18866: Etc/completion-style-guide: document conventions used
|
||||
in completion functions
|
||||
|
||||
* unposted: Completion/Unix/Command/_aap: adjust return code
|
||||
in the same way as was done for old completions in 18631
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,70 @@
|
|||
Conventions
|
||||
-----------
|
||||
|
||||
There are a number of conventions related to writing completion
|
||||
functions and it is useful if they are followed for functions which are
|
||||
to be distributed as part of zsh to maintain a level of consistency.
|
||||
|
||||
Coding style:
|
||||
|
||||
* Use two spaces for indentation and four for continuation lines except
|
||||
where there are many continutation lines such as `_arguments' or
|
||||
`_values' specs. Lines tend to be longer than in C code so less
|
||||
indentation makes sense.
|
||||
|
||||
* For constructs such as `if' and `while', the `then' or `do' should be
|
||||
on the end of the line after a semi-colon and space unless there
|
||||
isn't room for it (see the next point) in which case put it on the
|
||||
next line un-indented.
|
||||
|
||||
* Please try not to use lines longer than 79 characters.
|
||||
|
||||
Descriptions:
|
||||
|
||||
Descriptions should not have a trailing full stop and initial capital
|
||||
letter. Though capitals are fine where you have an acronym which
|
||||
generally appears in uppercase.
|
||||
|
||||
It is a good idea to copy descriptions from the command's man page or
|
||||
--help output. If you do this, be careful that the description still
|
||||
makes sense. Some commands have a description like `print help message
|
||||
(this one) and exit' for --help but the `(this one)' part no longer
|
||||
makes sense. A less obvious example is where the help output looks like:
|
||||
-X, --encoding=NAME use input encoding NAME
|
||||
copying this description exactly would result in completion output that
|
||||
looks like this:
|
||||
--encoding -X -- use input encoding NAME
|
||||
In the help output, it is much clearer what is meant by `NAME' because
|
||||
it appears after `--encoding=' but it doesn't in the completion
|
||||
listing. So it is better to use a description of this form:
|
||||
--encoding -X -- use specified input encoding
|
||||
The word specify is commonly used with options that take arguments.
|
||||
|
||||
Another example of where --help output may not be suitable unedited is
|
||||
where default values or units are indicated. Do not put them in
|
||||
per-match descriptions; they are better placed in the group
|
||||
descriptions. Put the units in parentheses after the description. So
|
||||
for example, do not use:
|
||||
'--timeout[specifiy connection timeout in milliseconds]:timeout'
|
||||
but use:
|
||||
'--timeout[specify connection timeout]:timeout (ms)'
|
||||
|
||||
In a function, allow any descriptions passed as an argument to override
|
||||
the default you define. For example:
|
||||
_wanted directories expl directory _files -/ "$@" -
|
||||
The "$@" adds descriptions passed as parameters and the trailing `-'
|
||||
tells _wanted where to put options specifying the `directory' description.
|
||||
|
||||
Where two matches have identical meaning, give them the same
|
||||
description so that the completion system can group them together.
|
||||
Conventionally a brace exapansion of this form is used:
|
||||
'(--context,-C)'{--context=,-C-}'[specify lines of context]:lines'
|
||||
You won't need the exclusion list if the option can be specified
|
||||
multiple times. It can also be useful to use the same description for
|
||||
matches which are completely opposite in their meaning if it shortens
|
||||
the completion listing provided that the names of the matches makes it
|
||||
clear what their effect is.
|
||||
|
||||
Contexts, tags and all that
|
||||
---------------------------
|
||||
|
||||
|
|
@ -410,4 +477,4 @@ Misc. remarks
|
|||
with its exit status. After this call to `call_function' the
|
||||
completion function would contain the code for the default way to
|
||||
generate the matches.
|
||||
See the `_rpm' and `_nslookup' files for examples.
|
||||
See the `_email_addresses', `_rpm' and `_nslookup' files for examples.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue