diff options
Diffstat (limited to 'Etc')
-rw-r--r-- | Etc/BUGS | 37 | ||||
-rw-r--r-- | Etc/ChangeLog-4.3 | 2 | ||||
-rw-r--r-- | Etc/FAQ.yo | 4 | ||||
-rw-r--r-- | Etc/completion-style-guide | 3 | ||||
-rw-r--r-- | Etc/zsh-development-guide | 79 |
5 files changed, 71 insertions, 54 deletions
@@ -2,40 +2,6 @@ KNOWN BUGS IN ZSH ----------------- -On some terminals, display of lines with exactly 80 characters is -problematic. zsh assumes that the terminal does not print an extra -newline in this case, but some terminals (e.g. aixterm) do. ------------------------------------------------------------------------- -When interrupting code like the following with ^C: - while true; do - sh -c '...' - done -if the `sh' is executing, zsh does not know that the sh received a ^C and -continues with the next iteration. This happens for any program which -handles the interrupt, then exits after tidying up; it does not happen for -zsh, which exits directly from the signal handler. The workaround is to -use ^Z which forks the shell and makes the loop a separate job, then kill -the suspended loop. ------------------------------------------------------------------------- -If you suspend "man", zle seems to get into cooked mode. It works ok -for plain "less". -It is not specific neither to man nor to zsh. -E.g. call the following program foo: -#include <sys/wait.h> -#include <unistd.h> - -int main(int argc, char *argv[]) -{ - int status; - - if (!fork()) /* child */ - execvp(argv[1], argv + 1); - else /* parent */ - wait(&status); -} -Then if you suspend -% foo less something -from zsh/bash, zle/readline gets into cooked mode. ------------------------------------------------------------------------ The pattern %?* matches names beginning with %? instead of names with at least two characters beginning with %. This is a hack to allow %?foo job @@ -46,3 +12,6 @@ the nonomatch and nullglob options. ------------------------------------------------------------------------ It is currently impossible to time builtins. ------------------------------------------------------------------------ +The comp* completion-related builtins (compadd, compset, etc) are run with +$_comp_options in effect, rather than the user's options. +------------------------------------------------------------------------ diff --git a/Etc/ChangeLog-4.3 b/Etc/ChangeLog-4.3 index 1be618b48..6d85e40af 100644 --- a/Etc/ChangeLog-4.3 +++ b/Etc/ChangeLog-4.3 @@ -1182,7 +1182,7 @@ 2011-08-16 Wayne Davison <wayned@users.sourceforge.net> - * 29650: Src/jobs.c: don't lose the the time info after a + * 29650: Src/jobs.c: don't lose the time info after a suspend+restore. 2011-08-15 Peter Stephenson <p.w.stephenson@ntlworld.com> diff --git a/Etc/FAQ.yo b/Etc/FAQ.yo index e71dd5310..bfd2ce868 100644 --- a/Etc/FAQ.yo +++ b/Etc/FAQ.yo @@ -58,7 +58,7 @@ mydit(Archive-Name:) unix-faq/shell/zsh mydit(Last-Modified:) 2015/05/31 mydit(Submitted-By:) email(coordinator@zsh.org (Peter Stephenson)) mydit(Posting-Frequency:) Monthly -mydit(Copyright:) (C) P.W. Stephenson, 1995--2015 (see end of document) +mydit(Copyright:) (C) P.W. Stephenson, 1995--2016 (see end of document) ) This document contains a list of frequently-asked (or otherwise @@ -306,7 +306,7 @@ sect(On what machines will it run?) sect(What's the latest version?) - Zsh 5.2 is the latest production version. For details of all the + Zsh 5.3 is the latest production version. For details of all the changes, see the NEWS file in the source distribution. A beta of the next version is sometimes available. Development of zsh is diff --git a/Etc/completion-style-guide b/Etc/completion-style-guide index b5de16f03..e91e92307 100644 --- a/Etc/completion-style-guide +++ b/Etc/completion-style-guide @@ -77,7 +77,8 @@ In most cases multiple versions (releases) of commands are not supported. The functions are merely updated to reflect the latest stable version. Exceptions to this can be made where are particular version continues to be commonly distributed. Where there is more than one variant -of the same command however, the separate variants should be supported. +of the same command however (e.g., the command takes different options +different platforms), the separate variants should be supported. Contexts, tags and all that --------------------------- diff --git a/Etc/zsh-development-guide b/Etc/zsh-development-guide index c4aa1b243..ecbd3c081 100644 --- a/Etc/zsh-development-guide +++ b/Etc/zsh-development-guide @@ -327,22 +327,23 @@ in. The next pair are `features_' and `enables_' and deal with enabling module features. Ensure you are familiar with the description of features under -`zmodload -F'. The function features_ takes an argument `char -***featuresp'; *featuresp is to be set to a NULL-terminated array -containing a list of all the features. It should then return zero. -It may return one to indicate features are not supported, but this is -not recommended. The function featuresarray conveniently interrogates -the module's feature structures for all standard features; space -is left for abstract features at the end of the array and the names -must be added by the module. Note that heap memory should -be used for this (zhalloc, etc.) as memory for the features array is not -freed; note also the pointers for the abstract features are not -initialised so setting them is mandatory any time there are any present. - -A structure "struct features" should -be used to contain all standard features as well as the number of -abstract features (those only understood by the module itself). -See below. +`zmodload -F'. + +The function features_ takes an argument `char ***featuresp'; *featuresp +is to be set to a NULL-terminated array containing a list of all the +features. It should then return zero. It may return one to indicate +features are not supported, but this is not recommended. The function +featuresarray conveniently interrogates the module's feature structures +for all standard features; space is left for abstract features at the end +of the array and the names must be added by the module. Note that heap +memory should be used for this (zhalloc, etc.) as memory for the features +array is not freed; note also the pointers for the abstract features are +not initialised so setting them is mandatory any time there are any +present. + +A structure "struct features" should be used to contain all standard +features as well as the number of abstract features (those only understood +by the module itself). See below. enables_ takes an argument `int **enablesp'. If *enablesp is NULL, it should be set to an array of the same length as *featuresp without the @@ -713,6 +714,24 @@ union looking like: The `type' field should be set to `MN_INTEGER' or `MN_FLOAT' and depending on its value either `u.l' or `u.d' contains the value. +Widgets +------- + +As of this writing, widgets are not managed by the features mechanism. +Modules can add builtin widgets by calling `addzlefunction' as defined +in Src/Zle/zle_thingy.c. Typically this is called from the `boot_' +routine. Any widgets so added should be removed by `deletezlefunction' +called from the `cleanup_' routine. + +Keymaps +------- +Keymaps are created with `newkeymap' and exposed for use with bindkey +by `linkkeymap', both defined in Src/Zle/zle_keymap.c. Typically the +same name is used both to create and link the keymap. As with widgets, +there is currently no features mechanism for keymaps, and they should +be initialized in the `boot_' function. In `cleanup_', first remove +linkage with `unlinkkeymap' and then discard with `deletehashtable'. + Hooks ----- @@ -791,6 +810,34 @@ that are changed or called very often. These functions, structure defining the hook instead of the name and otherwise behave like their counterparts. +The following hooks are defined by the standard set of modules and may be +referenced by other modules. Each has a corresponding macro name that +points into the definition structure, to avoid repeating the hook names +as strings. + + zsh/main + after_trap AFTERTRAPHOOK + before_trap BEFORETRAPHOOK + exit EXITHOOK + + zsh/complete + compctl_make * COMPCTLMAKEHOOK + compctl_cleanup * COMPCTLCLEANUPHOOK + insert_match INSERTMATCHHOOK + comp_list_matches * COMPLISTMATCHESHOOK + menu_start MENUSTARTHOOK + + zsh/zle + before_complete * BEFORECOMPHOOK + complete * COMPLETEHOOK + after_complete * AFTERCOMPHOOK + accept_completion * ACCEPTCOMPHOOK + list_matches * LISTMATCHESHOOK + invalidate_list * INVALIDATELISTHOOK + +Hooks marked with "*" do not use the HOOKF_ALL flag and so are replaced if +another module adds a function to the hook. Use with caution. + Wrappers -------- |