X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=641408935d2b8ffd571e92ccc7fcdc9f02b28cc7;hb=fa4c0c3937e1edccf092e15a560a2da22ee5b6a0;hp=bd8ab85e5a4c4d717453bc70b085cea4e850ef9b;hpb=57254cb4b9a8321eaec6e68d84b1e484bdb1790e;p=grml-etc-core.git
diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc
index bd8ab85..6414089 100644
--- a/etc/zsh/zshrc
+++ b/etc/zsh/zshrc
@@ -536,7 +536,12 @@ export PAGER=${PAGER:-less}
export MAIL=${MAIL:-/var/mail/$USER}
# if we don't set $SHELL then aterm, rxvt,.. will use /bin/sh or /bin/bash :-/
-export SHELL='/bin/zsh'
+if [[ -z "$SHELL" ]] ; then
+ SHELL="$(which zsh)"
+ if [[ -x "$SHELL" ]] ; then
+ export SHELL
+ fi
+fi
# color setup for ls:
check_com -c dircolors && eval $(dircolors -b)
@@ -601,8 +606,9 @@ if is4 ; then
fi
# completion system
+COMPDUMPFILE=${COMPDUMPFILE:-${ZDOTDIR:-${HOME}}/.zcompdump}
if zrcautoload compinit ; then
- compinit || print 'Notice: no compinit available :('
+ compinit -d ${COMPDUMPFILE} || print 'Notice: no compinit available :('
else
print 'Notice: no compinit available :('
function compdef { }
@@ -769,7 +775,7 @@ grmlcomp() {
# use generic completion system for programs not yet defined; (_gnu_generic works
# with commands that provide a --help option with "standard" gnu-like output.)
- for compcom in cp deborphan df feh fetchipac head hnb ipacsum mv \
+ for compcom in cp deborphan df feh fetchipac gpasswd head hnb ipacsum mv \
pal stow tail uname ; do
[[ -z ${_comps[$compcom]} ]] && compdef _gnu_generic ${compcom}
done; unset compcom
@@ -1118,7 +1124,6 @@ inplaceMkDirs() {
fi
}
-#k# mkdir -p
from string under cursor or marked area
zle -N inplaceMkDirs
#v1# set number of lines to display per page
@@ -1405,6 +1410,7 @@ bind2maps viins vicmd -- Right vi-forward-char
#k# Display list of abbreviations that expand when followed by ,.
bind2maps emacs viins -- -s '^x.' zleiab
bind2maps emacs viins -- -s '^xb' help-show-abk
+#k# mkdir -p from string under cursor or marked area
bind2maps emacs viins -- -s '^xM' inplaceMkDirs
#k# display help for keybindings and ZLE
bind2maps emacs viins -- -s '^xz' help-zle
@@ -1556,6 +1562,7 @@ if [[ -f ${DIRSTACKFILE} ]] && [[ ${#dirstack[*]} -eq 0 ]] ; then
fi
chpwd() {
+ if (( $DIRSTACKSIZE <= 0 )) || [[ -z $DIRSTACKFILE ]]; then return; fi
local -ax my_stack
my_stack=( ${PWD} ${dirstack} )
if is42 ; then
@@ -2530,6 +2537,7 @@ compdef _functions freload
#f1# List symlinks in detail (more detailed version of 'readlink -f' and 'whence -s')
sll() {
[[ -z "$1" ]] && printf 'Usage: %s \n' "$0" && return 1
+ local file
for file in "$@" ; do
while [[ -h "$file" ]] ; do
ls -l $file
@@ -2542,26 +2550,31 @@ sll() {
# PAGER='less -Mr' - If so, the use of $PAGER here needs fixing
# with respect to wordsplitting. (ie. ${=PAGER})
if check_com -c $PAGER ; then
- #f3# View Debian's changelog of a given package
+ #f3# View Debian's changelog of given package(s)
dchange() {
emulate -L zsh
- if [[ -r /usr/share/doc/$1/changelog.Debian.gz ]] ; then
- $PAGER /usr/share/doc/$1/changelog.Debian.gz
- elif [[ -r /usr/share/doc/$1/changelog.gz ]] ; then
- $PAGER /usr/share/doc/$1/changelog.gz
- else
- if check_com -c aptitude ; then
- echo "No changelog for package $1 found, using aptitude to retrieve it."
- if isgrml ; then
- aptitude -t unstable changelog $1
+ [[ -z "$1" ]] && printf 'Usage: %s \n' "$0" && return 1
+
+ local package
+ for package in "$@" ; do
+ if [[ -r /usr/share/doc/${package}/changelog.Debian.gz ]] ; then
+ $PAGER /usr/share/doc/${package}/changelog.Debian.gz
+ elif [[ -r /usr/share/doc/${package}/changelog.gz ]] ; then
+ $PAGER /usr/share/doc/${package}/changelog.gz
+ elif [[ -r /usr/share/doc/${package}/changelog ]] ; then
+ $PAGER /usr/share/doc/${package}/changelog
+ else
+ if check_com -c aptitude ; then
+ echo "No changelog for package $package found, using aptitude to retrieve it."
+ aptitude changelog "$package"
+ elif check_com -c apt-get ; then
+ echo "No changelog for package $package found, using apt-get to retrieve it."
+ apt-get changelog "$package"
else
- aptitude changelog $1
+ echo "No changelog for package $package found, sorry."
fi
- else
- echo "No changelog for package $1 found, sorry."
- return 1
fi
- fi
+ done
}
_dchange() { _files -W /usr/share/doc -/ }
compdef _dchange dchange
@@ -2747,11 +2760,6 @@ if check_com vim; then
}
fi
-# make a backup of a file
-bk() {
- cp -a "$1" "${1}_$(date --iso-8601=seconds)"
-}
-
ssl_hashes=( sha512 sha256 sha1 md5 )
for sh in ${ssl_hashes}; do
@@ -2939,8 +2947,13 @@ modified() {
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[*]}"}
+if (( $#grep_options > 0 )); then
+ o=${grep_options:+"${grep_options[*]}"}
+ #a2# Execute \kbd{grep -{}-color=auto}
+ alias grep='grep '$o
+ alias egrep='egrep '$o
+ unset o
+fi
# Translate DE<=>EN
# 'translate' looks up fot a word in a file with language-to-language