zmodload [ -dL ] [ -s ] [ ... ]
zmodload -F [ -alLme -P param ] module [ [+-]feature ... ]
zmodload -e [ -A ] [ ... ]
zmodload [ -a [ -bcpf [ -I ] ] ] [ -iL ] ...
zmodload -u [ -abcdpf [ -I ] ] [ -iL ] ...
zmodload -A [ -L ] [ modalias[=module] ... ]
zmodload -R modalias ...
       Performs operations relating to zsh's loadable modules.  Loading
       of modules while the shell is running (`dynamical  loading')  is
       not  available on all operating systems, or on all installations
       on a particular operating system, although the zmodload  command
       itself is always available and can be used to manipulate modules
       built into versions of the shell  executable  without  dynamical
       loading.

       Without  arguments the names of all currently loaded binary mod-
       ules are printed.  The -L option causes this list to be  in  the
       form  of  a  series  of zmodload commands.  Forms with arguments
       are:

       zmodload [ -is ] name ...
       zmodload -u [ -i ] name ...
              In the simplest case, zmodload  loads  a  binary  module.
              The  module  must  be in a file with a name consisting of
              the specified name followed by a standard suffix, usually
              `.so' (`.sl' on HPUX).  If the module to be loaded is al-
              ready loaded the duplicate module is ignored.   If  zmod-
              load  detects an inconsistency, such as an invalid module
              name or circular dependency list, the current code  block
              is  aborted.  If it is available, the module is loaded if
              necessary, while if it is not available, non-zero  status
              is silently returned.  The option -i is accepted for com-
              patibility but has no effect.

              The named module is searched for in the same way  a  com-
              mand  is,  using $module_path instead of $path.  However,
              the path search is performed even when  the  module  name
              contains  a  `/', which it usually does.  There is no way
              to prevent the path search.

              If the module supports  features  (see  below),  zmodload
              tries  to  enable all features when loading a module.  If
              the module was successfully loaded but not  all  features
              could be enabled, zmodload returns status 2.

              If  the  option  -s  is given, no error is printed if the
              module was not available (though other errors  indicating
              a  problem with the module are printed).  The return sta-
              tus indicates if the module was loaded.  This  is  appro-
              priate if the caller considers the module optional.

              With -u, zmodload unloads modules.  The same name must be
              given that was given when the module was loaded,  but  it
              is not necessary for the module to exist in the file sys-
              tem.  The -i option suppresses the error if the module is
              already unloaded (or was never loaded).

              Each  module has a boot and a cleanup function.  The mod-
              ule will not be loaded if its boot function fails.  Simi-
              larly  a module can only be unloaded if its cleanup func-
              tion runs successfully.

       zmodload -F [ -almLe -P param ] module [ [+-]feature ... ]
              zmodload -F allows more selective control over  the  fea-
              tures  provided  by  modules.  With no options apart from
              -F, the module named module is loaded, if it was not  al-
              ready  loaded, and the list of features is set to the re-
              quired state.  If no features are specified,  the  module
              is loaded, if it was not already loaded, but the state of
              features is unchanged.  Each feature may be preceded by a
              +  to  turn the feature on, or - to turn it off; the + is
              assumed if neither character is present.  Any feature not
              explicitly mentioned is left in its current state; if the
              module was not previously loaded this means any such fea-
              tures will remain disabled.  The return status is zero if
              all features were set, 1 if the module  failed  to  load,
              and  2  if some features could not be set (for example, a
              parameter couldn't be added because there was a different
              parameter of the same name) but the module was loaded.

              The  standard  features are builtins, conditions, parame-
              ters and math functions; these are indicated by the  pre-
              fix  `b:',  `c:'  (`C:' for an infix condition), `p:' and
              `f:', respectively, followed by the name that the  corre-
              sponding  feature  would have in the shell.  For example,
              `b:strftime'  indicates  a  builtin  named  strftime  and
              p:EPOCHSECONDS  indicates a parameter named EPOCHSECONDS.
              The module may provide other (`abstract') features of its
              own as indicated by its documentation; these have no pre-
              fix.

              With -l or  -L,  features  provided  by  the  module  are
              listed.   With -l alone, a list of features together with
              their states is shown, one feature  per  line.   With  -L
              alone,  a  zmodload  -F  command that would cause enabled
              features of the module to be turned on  is  shown.   With
              -lL,  a zmodload -F command that would cause all the fea-
              tures to be set to their current state is shown.  If  one
              of  these  combinations is given with the option -P param
              then the parameter param is set to an array of  features,
              either features together with their state or (if -L alone
              is given) enabled features.

              With the option -L the module name may be omitted; then a
              list  of  all  enabled features for all modules providing
              features is printed in the form of zmodload -F  commands.
              If  -l  is also given, the state of both enabled and dis-
              abled features is output in that form.

              A set of features may be provided together with -l or  -L
              and  a  module name; in that case only the state of those
              features is considered.  Each feature may be preceded  by
              +  or  -  but  the character has no effect.  If no set of
              features is provided, all features are considered.

              With -e, the command  first  tests  that  the  module  is
              loaded;  if it is not, status 1 is returned.  If the mod-
              ule is loaded, the list of features given as an  argument
              is  examined.  Any feature given with no prefix is simply
              tested to see if the  module  provides  it;  any  feature
              given  with  a  prefix + or - is tested to see if is pro-
              vided and in the given state.  If the tests on  all  fea-
              tures  in  the  list  succeed, status 0 is returned, else
              status 1.

              With -m, each entry in the  given  list  of  features  is
              taken as a pattern to be matched against the list of fea-
              tures provided by the module.  An initial + or - must  be
              given  explicitly.   This may not be combined with the -a
              option as autoloads must be specified explicitly.

              With -a, the given list of features  is  marked  for  au-
              toload  from  the  specified module, which may not yet be
              loaded.  An optional +  may  appear  before  the  feature
              name.   If  the  feature is prefixed with -, any existing
              autoload is removed.  The options -l and -L may  be  used
              to list autoloads.  Autoloading is specific to individual
              features; when the module is loaded  only  the  requested
              feature  is  enabled.  Autoload requests are preserved if
              the module is subsequently  unloaded  until  an  explicit
              `zmodload  -Fa  module -feature' is issued.  It is not an
              error to request an autoload for a feature  of  a  module
              that is already loaded.

              When  the  module  is  loaded  each  autoload  is checked
              against the features actually provided by the module;  if
              the  feature  is  not  provided  the  autoload request is
              deleted.  A warning message is output; if the  module  is
              being loaded to provide a different feature, and that au-
              toload is successful, there is no effect on the status of
              the  current command.  If the module is already loaded at
              the time when zmodload -Fa is run, an  error  message  is
              printed and status 1 returned.

              zmodload  -Fa  can be used with the -l, -L, -e and -P op-
              tions for listing and testing the existence of  autoload-
              able features.  In this case -l is ignored if -L is spec-
              ified.  zmodload -FaL with no module name lists autoloads
              for all modules.

              Note  that  only standard features as described above can
              be autoloaded; other features require the  module  to  be
              loaded before enabling.

       zmodload -d [ -L ] [ name ]
       zmodload -d name dep ...
       zmodload -ud name [ dep ... ]
              The -d option can be used to specify module dependencies.
              The modules named in the second and subsequent  arguments
              will be loaded before the module named in the first argu-
              ment.

              With -d and one argument, all dependencies for that  mod-
              ule are listed.  With -d and no arguments, all module de-
              pendencies are listed.  This listing is by default  in  a
              Makefile-like  format.  The -L option changes this format
              to a list of zmodload -d commands.

              If -d and -u are both used, dependencies are removed.  If
              only  one  argument  is  given, all dependencies for that
              module are removed.

       zmodload -ab [ -L ]
       zmodload -ab [ -i ] name [ builtin ... ]
       zmodload -ub [ -i ] builtin ...
              The -ab option defines autoloaded builtins.   It  defines
              the  specified  builtins.   When any of those builtins is
              called, the module specified in  the  first  argument  is
              loaded  and  all  its features are enabled (for selective
              control of features use `zmodload  -F  -a'  as  described
              above).   If  only  the name is given, one builtin is de-
              fined, with the same name as the module.   -i  suppresses
              the  error  if  the  builtin  is  already  defined or au-
              toloaded, but not if another builtin of the same name  is
              already defined.

              With  -ab  and  no arguments, all autoloaded builtins are
              listed, with the module  name  (if  different)  shown  in
              parentheses  after  the  builtin  name.   The  -L  option
              changes this format to a list of zmodload -a commands.

              If -b is used together with the  -u  option,  it  removes
              builtins  previously defined with -ab.  This is only pos-
              sible if the builtin is not yet  loaded.   -i  suppresses
              the error if the builtin is already removed (or never ex-
              isted).

              Autoload requests are retained if the  module  is  subse-
              quently unloaded until an explicit `zmodload -ub builtin'
              is issued.

       zmodload -ac [ -IL ]
       zmodload -ac [ -iI ] name [ cond ... ]
       zmodload -uc [ -iI ] cond ...
              The -ac option is used  to  define  autoloaded  condition
              codes.  The cond strings give the names of the conditions
              defined by the module. The optional -I option is used  to
              define  infix condition names. Without this option prefix
              condition names are defined.

              If given no condition names, all defined names are listed
              (as  a  series  of  zmodload commands if the -L option is
              given).

              The -uc option removes definitions for autoloaded  condi-
              tions.

       zmodload -ap [ -L ]
       zmodload -ap [ -i ] name [ parameter ... ]
       zmodload -up [ -i ] parameter ...
              The  -p  option  is like the -b and -c options, but makes
              zmodload work on autoloaded parameters instead.

       zmodload -af [ -L ]
       zmodload -af [ -i ] name [ function ... ]
       zmodload -uf [ -i ] function ...
              The -f option is like the -b, -p,  and  -c  options,  but
              makes zmodload work on autoloaded math functions instead.

       zmodload -a [ -L ]
       zmodload -a [ -i ] name [ builtin ... ]
       zmodload -ua [ -i ] builtin ...
              Equivalent to -ab and -ub.

       zmodload -e [ -A ] [ string ... ]
              The -e option without arguments lists all loaded modules;
              if the -A option is also  given,  module  aliases  corre-
              sponding  to loaded modules are also shown.  If arguments
              are provided, nothing is printed; the  return  status  is
              set  to  zero if all strings given as arguments are names
              of loaded modules and to one if at least on string is not
              the  name  of  a loaded module.  This can be used to test
              for the availability of things  implemented  by  modules.
              In  this case, any aliases are automatically resolved and
              the -A flag is not used.

       zmodload -A [ -L ] [ modalias[=module] ... ]
              For each argument, if both modalias and module are given,
              define modalias to be an alias for the module module.  If
              the module modalias is ever subsequently  requested,  ei-
              ther via a call to zmodload or implicitly, the shell will
              attempt to load module instead.  If module is not  given,
              show  the  definition  of  modalias.  If no arguments are
              given, list all defined module aliases.  When listing, if
              the  -L  flag  was  also  given, list the definition as a
              zmodload command to recreate the alias.

              The existence of aliases for modules is completely  inde-
              pendent  of  whether the name resolved is actually loaded
              as a module: while the alias exists, loading and  unload-
              ing  the  module under any alias has exactly the same ef-
              fect as using the resolved name, and does not affect  the
              connection  between the alias and the resolved name which
              can be removed either by zmodload -R or by redefining the
              alias.   Chains of aliases (i.e. where the first resolved
              name is itself an alias) are valid so long as  these  are
              not  circular.   As  the  aliases take the same format as
              module names, they may include path separators:  in  this
              case,  there  is  no requirement for any part of the path
              named to exist as the alias will be resolved first.   For
              example, `any/old/alias' is always a valid alias.

              Dependencies  added to aliased modules are actually added
              to the resolved module; these remain if the alias is  re-
              moved.   It is valid to create an alias whose name is one
              of the standard shell modules and  which  resolves  to  a
              different module.  However, if a module has dependencies,
              it will not be possible to use  the  module  name  as  an
              alias  as the module will already be marked as a loadable
              module in its own right.

              Apart from the above, aliases can be used in the zmodload
              command  anywhere  module  names  are required.  However,
              aliases will not be shown in lists of loaded modules with
              a bare `zmodload'.

       zmodload -R modalias ...
              For each modalias argument that was previously defined as
              a module alias via zmodload -A, delete the alias.  If any
              was  not defined, an error is caused and the remainder of
              the line is ignored.

       Note that zsh makes no distinction  between  modules  that  were
       linked  into  the shell and modules that are loaded dynamically.
       In both cases this builtin command has to be used to make avail-
       able  the  builtins  and other things defined by modules (unless
       the module is autoloaded on these  definitions).  This  is  true
       even for systems that don't support dynamic loading of modules.
