GRMLZSHRC
-July, 2011
+September, 2014
%!target: man
%!postproc(man): "^(\.TH.*) 1 " "\1 5 "
be found. The handler is defined by GRML_ZSH_CNF_HANDLER (see below).
: **GRML_DISPLAY_BATTERY**
-If set to a value greater than zero and //acpi// installed, //grmlzshrc// will
-put the battery status into the right hand side interactive prompt.
+If set to a value greater than zero, //grmlzshrc// will put the battery status
+into the right hand side interactive prompt. Supported OSes are //GNU/Linux//,
+//FreeBSD//, //OpenBSD// and //Darwin//.
: **GRML_ZSH_CNF_HANDLER**
This variable contains the handler to be used by COMMAND_NOT_FOUND (see above)
zshs inherit the dirstack of the zsh that most recently updated
**DIRSTACKFILE**.
+It is possible to apply a filter to the names of directories that will be
+committed to the persistent dirstack file. There are two ways to configure this
+filter: A general function based filter and a pattern based filter. Both are
+setup via styles in the **':grml:chpwd:dirstack'** context.
+
+To use a function based filter set the //filter// style for that context to the
+name of a function to call every time a directory name is to be added to the
+persistent dirstack. If the function's return value signals success (ie. return
+value "0"), the directory name is filtered out and **not** added to the
+persistent stack. Example:
+\
+```
+function my_dirstack_filter() { [[ $1 == /tmp(|/*) ]] }
+zstyle ':grml:chpwd:dirstack' filter my_dirstack_filter
+```
+
+The pattern based filter uses a list of patterns passed to the //exclude//
+style in the aforementioned context. Each pattern is tested and the first that
+matches will keep the directory name from being added to the persistent stack.
+If none of the patterns matches, the name is added. example:
+\
+```
+zstyle ':grml:chpwd:dirstack' exclude "/tmp(|/*)" "$HOME/tmp(|/*)"
+```
+
+The function based filter is more general, the pattern based filter easier to
+set up. If both filter variants are used at the same time, the function based
+filter will be executed //before// the pattern based one.
+
+If you would like to apply your filters while //loading// the persistent
+dirstack file, set the //filter-on-load// boolean style (the default is
+//false//):
+\
+```
+zstyle ':grml:chpwd:dirstack' filter-on-load true
+```
+
+Setting the //filter-on-load// needs to be done in ".zshrc.pre" because the
+style needs to be set when the main setup is executing! The other styles do not
+have this limitation, but the initial filtering will obviously be done using
+the filters that are configured **at** **that** **point**. The rule of thumb
+is: If you want to filter on load, setup everything in ".zshrc.pre" otherwise
+".zshrc.local" works just as well.
+
+
== DIRECTORY BASED PROFILES ==
If you need to perform certain actions each time you enter certain
: **PAGER**
Set less(1) as default pager, if not already set to something different.
-: **SHELL**
-Set explicitly to /bin/zsh, to prevent certain terminal emulators to
-default to /bin/sh or /bin/bash.
-
== OPTIONS ==
Apart from zsh's default options, //grmlzshrc// sets some options
screen and ssh.
: **bk()**
-Simple backup of a file or directory using cp(1). The target file name is the
-original name plus a time stamp attached. Symlinks and file attributes like mode,
-ownership and timestamps are preserved.
+Simple backup management of a file or directory using standard unix programs.
+The target file name is the original name plus a time stamp attached. Symlinks
+and file attributes like mode, ownership and timestamps are preserved.
: **cdrecord()**
If the original cdrecord is not installed, issues a warning to the user to
if command is a program.
: **checkhome()**
-Changes directory to $HOME on first invocation of zsh. This is neccessary on
-grml systems with autologin.
+Changes directory to $HOME on first invocation of zsh. This is necessary on
+Grml systems with autologin.
: **cl()**
Changes current directory to the one supplied by argument and lists the files
: **isdarwin()**
Returns true, if running on darwin, else false.
+: **isfreebsd()**
+Returns true, if running on FreeBSD, else false.
+
: **isgrml()**
Returns true, if running on a grml system, else false.
: **isgrmlsmall()**
Returns true, if run on grml-small, else false.
+: **islinux()**
+Returns true, if running on Linux, else false.
+
: **iso2utf()**
Changes every occurrence of the string iso885915 or ISO885915 in
environment variables to UTF-8.
+: **isopenbsd()**
+Returns true, if running on OpenBSD, else false.
+
: **isutfenv()**
Returns true, if run within an utf environment, else false.
```
: **profile()**
-Runs a command in $SHELL with profiling enabled (See startup variable
+Runs a command in zsh with profiling enabled (See startup variable
ZSH_PROFILE_RC above).
: **salias()**
: **j** (//jobs -l//)
Prints status of jobs in the current shell session in long format.
-: **l** (//ls -lF --color=auto//)
+: **l** (//ls -l --color=auto//)
Lists files in long output format with indicator for filetype appended
to filename. If the terminal supports it, with colored output.
: **llog** (//$PAGER /var/log/syslog//)
Opens syslog in pager.
-: **ls** (//ls -CF --color=auto//)
+: **ls** (//ls -C --color=auto//)
Lists directory, entries are listed by columns and an indicator for
file type is appended to each file name. Additionally the output is
colored, if the terminal supports it.
as configuration.
: **su** (//sudo su//)
-If user is running a grml live-CD, dont ask for any password, if she
+If user is running a Grml live system, don't ask for any password, if she
wants a root shell.
: **term2iso** (//echo 'Setting terminal to iso mode' ; print -n '\e%@'//)
% wget -O .zshrc http://git.grml.org/f/grml-etc-core/etc/zsh/zshrc
```
-If you would also like to get seperate function files (which you can put into
+If you would also like to get separate function files (which you can put into
your **$fpath**), you can browse and download them at:
http://git.grml.org/?p=grml-etc-core.git;a=tree;f=usr_share_grml/zsh;hb=HEAD