# command for process lists, the local web server details and host completion
zstyle ':completion:*:urls' local 'www' '/var/www/' 'public_html'
- # caching
- [[ -d $ZSHDIR/cache ]] && zstyle ':completion:*' use-cache yes && \
- zstyle ':completion::complete:*' cache-path $ZSHDIR/cache/
+ # Some functions, like _apt and _dpkg, are very slow. We can use a cache in
+ # order to speed things up
+ if [[ ${GRML_COMP_CACHING:-yes} == yes ]]; then
+ GRML_COMP_CACHE_DIR=${GRML_COMP_CACHE_DIR:-${ZDOTDIR:-$HOME}/.cache}
+ if [[ ! -d ${GRML_COMP_CACHE_DIR} ]]; then
+ command mkdir -p "${GRML_COMP_CACHE_DIR}"
+ fi
+ zstyle ':completion:*' use-cache yes
+ zstyle ':completion:*:complete:*' cache-path "${GRML_COMP_CACHE_DIR}"
+ fi
# host completion
if is42 ; then
# history
-ZSHDIR=${ZDOTDIR:-${HOME}/.zsh}
-
#v#
HISTFILE=${ZDOTDIR:-${HOME}}/.zsh_history
isgrmlcd && HISTSIZE=500 || HISTSIZE=5000
DIRSTACKSIZE=${DIRSTACKSIZE:-20}
DIRSTACKFILE=${DIRSTACKFILE:-${ZDOTDIR:-${HOME}}/.zdirs}
-typeset -gaU GRML_PERSISTENT_DIRSTACK
-function grml_dirstack_filter() {
- local -a exclude
- local filter entry
- if zstyle -s ':grml:chpwd:dirstack' filter filter; then
- $filter $1 && return 0
- fi
- if zstyle -a ':grml:chpwd:dirstack' exclude exclude; then
- for entry in "${exclude[@]}"; do
- [[ $1 == ${~entry} ]] && return 0
- done
- fi
- return 1
-}
-
-chpwd() {
- (( $DIRSTACKSIZE <= 0 )) && return
- [[ -z $DIRSTACKFILE ]] && return
- grml_dirstack_filter $PWD && return
- GRML_PERSISTENT_DIRSTACK=(
- $PWD "${(@)GRML_PERSISTENT_DIRSTACK[1,$DIRSTACKSIZE]}"
- )
- builtin print -l ${GRML_PERSISTENT_DIRSTACK} >! ${DIRSTACKFILE}
-}
+if zstyle -T ':grml:chpwd:dirstack' enable; then
+ typeset -gaU GRML_PERSISTENT_DIRSTACK
+ function grml_dirstack_filter() {
+ local -a exclude
+ local filter entry
+ if zstyle -s ':grml:chpwd:dirstack' filter filter; then
+ $filter $1 && return 0
+ fi
+ if zstyle -a ':grml:chpwd:dirstack' exclude exclude; then
+ for entry in "${exclude[@]}"; do
+ [[ $1 == ${~entry} ]] && return 0
+ done
+ fi
+ return 1
+ }
-if [[ -f ${DIRSTACKFILE} ]]; then
- # Enabling NULL_GLOB via (N) weeds out any non-existing
- # directories from the saved dir-stack file.
- dirstack=( ${(f)"$(< $DIRSTACKFILE)"}(N) )
- # "cd -" won't work after login by just setting $OLDPWD, so
- [[ -d $dirstack[1] ]] && cd -q $dirstack[1] && cd -q $OLDPWD
-fi
+ chpwd() {
+ (( $DIRSTACKSIZE <= 0 )) && return
+ [[ -z $DIRSTACKFILE ]] && return
+ grml_dirstack_filter $PWD && return
+ GRML_PERSISTENT_DIRSTACK=(
+ $PWD "${(@)GRML_PERSISTENT_DIRSTACK[1,$DIRSTACKSIZE]}"
+ )
+ builtin print -l ${GRML_PERSISTENT_DIRSTACK} >! ${DIRSTACKFILE}
+ }
-if zstyle -T ':grml:chpwd:dirstack' filter-on-load; then
- for i in "${dirstack[@]}"; do
- if ! grml_dirstack_filter "$i"; then
- GRML_PERSISTENT_DIRSTACK=(
- "${GRML_PERSISTENT_DIRSTACK[@]}"
- $i
- )
- fi
- done
-else
- GRML_PERSISTENT_DIRSTACK=( "${dirstack[@]}" )
+ if [[ -f ${DIRSTACKFILE} ]]; then
+ # Enabling NULL_GLOB via (N) weeds out any non-existing
+ # directories from the saved dir-stack file.
+ dirstack=( ${(f)"$(< $DIRSTACKFILE)"}(N) )
+ # "cd -" won't work after login by just setting $OLDPWD, so
+ [[ -d $dirstack[1] ]] && cd -q $dirstack[1] && cd -q $OLDPWD
+ fi
+
+ if zstyle -t ':grml:chpwd:dirstack' filter-on-load; then
+ for i in "${dirstack[@]}"; do
+ if ! grml_dirstack_filter "$i"; then
+ GRML_PERSISTENT_DIRSTACK=(
+ "${GRML_PERSISTENT_DIRSTACK[@]}"
+ $i
+ )
+ fi
+ done
+ else
+ GRML_PERSISTENT_DIRSTACK=( "${dirstack[@]}" )
+ fi
fi
# directory based profiles
if check_com -c screen ; then
if [[ $UID -eq 0 ]] ; then
if [[ -r /etc/grml/screenrc ]]; then
- alias screen="${commands[screen]} -c /etc/grml/screenrc"
+ alias screen='screen -c /etc/grml/screenrc'
fi
- elif [[ -r $HOME/.screenrc ]] ; then
- alias screen="${commands[screen]} -c $HOME/.screenrc"
- else
+ elif [[ ! -r $HOME/.screenrc ]] ; then
if [[ -r /etc/grml/screenrc_grml ]]; then
- alias screen="${commands[screen]} -c /etc/grml/screenrc_grml"
+ alias screen='screen -c /etc/grml/screenrc_grml'
else
if [[ -r /etc/grml/screenrc ]]; then
- alias screen="${commands[screen]} -c /etc/grml/screenrc"
+ alias screen='screen -c /etc/grml/screenrc'
fi
fi
fi