X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=b4b2fd79c8de11f899eb00e532a7efbb7e0d4f07;hb=a8df509bbfc5776051458c9bf2349631a21f5949;hp=7e6898a9565ee20a1a4f244959a134f7eac3e463;hpb=df5ece4ab36a2d900a8b1d48b6ce60dd4172c224;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index 7e6898a..b4b2fd7 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -450,36 +450,35 @@ fi check_com() { emulate -L zsh local -i comonly gatoo + comonly=0 + gatoo=0 if [[ $1 == '-c' ]] ; then - (( comonly = 1 )) - shift + comonly=1 + shift 1 elif [[ $1 == '-g' ]] ; then - (( gatoo = 1 )) - else - (( comonly = 0 )) - (( gatoo = 0 )) + gatoo=1 + shift 1 fi if (( ${#argv} != 1 )) ; then - printf 'usage: check_com [-c] \n' >&2 + printf 'usage: check_com [-c|-g] \n' >&2 return 1 fi if (( comonly > 0 )) ; then - [[ -n ${commands[$1]} ]] && return 0 + (( ${+commands[$1]} )) && return 0 return 1 fi - if [[ -n ${commands[$1]} ]] \ - || [[ -n ${functions[$1]} ]] \ - || [[ -n ${aliases[$1]} ]] \ - || [[ -n ${reswords[(r)$1]} ]] ; then - + if (( ${+commands[$1]} )) \ + || (( ${+functions[$1]} )) \ + || (( ${+aliases[$1]} )) \ + || (( ${+reswords[(r)$1]} )) ; then return 0 fi - if (( gatoo > 0 )) && [[ -n ${galiases[$1]} ]] ; then + if (( gatoo > 0 )) && (( ${+galiases[$1]} )) ; then return 0 fi @@ -1597,50 +1596,53 @@ isgrmlcd && SAVEHIST=1000 || SAVEHIST=10000 # useful for setopt append_history 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() { + (( ZSH_SUBSHELL )) && return + (( $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 @@ -2358,9 +2360,7 @@ function prompt_grml_precmd_worker () { grml_prompt_fallback() { setopt prompt_subst - precmd() { - (( ${+functions[vcs_info]} )) && vcs_info - } + local p0 p1 p0="${RED}%(?..%? )${WHITE}${debian_chroot:+($debian_chroot)}" p1="${BLUE}%n${NO_COLOR}@%m %40<...<%B%~%b%<< "'${vcs_info_msg_0_}'"%# " @@ -2369,7 +2369,6 @@ grml_prompt_fallback() { else PROMPT="${RED}${p0}${BLUE}${p1}" fi - unset p0 p1 } if zrcautoload promptinit && promptinit 2>/dev/null ; then @@ -2382,6 +2381,7 @@ if zrcautoload promptinit && promptinit 2>/dev/null ; then else print 'Notice: no promptinit available :(' grml_prompt_fallback + precmd() { (( ${+functions[vcs_info]} )) && vcs_info; } fi if is437; then @@ -2414,6 +2414,7 @@ if is437; then fi else grml_prompt_fallback + precmd() { (( ${+functions[vcs_info]} )) && vcs_info; } fi # Terminal-title wizardry @@ -2541,7 +2542,10 @@ else alias l='command ls -l' fi -alias mdstat='cat /proc/mdstat' +if [[ -r /proc/mdstat ]]; then + alias mdstat='cat /proc/mdstat' +fi + alias ...='cd ../../' # generate alias named "$KERNELVERSION-reboot" so you can use boot with kexec: @@ -2651,28 +2655,30 @@ Enjoy your grml system with the zsh!$reset_color" # debian stuff if [[ -r /etc/debian_version ]] ; then - #a3# Execute \kbd{apt-cache search} - alias acs='apt-cache search' - #a3# Execute \kbd{apt-cache show} - alias acsh='apt-cache show' - #a3# Execute \kbd{apt-cache policy} - alias acp='apt-cache policy' - #a3# Execute \kbd{apt-get dist-upgrade} - salias adg="apt-get dist-upgrade" - #a3# Execute \kbd{apt-get install} - salias agi="apt-get install" - #a3# Execute \kbd{aptitude install} - salias ati="aptitude install" - #a3# Execute \kbd{apt-get upgrade} - salias ag="apt-get upgrade" - #a3# Execute \kbd{apt-get update} - salias au="apt-get update" - #a3# Execute \kbd{aptitude update ; aptitude safe-upgrade} - salias -a up="aptitude update ; aptitude safe-upgrade" - #a3# Execute \kbd{dpkg-buildpackage} - alias dbp='dpkg-buildpackage' - #a3# Execute \kbd{grep-excuses} - alias ge='grep-excuses' + if [[ -z "$GRML_NO_APT_ALIASES" ]]; then + #a3# Execute \kbd{apt-cache search} + alias acs='apt-cache search' + #a3# Execute \kbd{apt-cache show} + alias acsh='apt-cache show' + #a3# Execute \kbd{apt-cache policy} + alias acp='apt-cache policy' + #a3# Execute \kbd{apt-get dist-upgrade} + salias adg="apt-get dist-upgrade" + #a3# Execute \kbd{apt-get install} + salias agi="apt-get install" + #a3# Execute \kbd{aptitude install} + salias ati="aptitude install" + #a3# Execute \kbd{apt-get upgrade} + salias ag="apt-get upgrade" + #a3# Execute \kbd{apt-get update} + salias au="apt-get update" + #a3# Execute \kbd{aptitude update ; aptitude safe-upgrade} + salias -a up="aptitude update ; aptitude safe-upgrade" + #a3# Execute \kbd{dpkg-buildpackage} + alias dbp='dpkg-buildpackage' + #a3# Execute \kbd{grep-excuses} + alias ge='grep-excuses' + fi # get a root shell as normal user in live-cd mode: if isgrmlcd && [[ $UID -ne 0 ]] ; then @@ -3131,7 +3137,7 @@ export COLORTERM="yes" # general #a2# Execute \kbd{du -sch} -alias da='du -sch' +[[ -n "$GRML_NO_SMALL_ALIASES" ]] || alias da='du -sch' # listing stuff #a2# Execute \kbd{ls -lSrah} @@ -3515,7 +3521,7 @@ _simple_extract() '*:Archive Or Uri:__archive_or_uri' } compdef _simple_extract simple-extract -alias se=simple-extract +[[ -n "$GRML_NO_SMALL_ALIASES" ]] || alias se=simple-extract #f5# Change the xterm title from within GNU-screen xtrename() { @@ -3648,7 +3654,7 @@ if check_com -c hg ; then alias hbp='hg-buildpackage' # execute commands on the versioned patch-queue from the current repos - alias mq='hg -R $(readlink -f $(hg root)/.hg/patches)' + [[ -n "$GRML_NO_SMALL_ALIASES" ]] || alias mq='hg -R $(readlink -f $(hg root)/.hg/patches)' # diffstat for specific version of a mercurial repository # hgstat => display diffstat between last revision and tip