X-Git-Url: https://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=3b65a09120dbf621ab0ebef4fb530e7677a3bd06;hb=646f73f98fab15506cd9230ea73da95944a996bf;hp=a1778a649ca9193945d042abdd833c77cd46a7e4;hpb=638c1910c6d6708c020bd068510825854410e587;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index a1778a6..3b65a09 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -179,6 +179,11 @@ isdarwin(){ return 1 } +isfreebsd(){ + [[ $OSTYPE == freebsd* ]] && return 0 + return 1 +} + #f1# are we running within an utf environment? isutfenv() { case "$LANG $CHARSET $LANGUAGE" in @@ -533,8 +538,9 @@ export SHELL='/bin/zsh' # color setup for ls: check_com -c dircolors && eval $(dircolors -b) -# color setup for ls on OS X: +# color setup for ls on OS X / FreeBSD: isdarwin && export CLICOLOR=1 +isfreebsd && export CLICOLOR=1 # do MacPorts setup on darwin if isdarwin && [[ -d /opt/local ]]; then @@ -898,7 +904,7 @@ abk=( '....' '../../..' 'BG' '& exit' 'C' '| wc -l' - 'G' '|& grep '${grep_options:+"${grep_options[*]} "} + 'G' '|& grep '${grep_options:+"${grep_options[*]}"} 'H' '| head' 'Hl' ' --help |& less -r' #d (Display help in pager) 'L' '| less' @@ -1137,100 +1143,15 @@ chpwd() { if is433 ; then -# chpwd_profiles(): Directory Profiles +# chpwd_profiles(): Directory Profiles, Quickstart: # -# Say you want certain settings to be active in certain directories. This is -# what you want. +# In .zshrc.local: # -# To get it working you will need this function and something along the -# following lines: -# -# chpwd_functions+=( chpwd_profiles ) +# zstyle ':chpwd:profiles:/usr/src/grml(|/|/*)' profile grml +# zstyle ':chpwd:profiles:/usr/src/debian(|/|/*)' profile debian # chpwd_profiles # -# You will usually want to do that *after* you configured the system. That -# configuration is described below. -# -# 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. -# -# A word about the context (the ':chpwd:profiles:*' stuff in the zstyle -# command) which is used: The third part in the context is matched against -# ${PWD}. That's why using a pattern such as /foo/bar(|/|/*) makes sense. -# Because that way the profile is detected for all these values of ${PWD}: -# /foo/bar -# /foo/bar/ -# /foo/bar/baz -# So, if you want to make double damn sure a profile works in /foo/bar and -# everywhere deeper in that tree, just use (|/|/*) and be happy. -# -# 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 (the default value is "default"). 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 -# ... -# } -# -# If you know you are going to do that all the time for each and every -# directory-profile function you are ever going to write, you may also set the -# `re-execute' style to `false' (which only defaults to `true' for backwards -# compatibility), like this: -# -# zstyle ':chpwd:profiles:*' re-execute false -# -# If you use this feature and need to know whether it is active in your current -# shell, there are several ways to do that. Here are two simple ways: -# -# a) If knowing if the profiles feature is active when zsh starts is good -# enough for you, you can use the following snippet: -# -# (( ${+functions[chpwd_profiles]} )) && print "directory profiles active" -# -# b) If that is not good enough, and you would prefer to be notified whenever a -# profile changes, you can solve that by making sure you start *every* -# profile function you create like this: -# -# function chpwd_profile_myprofilename() { -# [[ ${profile} == ${CHPWD_PROFILE} ]] && return 1 -# print "chpwd(): Switching to profile: $profile" -# ... -# } -# -# That makes sure you only get notified if a profile is *changed*, not -# everytime you change directory. (To avoid this, you may also set the newer -# `re-execute' style like described further above instead of the test on top of -# the function. -# -# If you need to do initialisations the first time `chpwd_profiles' is called -# (which should be in your configuration file), you can do that in a function -# called "chpwd_profiles_init". That function needs to be defined *before* -# `chpwd_profiles' is called for this to work. -# -# During the *first* call of `chpwd_profiles' (and therefore all its profile -# functions) the parameter `$CHPWD_PROFILES_INIT' exists and is set to `1'. In -# all other cases, the parameter does not exist at all. -# -# When the system switches from one profile to another, it executes a function -# named "chpwd_leave_profile_()" before calling the -# profile-function for the new profile. -# -# There you go. Now have fun with that. -# -# Note: This feature requires zsh 4.3.3 or newer. +# For details see the `grmlzshrc.5' manual page. function chpwd_profiles() { local profile context local -i reexecute @@ -1513,15 +1434,15 @@ fi # do we have GNU ls with color-support? if [[ "$TERM" != dumb ]]; then #a1# execute \kbd{@a@}:\quad ls with colors - alias ls='ls -b -CF '${ls_options:+"${ls_options[*]} "} + alias ls='ls -b -CF '${ls_options:+"${ls_options[*]}"} #a1# execute \kbd{@a@}:\quad list all files, with colors - alias la='ls -la '${ls_options:+"${ls_options[*]} "} + alias la='ls -la '${ls_options:+"${ls_options[*]}"} #a1# long colored list, without dotfiles (@a@) - alias ll='ls -l '${ls_options:+"${ls_options[*]} "} + alias ll='ls -l '${ls_options:+"${ls_options[*]}"} #a1# long colored list, human readable sizes (@a@) - alias lh='ls -hAl '${ls_options:+"${ls_options[*]} "} + alias lh='ls -hAl '${ls_options:+"${ls_options[*]}"} #a1# List files, append qualifier to filenames \\&\quad(\kbd{/} for directories, \kbd{@} for symlinks ...) - alias l='ls -lF '${ls_options:+"${ls_options[*]} "} + alias l='ls -lF '${ls_options:+"${ls_options[*]}"} else alias ls='ls -b -CF' alias la='ls -la' @@ -2005,6 +1926,7 @@ compdef _functions edfunc #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} +#m# f6 Status() \kbd{/etc/init.d/\em{process}}\quad\kbd{status} if [[ -d /etc/init.d || -d /etc/service ]] ; then __start_stop() { local action_="${1:l}" # e.g Start/Stop/Restart @@ -2036,7 +1958,7 @@ if [[ -d /etc/init.d || -d /etc/service ]] ; then _describe "service startup script" scripts } - for i in Start Restart Stop Force-Reload Reload ; do + for i in Start Restart Stop Force-Reload Reload Status ; do eval "$i() { __start_stop $i \"\$1\" \"\$2\" ; }" compdef _grmlinitd $i done @@ -2465,7 +2387,7 @@ check_com new || alias new=modified # use colors when GNU grep with color-support #a2# Execute \kbd{grep -{}-color=auto} -(( $#grep_options > 0 )) && alias grep='grep '${grep_options:+"${grep_options[*]} "} +(( $#grep_options > 0 )) && alias grep='grep '${grep_options:+"${grep_options[*]}"} # Translate DE<=>EN # 'translate' looks up fot a word in a file with language-to-language