X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=cce085906711bfaea80918fa0f441f217d5e28d6;hb=1f3015211e686da1dcae9dd7af35e40df24afe7d;hp=176fffbae2c357f3000bdec78582cecef114a97e;hpb=6726156d54c0c5de89c10b8bdc0dc9a332c6f451;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index 176fffb..cce0859 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -448,6 +448,7 @@ xunfunction() { # this allows us to stay in sync with grml's zshrc and put own # modifications in ~/.zshrc.local zrclocal() { + xsource "/etc/zsh/zshrc.local" xsource "${HOME}/.zshrc.local" return 0 } @@ -457,8 +458,7 @@ zrclocal() { # locale setup {{{ xsource "/etc/default/locale" -export LANG=${LANG:-en_US.iso885915} -for var in LC_ALL LC_MESSAGES ; do +for var in LANG LC_ALL LC_MESSAGES ; do [[ -n ${(P)var} ]] && export $var done @@ -1031,6 +1031,55 @@ chpwd() { # }}} +# directory based profiles {{{ + +CHPWD_PROFILE='default' +function chpwd_profiles() { + # Say you want certain settings to be active in certain directories. + # This is what you want. + # + # zstyle ':chpwd:profiles:/usr/src/grml(|/|/*)' profile grml + # zstyle ':chpwd:profiles:/usr/src/debian(|/|/*)' profile debian + # + # When that's done and you enter a directory that matches the pattern + # in the third part of the context, a function called chpwd_profile_grml, + # for example, is called (if it exists). + # + # If no pattern patches (read: no profile is detected) the profile is + # set to 'default', which means chpwd_profile_default is attempted to + # be called. + # + # The name of the detected profile will be available in a variable called + # 'profile' in your functions. You don't need to do anything, it'll just + # be there. + # + # Then there is the parameter $CHPWD_PROFILE is set to the profile, that + # was is currently active. That way you can avoid running code for a + # profile that is already active, by running code such as the following + # at the start of your function: + # + # function chpwd_profile_grml() { + # [[ ${profile} == ${CHPWD_PROFILE} ]] && return 1 + # ... + # } + # + # The initial value for $CHPWD_PROFILE is 'default'. + # + # There you go. Now have fun with that. + local -x profile + + zstyle -s ":chpwd:profiles:${PWD}" profile profile || profile='default' + if (( ${+functions[chpwd_profile_$profile]} )) ; then + chpwd_profile_${profile} + fi + + CHPWD_PROFILE="${profile}" + return 0 +} +chpwd_functions=( ${chpwd_functions} chpwd_profiles ) + +# }}} + # {{{ display battery status on right side of prompt via running 'BATTERY=1 zsh' if [[ $BATTERY -gt 0 ]] ; then if ! check_com -c acpi ; then @@ -2960,10 +3009,6 @@ exit 0; for color in BLUE RED GREEN CYAN YELLOW MAGENTA WHITE ; unset $color # }}} -# source another config file if present {{{ -xsource "/etc/zsh/zshrc.local" -# }}} - # "persistent history" {{{ # just write important commands you always need to ~/.important_commands if [[ -r ~/.important_commands ]] ; then