# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
# Bug-Reports: see http://grml.org/bugs/
# License: This file is licensed under the GPL v2.
-# Latest change: Mon Feb 11 18:00:55 CET 2008 [mika]
+# Latest change: Sam Mai 17 22:52:34 CEST 2008 [mika]
################################################################################
# This file is sourced only for interactive shells. It
# should contain commands to set up aliases, functions,
return 0
}
+# a "print -l ${(u)foo}"-workaround for pre-4.2.0 shells
+# usage: uprint foo
+# Where foo is the *name* of the parameter you want printed.
+# Note that foo is no typo; $foo would be wrong here!
+if ! is42 ; then
+ uprint () {
+ local -a u
+ local w
+ local parameter=${1}
+
+ if [[ -z ${parameter} ]] ; then
+ printf 'usage: uprint <parameter>\n'
+ return 1
+ fi
+
+ for w in ${(P)parameter} ; do
+ [[ -z ${(M)u:#${w}} ]] && u=( ${u} ${w} )
+ done
+
+ builtin print -l ${u}
+ }
+fi
+
# Check if we can read given files and source those we can.
xsource() {
if (( ${#argv} < 1 )) ; then
# locale setup {{{
if [[ -z "$LANG" ]] ; then
- xsource "/etc/default/locale"
+ xsource "/etc/default/locale"
fi
export LANG=${LANG:-en_US.iso885915}
# bindkey . rationalise-dot
# bindkey '\eq' push-line-or-edit
+
+## toggle the ,. abbreviation feature on/off
+# NOABBREVIATION: default abbreviation-state
+# 0 - enabled (default)
+# 1 - disabled
+NOABBREVIATION=${NOABBREVIATION:-0}
+
+grml_toggle_abbrev() {
+ if (( ${NOABBREVIATION} > 0 )) ; then
+ NOABBREVIATION=0
+ else
+ NOABBREVIATION=1
+ fi
+}
+
+zle -N grml_toggle_abbrev
+bindkey '^xA' grml_toggle_abbrev
+
# }}}
# a generic accept-line wrapper {{{
globalias() {
local MATCH
+
+ if (( NOABBREVIATION > 0 )) ; then
+ LBUFFER="${LBUFFER},."
+ return 0
+ fi
+
matched_chars='[.-|_a-zA-Z0-9]#'
LBUFFER=${LBUFFER%%(#m)[.-|_a-zA-Z0-9]#}
LBUFFER+=${abk[$MATCH]:-$MATCH}
# dirstack handling {{{
-# TODO: the is42 tests are in place, because (u) requires at least 4.2.0
-# of zsh. We also disable loading potentielly old .zdir files when
-# starting a pre-4.2.0 zsh.
-# Implementing a workaround-(u) for older shells is the obvious
-# solution here, if we want this for all supported shells.
+DIRSTACKSIZE=${DIRSTACKSIZE:-20}
+DIRSTACKFILE=${DIRSTACKFILE:-${HOME}/.zdirs}
-DIRSTACKSIZE=20
-if is42 && [[ -f ~/.zdirs ]] && [[ ${#dirstack[*]} -eq 0 ]] ; then
- dirstack=( ${(f)"$(< ~/.zdirs)"} )
+if [[ -f ${DIRSTACKFILE} ]] && [[ ${#dirstack[*]} -eq 0 ]] ; then
+ dirstack=( ${(f)"$(< $DIRSTACKFILE)"} )
# "cd -" won't work after login by just setting $OLDPWD, so
[[ -d $dirstack[0] ]] && cd $dirstack[0] && cd $OLDPWD
fi
chpwd() {
- is42 && builtin print -l ${(u)dirstack} >! ~/.zdirs
+ if is42 ; then
+ builtin print -l ${(u)dirstack} >! ${DIRSTACKFILE}
+ else
+ uprint dirstack >! ${DIRSTACKFILE}
+ fi
}
# }}}
#m# f6 Stop() \kbd{/etc/init.d/\em{process}}\quad\kbd{stop}
#m# f6 Reload() \kbd{/etc/init.d/\em{process}}\quad\kbd{reload}
#m# f6 Force-Reload() \kbd{/etc/init.d/\em{process}}\quad\kbd{force-reload}
-if [[ -d /etc/init.d ]] ; then
+if [[ -d /etc/init.d || -d /etc/service ]] ; then
+ __start_stop() {
+ local action_="${1:l}" # e.g Start/Stop/Restart
+ local service_="$2"
+ local param_="$3"
+
+ local service_target_="$(readlink /etc/init.d/$service_)"
+ if [[ $service_target_ == "/usr/bin/sv" ]]; then
+ # runit
+ case "${action_}" in
+ start) if [[ ! -e /etc/service/$service_ ]]; then
+ $SUDO ln -s "/etc/sv/$service_" "/etc/service/"
+ else
+ $SUDO "/etc/init.d/$service_" "${action_}" "$param_"
+ fi ;;
+ # there is no reload in runits sysv emulation
+ reload) $SUDO "/etc/init.d/$service_" "force-reload" "$param_" ;;
+ *) $SUDO "/etc/init.d/$service_" "${action_}" "$param_" ;;
+ esac
+ else
+ # sysvinit
+ $SUDO "/etc/init.d/$service_" "${action_}" "$param_"
+ fi
+ }
+
for i in Start Restart Stop Force-Reload Reload ; do
- eval "$i() { $SUDO /etc/init.d/\$1 ${i:l} \$2 ; }"
+ eval "$i() { __start_stop $i \"\$1\" \"\$2\" ; }"
done
fi
# source another config file if present {{{
xsource "/etc/zsh/zshrc.local"
+xsource "${HOME}/.zshenv"
# }}}
# "persistent history" {{{