GRMLZSHRC
-July, 2011
+September, 2014
%!target: man
%!postproc(man): "^(\.TH.*) 1 " "\1 5 "
Some of the behaviour of //grmlzshrc// can be altered by setting certain shell
variables. These may be set temporarily when starting zsh like this:
\
-``` % BATTERY=1 zsh
+``` % GRML_DISPLAY_BATTERY=1 zsh
Or by setting them permanently in **zshrc.pre** (See AUXILIARY FILES below).
: **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.
+Deprecated. Use **GRML_DISPLAY_BATTERY** instead.
: **COMMAND_NOT_FOUND**
A non zero value activates a handler, which is called when a command can not
be found. The handler is defined by GRML_ZSH_CNF_HANDLER (see below).
+: **GRML_COMP_CACHING**
+If set to //yes// (the default), the setup will enable zsh's completion caching
+mechanism, with the caching data being placed into //$GRML_COMP_CACHE_DIR//.
+
+: **GRML_COMP_CACHE_DIR**
+This defines where zsh's completion caching data will be placed, if
+//$GRML_COMP_CACHING// is active. The default is //${ZDOTDIR:-$HOME}/.cache//.
+The setup will ensure the directory exists before attempting to use it.
+
+: **GRML_DISPLAY_BATTERY**
+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)
and defaults to "/usr/share/command-not-found/command-not-found".
A non zero value causes shell functions to be profiled. The results can be
obtained with the zprof builtin command (see zshmodules(1) for details).
+: **COMPDUMPFILE**
+Specifies the location of the completion dump file. Default: $HOME/.zcompdump.
+
= FEATURE DESCRIPTION =
This is an in depth description of non-standard features implemented by
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
PS1='%~ %# '
```
+You also add your own tokens by using the \`grml_theme_add_token()' function.
+Call the function without arguments for detailed documentation about that
+procedure.
== GNU/SCREEN STATUS SETTING ==
//grmlzshrc// sets screen's hardstatus lines to the currently running command
: **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
last N days. N is an integer to be passed as first and only argument.
If no argument is specified N is set to 1.
-: **allulimit()**
-Sets all ulimit values to "unlimited".
-
: **any()**
Lists processes matching given pattern.
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
: **freload()**
Reloads an autoloadable shell function (See autoload in zshbuiltins(1)).
+: **grml_vcs_info_toggle_colour()**
+Toggles between coloured and uncoloured formats in vcs_info configuration.
+This is useful with prompts that break if colour codes are in vcs_info
+format expansions (like the `clint' prompt and every other prompt that
+uses %v to expand the contents of `$vcs_into_msg_0_'). If you are using
+customised vcs_info formats, you shouldn't be using this function, since
+it will set all formats to grml's default values (either coloured or plain)
+again.
+
: **hgdi()**
Use GNU diff with options -ubwd for mercurial.
: **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 -b -CF --color=auto//)
-Lists directory printing octal escapes for nongraphic characters.
-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.
+: **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.
: **lsa** (//ls -a .*(.)//)
Lists dot files in current working directory.
: **rmcdir** (//'cd ..; rmdir $OLDPWD || cd $OLDPWD//)
rmdir current working directory
-: **screen** (///usr/bin/screen -c ${HOME}/.screenrc//)
+: **screen** (//screen -c file//)
If invoking user is root, starts screen session with /etc/grml/screenrc
-as config file. If invoked by a regular user, start a screen session
-with users .screenrc config if it exists, else use /etc/grml/screenrc_grml
-as configuration.
+as config file. If invoked by a regular user and users .screenc does not exist,
+starts screen with /etc/grml/screenrc_grml config if it exists, else fallbacks
+to /etc/grml/screenrc.
: **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%@'//)
\
```
# show battery status in RPROMPT
-BATTERY=1
+GRML_DISPLAY_BATTERY=1
# always load the complete setup, even for root
GRML_ALWAYS_LOAD_ALL=1
```
% 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