=pod
=head1 Common configuration options for Zoidberg
All configuration is divided between three hashes
in Zoidberg.pm, each having their own file to save to.
By default these files are found in F<~/.zoid/> .
=over 4
=item B<{core}>
This hash stores config variables that are of immidiated
influence on the Zoidberg parent object.
It is default saved to F<core.pd> .
in this hash there are:
C<{core}{init_objects}> Plugins to be loaded at initialisation.
Entries of the form C<$zoidname =E<gt> [$class, [@args], $code]>, where
$zoidname is arbitrary*, $class is the perl class, @ars are init args if plugin
uses base class Zoidberg::Fish, else it are constructor args, and $code is post_init
evalled (for non-standard initialisations).
*) Some zoidnames like I<Buffer>, I<Prompt>, I<History>, I<Intel> and I<Commands> are reserved.
These should on runtime be defined in C<{core}{core_objects}> and are provided with stub replacements.
C<{core}{show_naked_zoid}> Don't shield parent object, used for debugging or serious hacking only.
C<{core}{cache_time}> Time items (for example dir contents) are kept in cache. Tune this one for the
right balance between speed and memory size.
C<{core}{no_regex}> Do not use regex at all in expansion - this results in using (some kind of) globbing instead.
C<{core}{strict_regex}> Do not use globbing at all in expansion - everything must be pure regex.
If both of the above expansion options are false this results in a kind of non-strict regex. This means
that for example a '*' will sometimes be interpreted as a glob and sometimes as regex, this mode is also
known as the "type less chars" modus.
I<For now it is adviced to use strict regex when handling sensitive data -- this is the only way to be sure of the result.>
=item B<{config}>
This hash contains config trees for the plugins which use
the Zoidberg::Fish base class. It is default saved to F<profile.pd> .
The key to store a config should be the same as the zoidname of
the plugin. In theory each plugin uses a ref to this hash so
after deleting the object the config remains for later use.
=item B<{grammar}>
In this hash houses some black magick. It contains all kinds
of regexes and code strings used by diverse parsers throughout
Zoidberg. If you want to changes the meaning of "&&" or
would like to implement a new context, this is the place to look.
It is by default stored in F<grammar.pd> .
Most important parts are:
C<{grammar}{context}> Defines non-built-in contexts
C<{grammar}{script_gram}> Used to parse logic blocks.
C<{grammar}{pipe_gram}> Used to parse pipes and redirections.
C<{grammar}{space_gram}> Used to parse "shell-style" command options.
C<{grammar}{syntax}> Defines grammars for the syntax highlighting per context.
=back
=cut