X-Git-Url: http://git.grml.org/?a=blobdiff_plain;ds=inline;f=etc%2Fzsh%2Fzshrc;h=62218613fbe243db2f275a73f77c1314c9a24dee;hb=4e196b418a303d3badcb9479e36e949a2daf3d1a;hp=12a6100104e308700a5edf109659f980c37fa073;hpb=e77b03812337fe05e38d367dad4188b7a231006a;p=grml-etc-core.git
diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc
index 12a6100..6221861 100644
--- a/etc/zsh/zshrc
+++ b/etc/zsh/zshrc
@@ -216,11 +216,12 @@ fi
# We need to define this function as early as this, because autoloading
# 'is-at-least()' needs it.
function zrcautoload() {
- setopt local_options extended_glob
+ emulate -L zsh
+ setopt extended_glob
local fdir ffile
local -i ffound
- ffile=${1}
+ ffile=$1
(( found = 0 ))
for fdir in ${fpath} ; do
[[ -e ${fdir}/${ffile} ]] && (( ffound = 1 ))
@@ -290,79 +291,6 @@ GRMLSMALL_SPECIFIC=${GRMLSMALL_SPECIFIC:-1}
GRML_ALWAYS_LOAD_ALL=${GRML_ALWAYS_LOAD_ALL:-0}
ZSH_NO_DEFAULT_LOCALE=${ZSH_NO_DEFAULT_LOCALE:-0}
-if isgrmlcd ; then
- GRML_WARN_SKEL=${GRML_WARN_SKEL:-0}
-else
- GRML_WARN_SKEL=${GRML_WARN_SKEL:-1}
-fi
-
-if (( GRML_WARN_SKEL != 0 )) ; then
-
-function grml_warn_skel_main() {
- printf '
-Dear user,
-
-You updated grml'\''s zshrc which brings a major change.
-The configuration is kept only in one file, being the global zshrc.
-In the past, the configuration was split in two files, with the
-second file being the .zshrc file from /etc/skel.
-
-If you have a .zshrc file in your home directory that originally
-came from the skel directory, please remove it. This is also the case
-if you followed earlier instructions from the grml-zsh-refcard or
-from on non-grml systems.
-
-Please see the current grml-zsh-refcard (available at
-) for updated installation information. In short,
-you don'\''t want a .zshrc.global file. Install the global zshrc to
-~/.zshrc and be done.
-
-If you need changes to the configuration, use ~/.zshrc.pre and
-~/.zshrc.local.
-
-'
-}
-
-function grml_warn_skel_remove() {
- printf 'To remove this warning execute '\''grml_do_not_warn_skel'\''.\n\n'
-}
-
-function grml_do_not_warn_skel() {
- printf '# Do not warn about old skel dot-files anymore\n' >>! ~/.zshrc.pre
- printf 'GRML_WARN_SKEL=0\n' >>! ~/.zshrc.pre
-}
-
-# let's try to guess how the user uses us.
-if is-at-least 4.3.7 ; then
- # funcsourcetrace requires at least version 4.3.7 of zsh.
- GRML_SRC_FILE="${${funcsourcetrace[1]}%:*}"
-
- grml_warn_skel_main
- case ${GRML_SRC_FILE} in
- (${HOME}/.zshrc.global)
- grml_warn_skel_remove
- printf '\nIt looks like you copied the grml zshrc to '\''~/.zshrc.global'\''.\n'
- printf 'Nowadays you just copy the global zshrc to '\''~/.zshrc'\'' to use\n'
- printf 'it on a non-grml-system.\n'
- ;;
- (${HOME}/.zshrc)
- printf '\nIt looks like you copied the grml zshrc to '\''~/.zshrc'\''.\n'
- printf 'We'\''ll disable this warning automatically for later sessions.\n'
- grml_do_not_warn_skel
- ;;
- (*)
- grml_do_not_warn_skel
- ;;
- esac
-else
- grml_warn_skel_main
- grml_warn_skel_remove
-fi
-
-unfunction grml_warn_skel_remove grml_warn_skel_main
-
-fi # GRML_WARN_SKEL
-
# }}}
# utility functions {{{
@@ -373,12 +301,13 @@ fi # GRML_WARN_SKEL
# -c only checks for external commands
# -g does the usual tests and also checks for global aliases
check_com() {
+ emulate -L zsh
local -i comonly gatoo
- if [[ ${1} == '-c' ]] ; then
+ if [[ $1 == '-c' ]] ; then
(( comonly = 1 ))
shift
- elif [[ ${1} == '-g' ]] ; then
+ elif [[ $1 == '-g' ]] ; then
(( gatoo = 1 ))
else
(( comonly = 0 ))
@@ -413,9 +342,10 @@ check_com() {
# creates an alias and precedes the command with
# sudo if $EUID is not zero.
salias() {
+ emulate -L zsh
local only=0 ; local multi=0
- while [[ ${1} == -* ]] ; do
- case ${1} in
+ while [[ $1 == -* ]] ; do
+ case $1 in
(-o) only=1 ;;
(-a) multi=1 ;;
(--) shift ; break ;;
@@ -427,7 +357,7 @@ salias() {
printf ' -o only sets an alias if a preceding sudo would be needed.\n'
return 0
;;
- (*) printf "unkown option: '%s'\n" "${1}" ; return 1 ;;
+ (*) printf "unkown option: '%s'\n" "$1" ; return 1 ;;
esac
shift
done
@@ -454,9 +384,10 @@ salias() {
# Note that foo is no typo; $foo would be wrong here!
if ! is42 ; then
uprint () {
+ emulate -L zsh
local -a u
local w
- local parameter=${1}
+ local parameter=$1
if [[ -z ${parameter} ]] ; then
printf 'usage: uprint \n'
@@ -464,22 +395,23 @@ if ! is42 ; then
fi
for w in ${(P)parameter} ; do
- [[ -z ${(M)u:#${w}} ]] && u=( ${u} ${w} )
+ [[ -z ${(M)u:#$w} ]] && u=( $u $w )
done
- builtin print -l ${u}
+ builtin print -l $u
}
fi
# Check if we can read given files and source those we can.
xsource() {
+ emulate -L zsh
if (( ${#argv} < 1 )) ; then
printf 'usage: xsource FILE(s)...\n' >&2
return 1
fi
while (( ${#argv} > 0 )) ; do
- [[ -r ${1} ]] && source ${1}
+ [[ -r $1 ]] && source $1
shift
done
return 0
@@ -487,18 +419,20 @@ xsource() {
# Check if we can read a given file and 'cat(1)' it.
xcat() {
+ emulate -L zsh
if (( ${#argv} != 1 )) ; then
printf 'usage: xcat FILE\n' >&2
return 1
fi
- [[ -r ${1} ]] && cat ${1}
+ [[ -r $1 ]] && cat $1
return 0
}
# Remove these functions again, they are of use only in these
# setup files. This should be called at the end of .zshrc.
xunfunction() {
+ emulate -L zsh
local -a funcs
funcs=(salias xcat xsource xunfunction zrcautoload)
@@ -533,32 +467,6 @@ xsource "/etc/sysconfig/keyboard"
TZ=$(xcat /etc/timezone)
# }}}
-# check for potentially old files in 'completion.d' {{{
-setopt extendedglob
-xof=(/etc/zsh/completion.d/*~/etc/zsh/completion.d/_*(N))
-if (( ${#xof} > 0 )) ; then
- printf '\n -!- INFORMATION\n\n'
- printf ' -!- %s file(s) not starting with an underscore (_) found in\n' ${#xof}
- printf ' -!- /etc/zsh/completion.d/.\n\n'
- printf ' -!- While this has been the case in old versions of grml-etc-core,\n'
- printf ' -!- recent versions of the grml-zsh-setup have all these files rewritten\n'
- printf ' -!- and renamed. Furthermore, the grml-zsh-setup will *only* add files\n'
- printf ' -!- named _* to that directory.\n\n'
- printf ' -!- If you added functions to completion.d yourself, please consider\n'
- printf ' -!- moving them to /etc/zsh/functions.d/. Files in that directory, not\n'
- printf ' -!- starting with an underscore are marked for automatic loading\n'
- printf ' -!- by default (so that is quite convenient).\n\n'
- printf ' -!- If there are files *not* starting with an underscore from an older\n'
- printf ' -!- grml-etc-core in completion.d, you may safely remove them.\n\n'
- printf ' -!- Delete the files for example via running:\n\n'
- printf " rm ${xof}\n\n"
- printf ' -!- Note, that this message will *not* go away, unless you yourself\n'
- printf ' -!- resolve the situation manually.\n\n'
- BROKEN_COMPLETION_DIR=1
-fi
-unset xof
-# }}}
-
# {{{ set some variables
if check_com -c vim ; then
#v#
@@ -591,22 +499,16 @@ fi
# do Fink setup on darwin
isdarwin && xsource /sw/bin/init.sh
-# completion functions go to /etc/zsh/completion.d
-# function files may be put into /etc/zsh/functions.d, from where they
-# will be automatically autoloaded.
-if [[ -n "$BROKEN_COMPLETION_DIR" ]] ; then
- print 'Warning: not setting completion directories because broken files have been found.' >&2
-else
- [[ -d /etc/zsh/completion.d ]] && fpath=( $fpath /etc/zsh/completion.d )
- if [[ -d /etc/zsh/functions.d ]] ; then
- fdir='/etc/zsh/functions.d'
- fpath=( ${fdir} ${fdir}/**/*(/N) ${fpath} )
+# load our function and completion directories
+for fdir in /usr/share/grml/zsh/completion /usr/share/grml/functions; do
+ fpath=( ${fdir} ${fdir}/**/*(/N) ${fpath} )
+ if [[ ${fpath} == '/usr/share/grml/zsh/functions' ]] ; then
for func in ${fdir}/**/[^_]*[^~](N.) ; do
zrcautoload ${func:t}
done
- unset fdir
fi
-fi
+done
+unset fdir func
# support colors in less
export LESS_TERMCAP_mb=$'\E[01;31m'
@@ -679,19 +581,6 @@ zle -N insert-unicode-char
#k# Insert Unicode character
bindkey '^Xi' insert-unicode-char
-# just type 'cd ...' to get 'cd ../..'
-# rationalise-dot() {
-# if [[ $LBUFFER == *.. ]] ; then
-# LBUFFER+=/..
-# else
-# LBUFFER+=.
-# fi
-# }
-# zle -N rationalise-dot
-# bindkey . rationalise-dot
-
-# bindkey '\eq' push-line-or-edit
-
## toggle the ,. abbreviation feature on/off
# NOABBREVIATION: default abbreviation-state
# 0 - enabled (default)
@@ -904,6 +793,8 @@ abk=(
)
globalias() {
+ emulate -L zsh
+ setopt extendedglob
local MATCH
if (( NOABBREVIATION > 0 )) ; then
@@ -935,7 +826,9 @@ alias url-quote='autoload -U url-quote-magic ; zle -N self-insert url-quote-magi
#m# k ESC-h Call \kbd{run-help} for the 1st word on the command line
alias run-help >&/dev/null && unalias run-help
-zrcautoload run-help # use via 'esc-h'
+for rh in run-help{,-git,-svk,-svn}; do
+ zrcautoload $rh
+done; unset rh
# completion system
if zrcautoload compinit ; then
@@ -1061,10 +954,12 @@ if [[ -f ${DIRSTACKFILE} ]] && [[ ${#dirstack[*]} -eq 0 ]] ; then
fi
chpwd() {
+ local -ax my_stack
+ my_stack=( ${PWD} ${dirstack} )
if is42 ; then
- builtin print -l ${(u)dirstack} >! ${DIRSTACKFILE}
+ builtin print -l ${(u)my_stack} >! ${DIRSTACKFILE}
else
- uprint dirstack >! ${DIRSTACKFILE}
+ uprint my_stack >! ${DIRSTACKFILE}
fi
}
@@ -2054,7 +1949,7 @@ fi
(( ${COMMAND_NOT_FOUND} == 1 )) &&
function command_not_found_handler() {
- setopt localoptions no_sh_wordsplit
+ emulate -L zsh
if [[ -x ${GRML_ZSH_CNF_HANDLER} ]] ; then
${GRML_ZSH_CNF_HANDLER} $1
fi
@@ -2151,7 +2046,7 @@ else
# set variable identifying the chroot you work in (used in the prompt below)
if [[ $GRMLPROMPT -gt 0 ]] ; then
PROMPT="${RED}${EXITCODE}${CYAN}[%j running job(s)] ${GREEN}{history#%!} ${RED}%(3L.+.) ${BLUE}%* %D
-${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# "
+${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< "'${VCS_INFO_message_0_}'"%# "
else
# This assembles the primary prompt string
if (( EUID != 0 )); then
@@ -2228,7 +2123,7 @@ alias rm='nocorrect rm' # no spelling correction on rm
#a1# Execute \kbd{rmdir}
alias rd='rmdir'
-#a1# Execute \kbd{rmdir}
+#a1# Execute \kbd{mkdir}
alias md='mkdir'
# see http://www.cl.cam.ac.uk/~mgk25/unicode.html#term for details
@@ -2395,7 +2290,8 @@ if [[ -r /etc/debian_version ]] ; then
# debian upgrade
#f3# Execute \kbd{apt-get update \&\& }\\&\quad \kbd{apt-get dist-upgrade}
upgrade() {
- if [[ -z "$1" ]] ; then
+ emulate -L zsh
+ if [[ -z $1 ]] ; then
$SUDO apt-get update
$SUDO apt-get -u upgrade
else
@@ -2429,12 +2325,17 @@ if check_com -c grep-status ; then
fi
# if cdrecord is a symlink (to wodim) or isn't present at all warn:
-if [[ -L /usr/bin/cdrecord ]] || ! check_com -c cdrecord ; then
- if check_com -c wodim ; then
- alias cdrecord="echo 'cdrecord is not provided under its original name by Debian anymore.
+if [[ -L /usr/bin/cdrecord ]] || ! check_com -c cdrecord; then
+ if check_com -c wodim; then
+ cdrecord() {
+ cat <\n' "$0" && return 1
- for i in "$@" ; do
- file=$i
+ for file in "$@" ; do
while [[ -h "$file" ]] ; do
ls -l $file
file=$(readlink "$file")
@@ -2746,20 +2640,24 @@ else
manzsh() { /usr/bin/man zshall | vim -c "se ft=man| se hlsearch" +/"$1" - ; }
fi
+# TODO: Is it supported to use pager settings like this?
+# PAGER='less -Mr' - If so, the use of $PAGER here needs fixing
+# with respect to wordsplitting. (ie. ${=PAGER})
if check_com -c $PAGER ; then
#f1# View Debian's changelog of a given package
dchange() {
- 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
+ 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}
+ aptitude -t unstable changelog $1
else
- aptitude changelog ${1}
+ aptitude changelog $1
fi
else
echo "No changelog for package $1 found, sorry."
@@ -2772,11 +2670,12 @@ if check_com -c $PAGER ; then
#f1# View Debian's NEWS of a given package
dnews() {
- if [[ -r /usr/share/doc/${1}/NEWS.Debian.gz ]] ; then
- $PAGER /usr/share/doc/${1}/NEWS.Debian.gz
+ emulate -L zsh
+ if [[ -r /usr/share/doc/$1/NEWS.Debian.gz ]] ; then
+ $PAGER /usr/share/doc/$1/NEWS.Debian.gz
else
- if [[ -r /usr/share/doc/${1}/NEWS.gz ]] ; then
- $PAGER /usr/share/doc/${1}/NEWS.gz
+ if [[ -r /usr/share/doc/$1/NEWS.gz ]] ; then
+ $PAGER /usr/share/doc/$1/NEWS.gz
else
echo "No NEWS file for package $1 found, sorry."
return 1
@@ -2788,8 +2687,9 @@ if check_com -c $PAGER ; then
#f1# View upstream's changelog of a given package
uchange() {
- if [[ -r /usr/share/doc/${1}/changelog.gz ]] ; then
- $PAGER /usr/share/doc/${1}/changelog.gz
+ emulate -L zsh
+ if [[ -r /usr/share/doc/$1/changelog.gz ]] ; then
+ $PAGER /usr/share/doc/$1/changelog.gz
else
echo "No changelog for package $1 found, sorry."
return 1
@@ -2897,6 +2797,7 @@ check_com -c qma && alias ?='qma zshall'
# grep for running process, like: 'any vim'
any() {
+ emulate -L zsh
if [[ -z "$1" ]] ; then
echo "any - grep for process(es) by keyword" >&2
echo "Usage: any " >&2 ; return 1
@@ -2920,6 +2821,7 @@ deswap() {
# print hex value of a number
hex() {
+ emulate -L zsh
[[ -n "$1" ]] && printf "%x\n" $1 || { print 'Usage: hex ' ; return 1 }
}
@@ -2961,6 +2863,7 @@ uiae() {
# set up an ipv6 tunnel
ipv6-tunnel() {
+ emulate -L zsh
case $1 in
start)
if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then
@@ -3082,6 +2985,41 @@ exit 0;
return $?
}
+ssl_hashes=( sha512 sha256 sha1 md5 )
+
+for sh in ${ssl_hashes}; do
+ ssl-cert-${sh}() {
+ emulate -L zsh
+ if [[ -z $1 ]] ; then
+ printf 'usage: %s \n' "ssh-cert-${sh}"
+ return 1
+ fi
+ openssl x509 -noout -fingerprint -${sh} -in $1
+ }
+done; unset sh
+
+ssl-cert-fingerprints() {
+ emulate -L zsh
+ local i
+ if [[ -z $1 ]] ; then
+ printf 'usage: ssl-cert-fingerprints \n'
+ return 1
+ fi
+ for i in ${ssl_hashes}
+ do ssl-cert-$i $1;
+ done
+}
+
+ssl-cert-info() {
+ emulate -L zsh
+ if [[ -z $1 ]] ; then
+ printf 'usage: ssl-cert-info \n'
+ return 1
+ fi
+ openssl x509 -noout -text -in $1
+ ssl-cert-fingerprints $1
+}
+
# }}}
# {{{ make sure our environment is clean regarding colors
@@ -3156,20 +3094,6 @@ alias CO="./configure"
#a2# Execute \kbd{./configure --help}
alias CH="./configure --help"
-# arch/tla stuff
-if check_com -c tla ; then
- #a2# Execute \kbd{tla what-changed --diffs | less}
- alias tdi='tla what-changed --diffs | less'
- #a2# Execute \kbd{tla-buildpackage}
- alias tbp='tla-buildpackage'
- #a2# Execute \kbd{tla archive-mirror}
- alias tmi='tla archive-mirror'
- #a2# Execute \kbd{tla commit}
- alias tco='tla commit'
- #a2# Execute \kbd{tla star-merge}
- alias tme='tla star-merge'
-fi
-
# listing stuff
#a2# Execute \kbd{ls -lSrah}
alias dir="ls -lSrah"
@@ -3180,9 +3104,9 @@ alias lsa='ls -a .*(.)' # only show dot-files
#a2# Only files with setgid/setuid/sticky flag
alias lss='ls -l *(s,S,t)' # only files with setgid/setuid/sticky flag
#a2# Only show 1st ten symlinks
-alias lsl='ls -l *(@[1,10])' # only symlinks
+alias lsl='ls -l *(@)' # only symlinks
#a2# Display only executables
-alias lsx='ls -l *(*[1,10])' # only executables
+alias lsx='ls -l *(*)' # only executables
#a2# Display world-{readable,writable,executable} files
alias lsw='ls -ld *(R,W,X.^ND/)' # world-{readable,writable,executable} files
#a2# Display the ten biggest files
@@ -3212,8 +3136,6 @@ alias r-x='chmod 755'
#a2# Execute \kbd{mkdir -o}
alias md='mkdir -p'
-check_com -c ipython && alias ips='ipython -p sh'
-
# console stuff
#a2# Execute \kbd{mplayer -vo fbdev}
alias cmplayer='mplayer -vo fbdev'
@@ -3232,12 +3154,6 @@ check_com -c python && alias http="python -m SimpleHTTPServer"
# Use 'g' instead of 'git':
check_com g || alias g='git'
-# check whether Debian's package management (dpkg) is running
-if check_com salias ; then
- #a2# Check whether a dpkg instance is currently running
- salias check_dpkg_running="dpkg_running"
-fi
-
# work around non utf8 capable software in utf environment via $LANG and luit
if check_com isutfenv && check_com luit ; then
if check_com -c mrxvt ; then
@@ -3264,7 +3180,8 @@ fi
agoogle() { ${=BROWSER} "http://groups.google.com/groups?as_uauthors=$*" ; }
#f4# Search Debian Bug Tracking System
debbug() {
- setopt localoptions extendedglob
+ emulate -L zsh
+ setopt extendedglob
if [[ $# -eq 1 ]]; then
case "$1" in
([0-9]##)
@@ -3283,90 +3200,172 @@ debbug() {
fi
}
#f4# Search Debian Bug Tracking System in mbox format
-debbugm() { bts show --mbox $1 } # provide bugnummer as "$1"
+debbugm() {
+ emulate -L zsh
+ bts show --mbox $1
+}
#f4# Search DMOZ
-dmoz() { ${=BROWSER} http://search.dmoz.org/cgi-bin/search\?search=${1// /_} }
+dmoz() {
+ emulate -L zsh
+ ${=BROWSER} http://search.dmoz.org/cgi-bin/search\?search=${1// /_}
+}
#f4# Search German Wiktionary
-dwicti() { ${=BROWSER} http://de.wiktionary.org/wiki/${(C)1// /_} }
+dwicti() {
+ emulate -L zsh
+ ${=BROWSER} http://de.wiktionary.org/wiki/${(C)1// /_}
+}
#f4# Search English Wiktionary
-ewicti() { ${=BROWSER} http://en.wiktionary.org/wiki/${(C)1// /_} }
+ewicti() {
+ emulate -L zsh
+ ${=BROWSER} http://en.wiktionary.org/wiki/${(C)1// /_}
+}
#f4# Search Google Groups
-ggogle() { ${=BROWSER} "http://groups.google.com/groups?q=$*" }
+ggogle() {
+ emulate -L zsh
+ ${=BROWSER} "http://groups.google.com/groups?q=$*"
+}
#f4# Search Google
-google() { ${=BROWSER} "http://www.google.com/search?&num=100&q=$*" }
+google() {
+ emulate -L zsh
+ ${=BROWSER} "http://www.google.com/search?&num=100&q=$*"
+}
#f4# Search Google Groups for MsgID
-mggogle() { ${=BROWSER} "http://groups.google.com/groups?selm=$*" }
+mggogle() {
+ emulate -L zsh
+ ${=BROWSER} "http://groups.google.com/groups?selm=$*"
+}
#f4# Search Netcraft
-netcraft(){ ${=BROWSER} "http://toolbar.netcraft.com/site_report?url=$1" }
+netcraft(){
+ emulate -L zsh
+ ${=BROWSER} "http://toolbar.netcraft.com/site_report?url=$1"
+}
#f4# Use German Wikipedia's full text search
-swiki() { ${=BROWSER} http://de.wikipedia.org/wiki/Spezial:Search/${(C)1} }
+swiki() {
+ emulate -L zsh
+ ${=BROWSER} http://de.wikipedia.org/wiki/Spezial:Search/${(C)1}
+}
#f4# search \kbd{dict.leo.org}
-oleo() { ${=BROWSER} "http://dict.leo.org/?search=$*" }
+oleo() {
+ emulate -L zsh
+ ${=BROWSER} "http://dict.leo.org/?search=$*"
+}
#f4# Search German Wikipedia
-wikide() { ${=BROWSER} http://de.wikipedia.org/wiki/"${(C)*}" }
+wikide() {
+ emulate -L zsh
+ ${=BROWSER} http://de.wikipedia.org/wiki/"${(C)*}"
+}
#f4# Search English Wikipedia
-wikien() { ${=BROWSER} http://en.wikipedia.org/wiki/"${(C)*}" }
+wikien() {
+ emulate -L zsh
+ ${=BROWSER} http://en.wikipedia.org/wiki/"${(C)*}"
+}
#f4# Search official debs
-wodeb() { ${=BROWSER} "http://packages.debian.org/search?keywords=$1&searchon=contents&suite=${2:=unstable}§ion=all" }
+wodeb() {
+ emulate -L zsh
+ ${=BROWSER} "http://packages.debian.org/search?keywords=$1&searchon=contents&suite=${2:=unstable}§ion=all"
+}
#m# f4 gex() Exact search via Google
-check_com google && gex () { google "\"[ $1]\" $*" } # exact search at google
+check_com google && gex () {
+ google "\"[ $1]\" $*"
+}
# misc
#f5# Backup \kbd{file {\rm to} file\_timestamp}
-bk() { cp -b ${1} ${1}_`date --iso-8601=m` }
+bk() {
+ emulate -L zsh
+ cp -b $1 $1_`date --iso-8601=m`
+}
#f5# Copied diff
-cdiff() { diff -crd "$*" | egrep -v "^Only in |^Binary files " }
+cdiff() {
+ emulate -L zsh
+ diff -crd "$*" | egrep -v "^Only in |^Binary files "
+}
#f5# cd to directoy and list files
-cl() { cd $1 && ls -a } # cd && ls
+cl() {
+ emulate -L zsh
+ cd $1 && ls -a
+}
#f5# Cvs add
-cvsa() { cvs add $* && cvs com -m 'initial checkin' $* }
+cvsa() {
+ emulate -L zsh
+ cvs add $* && cvs com -m 'initial checkin' $*
+}
#f5# Cvs diff
-cvsd() { cvs diff -N $* |& $PAGER }
+cvsd() {
+ emulate -L zsh
+ cvs diff -N $* |& $PAGER
+}
#f5# Cvs log
-cvsl() { cvs log $* |& $PAGER }
+cvsl() {
+ emulate -L zsh
+ cvs log $* |& $PAGER
+}
#f5# Cvs update
-cvsq() { cvs -nq update }
+cvsq() {
+ emulate -L zsh
+ cvs -nq update
+}
#f5# Rcs2log
-cvsr() { rcs2log $* | $PAGER }
+cvsr() {
+ emulate -L zsh
+ rcs2log $* | $PAGER
+}
#f5# Cvs status
-cvss() { cvs status -v $* }
+cvss() {
+ emulate -L zsh
+ cvs status -v $*
+}
#f5# Disassemble source files using gcc and as
-disassemble(){ gcc -pipe -S -o - -O -g $* | as -aldh -o /dev/null }
+disassemble(){
+ emulate -L zsh
+ gcc -pipe -S -o - -O -g $* | as -aldh -o /dev/null
+}
#f5# Firefox remote control - open given URL
-fir() { firefox -a firefox -remote "openURL($1)" }
+fir() {
+ if [ -e /etc/debian_version ]; then
+ firefox -a iceweasel -remote "openURL($1)" || firefox ${1}&
+ else
+ firefox -a firefox -remote "openURL($1)" || firefox ${1}&
+ fi
+}
#f5# Create Directoy and \kbd{cd} to it
-mcd() { mkdir -p "$@"; cd "$@" } # mkdir && cd
+mcd() {
+ mkdir -p "$@" && cd "$@"
+}
#f5# Unified diff to timestamped outputfile
-mdiff() { diff -udrP "$1" "$2" > diff.`date "+%Y-%m-%d"`."$1" }
+mdiff() {
+ diff -udrP "$1" "$2" > diff.`date "+%Y-%m-%d"`."$1"
+}
#f5# Memory overview
-memusage(){ ps aux | awk '{if (NR > 1) print $5; if (NR > 2) print "+"} END { print "p" }' | dc }
-#f5# Show contents of tar file
-shtar() { gunzip -c $1 | tar -tf - -- | $PAGER }
-#f5# Show contents of tgz file
-shtgz() { tar -ztf $1 | $PAGER }
+memusage() {
+ ps aux | awk '{if (NR > 1) print $5; if (NR > 2) print "+"} END { print "p" }' | dc
+}
+#f5# Show contents of gzipped tar file
+shtar() {
+ emulate -L zsh
+ gunzip -c $1 | tar -tf - -- | $PAGER
+}
#f5# Show contents of zip file
-shzip() { unzip -l $1 | $PAGER }
-#f5# Greps signature from file
-sig() { agrep -d '^-- $' "$*" ~/.Signature }
+shzip() {
+ emulate -L zsh
+ unzip -l $1 | $PAGER
+}
#f5# Unified diff
-udiff() { diff -urd $* | egrep -v "^Only in |^Binary files " }
+udiff() {
+ emulate -L zsh
+ diff -urd $* | egrep -v "^Only in |^Binary files "
+}
#f5# (Mis)use \kbd{vim} as \kbd{less}
-viless() { vim --cmd 'let no_plugin_maps = 1' -c "so \$VIMRUNTIME/macros/less.vim" "${@:--}" }
-
-# download video from youtube
-ytdl() {
- if ! [[ -n "$2" ]] ; then
- print "Usage: ydtl http://youtube.com/watch?v=.... outputfile.flv">&2
- return 1
- else
- wget -O${2} "http://youtube.com/get_video?"${${${"$(wget -o/dev/null -O- "${1}" | grep -e watch_fullscreen)"}##*watch_fullscreen\?}%%\&fs=*}
- fi
+viless() {
+ emulate -L zsh
+ vim --cmd 'let no_plugin_maps = 1' -c "so \$VIMRUNTIME/macros/less.vim" "${@:--}"
}
# Function Usage: uopen $URL/$file
#f5# Download a file and display it locally
uopen() {
+ emulate -L zsh
if ! [[ -n "$1" ]] ; then
print "Usage: uopen \$URL/\$file">&2
return 1
@@ -3380,7 +3379,10 @@ uopen() {
# Function Usage: doc packagename
#f5# \kbd{cd} to /usr/share/doc/\textit{package}
-doc() { cd /usr/share/doc/$1 && ls }
+doc() {
+ emulate -L zsh
+ cd /usr/share/doc/$1 && ls
+}
_doc() { _files -W /usr/share/doc -/ }
check_com compdef && compdef _doc doc
@@ -3399,12 +3401,13 @@ limg() {
if [[ $#images -eq 0 ]] ; then
print "No image files found"
else
- ls "$@" "$images[@]"
+ ls "$images[@]"
fi
}
#f5# Create PDF file from source code
makereadable() {
+ emulate -L zsh
output=$1
shift
a2ps --medium A4dj -E -o $output $*
@@ -3415,16 +3418,23 @@ makereadable() {
# regcheck '\s\d\.\d{3}\.\d{3} Euro' ' 1.000.000 Euro'
#f5# Checks whether a regex matches or not.\\&\quad Example: \kbd{regcheck '.\{3\} EUR' '500 EUR'}
regcheck() {
+ emulate -L zsh
zmodload -i zsh/pcre
pcre_compile $1 && \
pcre_match $2 && echo "regex matches" || echo "regex does not match"
}
#f5# List files which have been modified within the last {\it n} days
-new() { print -l *(m-$1) }
+new() {
+ emulate -L zsh
+ print -l *(m-$1)
+}
#f5# Grep in history
-greph() { history 0 | grep $1 }
+greph() {
+ emulate -L zsh
+ history 0 | grep $1
+}
# use colors when GNU grep with color-support
#a2# Execute \kbd{grep -{}-color=auto}
(grep --help 2>/dev/null |grep -- --color) >/dev/null && alias grep='grep --color=auto'
@@ -3480,7 +3490,7 @@ purge() {
rm ${FILES}
echo ">> $PWD purged, $NBFILES files removed"
else
- echo "Ok. .. than not.."
+ echo "Ok. .. then not.."
fi
fi
}
@@ -3496,6 +3506,7 @@ purge() {
# /usr/local/lib/words/en-de.ISO-8859-1.vok > ~/.translate/de-en.ISO-8859-1.vok
#f5# Translates a word
trans() {
+ emulate -L zsh
case "$1" in
-[dD]*)
translate -l de-en $2
@@ -3512,6 +3523,7 @@ trans() {
#f5# List all occurrences of programm in current PATH
plap() {
+ emulate -L zsh
if [[ $# = 0 ]] ; then
echo "Usage: $0 program"
echo "Example: $0 zsh"
@@ -3540,11 +3552,15 @@ selhist() {
# Use vim to convert plaintext to HTML
#f5# Transform files to html with highlighting
-2html() { vim -u NONE -n -c ':syntax on' -c ':so $VIMRUNTIME/syntax/2html.vim' -c ':wqa' $1 &>/dev/null }
+2html() {
+ emulate -L zsh
+ vim -u NONE -n -c ':syntax on' -c ':so $VIMRUNTIME/syntax/2html.vim' -c ':wqa' $1 &>/dev/null
+}
# Usage: simple-extract
#f5# Smart archive extractor
simple-extract () {
+ emulate -L zsh
if [[ -f $1 ]] ; then
case $1 in
*.tar.bz2) bzip2 -v -d $1 ;;
@@ -3569,6 +3585,7 @@ simple-extract () {
# Usage: smartcompress ()
#f5# Smart archive creator
smartcompress() {
+ emulate -L zsh
if [[ -n $2 ]] ; then
case $2 in
tgz | tar.gz) tar -zcvf$1.$2 $1 ;;
@@ -3589,6 +3606,7 @@ smartcompress() {
# Usage: show-archive
#f5# List an archive's content
show-archive() {
+ emulate -L zsh
if [[ -f $1 ]] ; then
case $1 in
*.tar.gz) gunzip -c $1 | tar -tf - -- ;;
@@ -3606,11 +3624,15 @@ show-archive() {
# It's shameless stolen from
#f5# Use \kbd{vim} as your manpage reader
-vman() { man $* | col -b | view -c 'set ft=man nomod nolist' - }
+vman() {
+ emulate -L zsh
+ man $* | col -b | view -c 'set ft=man nomod nolist' -
+}
# function readme() { $PAGER -- (#ia3)readme* }
#f5# View all README-like files in current directory in pager
readme() {
+ emulate -L zsh
local files
files=(./(#i)*(read*me|lue*m(in|)ut)*(ND))
if (($#files)) ; then
@@ -3636,20 +3658,10 @@ ansi-colors() {
done
}
-# suidfind() { ls -latg $path | grep '^...s' }
#f5# Find all files in \$PATH with setuid bit set
-suidfind() { ls -latg $path/*(sN) }
-
-# See above but this is /better/ ... anywise ..
-findsuid() {
- print 'Output will be written to ~/suid_* ...'
- $SUDO find / -type f \( -perm -4000 -o -perm -2000 \) -ls > ~/suid_suidfiles.`date "+%Y-%m-%d"`.out 2>&1
- $SUDO find / -type d \( -perm -4000 -o -perm -2000 \) -ls > ~/suid_suiddirs.`date "+%Y-%m-%d"`.out 2>&1
- $SUDO find / -type f \( -perm -2 -o -perm -20 \) -ls > ~/suid_writefiles.`date "+%Y-%m-%d"`.out 2>&1
- $SUDO find / -type d \( -perm -2 -o -perm -20 \) -ls > ~/suid_writedirs.`date "+%Y-%m-%d"`.out 2>&1
- print 'Finished'
-}
+suidfind() { ls -latg $path | grep '^...s' }
+# TODO: So, this is the third incarnation of this function!?
#f5# Reload given functions
refunc() {
for func in $argv ; do
@@ -3662,8 +3674,9 @@ refunc() {
# stolen and modified from Sven's zshrc.forall
#f5# Report diskusage of a directory
dirspace() {
+ emulate -L zsh
if [[ -n "$1" ]] ; then
- for dir in $* ; do
+ for dir in "$@" ; do
if [[ -d "$dir" ]] ; then
( cd $dir; echo "-<$dir>"; du -shx .; echo);
else
@@ -3684,7 +3697,7 @@ dirspace() {
# % slow_print `cat /etc/passwd`
#f5# Slowly print out parameters
slow_print() {
- for argument in "${@}" ; do
+ for argument in "$@" ; do
for ((i = 1; i <= ${#1} ;i++)) ; do
print -n "${argument[i]}"
sleep 0.08
@@ -3696,14 +3709,14 @@ slow_print() {
#f5# Show some status info
status() {
- print ""
- print "Date..: "$(date "+%Y-%m-%d %H:%M:%S")""
+ print
+ print "Date..: "$(date "+%Y-%m-%d %H:%M:%S")
print "Shell.: Zsh $ZSH_VERSION (PID = $$, $SHLVL nests)"
- print "Term..: $TTY ($TERM), ${BAUD:+$BAUD bauds, }$COLUMNS x $LINES cars"
+ print "Term..: $TTY ($TERM), ${BAUD:+$BAUD bauds, }$COLUMNS x $LINES chars"
print "Login.: $LOGNAME (UID = $EUID) on $HOST"
print "System: $(cat /etc/[A-Za-z]*[_-][rv]e[lr]*)"
print "Uptime:$(uptime)"
- print ""
+ print
}
# Rip an audio CD
@@ -3744,6 +3757,7 @@ audioburn() {
#f5# Make an audio CD from all mp3 files
mkaudiocd() {
# TODO: do the renaming more zshish, possibly with zmv()
+ emulate -L zsh
cd ~/ripps
for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done
for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done
@@ -3754,6 +3768,7 @@ mkaudiocd() {
#f5# Create an ISO image. You are prompted for\\&\quad volume name, filename and directory
mkiso() {
+ emulate -L zsh
echo " * Volume name "
read volume
echo " * ISO Name (ie. tmp.iso)"
@@ -3794,19 +3809,21 @@ allulimit() {
# ogg2mp3 with bitrate of 192
ogg2mp3_192() {
- oggdec -o - ${1} | lame -b 192 - ${1:r}.mp3
+ emulate -L zsh
+ oggdec -o - $1 | lame -b 192 - ${1:r}.mp3
}
#f5# RFC 2396 URL encoding in Z-Shell
urlencode() {
- setopt localoptions extendedglob
+ emulate -L zsh
+ setopt extendedglob
input=( ${(s::)1} )
print ${(j::)input/(#b)([^A-Za-z0-9_.!~*\'\(\)-])/%${(l:2::0:)$(([##16]#match))}}
}
#f5# Install x-lite (VoIP software)
getxlite() {
- setopt local_options
+ emulate -L zsh
setopt errreturn
[[ -d ~/tmp ]] || mkdir ~/tmp
cd ~/tmp
@@ -3825,7 +3842,7 @@ getxlite() {
#f5# Install skype
getskype() {
- setopt local_options
+ emulate -L zsh
setopt errreturn
echo "Downloading debian package of skype."
echo "Notice: If you want to use a more recent skype version run 'getskypebeta'."
@@ -3835,7 +3852,7 @@ getskype() {
#f5# Install beta-version of skype
getskypebeta() {
- setopt local_options
+ emulate -L zsh
setopt errreturn
echo "Downloading debian package of skype (beta version)."
wget http://www.skype.com/go/getskype-linux-beta-deb
@@ -3844,7 +3861,7 @@ getskypebeta() {
#f5# Install gizmo (VoIP software)
getgizmo() {
- setopt local_options
+ emulate -L zsh
setopt errreturn
echo "libgtk2.0-0, gconf2, libstdc++6, libasound2 and zlib1g have to be available. Installing."
$SUDO apt-get update
@@ -3855,7 +3872,7 @@ getgizmo() {
#f5# Get and run AIR (Automated Image and Restore)
getair() {
- setopt local_options
+ emulate -L zsh
setopt errreturn
[[ -w . ]] || { echo 'Error: you do not have write permissions in this directory. Exiting.' ; return 1 }
local VER='1.2.8'
@@ -3868,6 +3885,7 @@ getair() {
#f5# Get specific git commitdiff
git-get-diff() {
+ emulate -L zsh
if [[ -z $GITTREE ]] ; then
GITTREE='linux/kernel/git/torvalds/linux-2.6.git'
fi
@@ -3880,6 +3898,7 @@ git-get-diff() {
#f5# Get specific git commit
git-get-commit() {
+ emulate -L zsh
if [[ -z $GITTREE ]] ; then
GITTREE='linux/kernel/git/torvalds/linux-2.6.git'
fi
@@ -3892,6 +3911,7 @@ git-get-commit() {
#f5# Get specific git diff
git-get-plaindiff () {
+ emulate -L zsh
if [[ -z $GITTREE ]] ; then
GITTREE='linux/kernel/git/torvalds/linux-2.6.git'
fi
@@ -3910,13 +3930,14 @@ git-get-plaindiff () {
# http://strcat.de/blog/index.php?/archives/335-Software-sauber-deinstallieren...html
#f5# Log 'make install' output
mmake() {
+ emulate -L zsh
[[ ! -d ~/.errorlogs ]] && mkdir ~/.errorlogs
make -n install > ~/.errorlogs/${PWD##*/}-makelog
}
#f5# Indent source code
smart-indent() {
- indent -npro -kr -i8 -ts8 -sob -l80 -ss -ncs $*
+ indent -npro -kr -i8 -ts8 -sob -l80 -ss -ncs "$@"
}
# highlight important stuff in diff output, usage example: hg diff | hidiff
@@ -3927,6 +3948,7 @@ check_com -c histring && \
# rename pictures based on information found in exif headers
#f5# Rename pictures based on information found in exif headers
exirename() {
+ emulate -L zsh
if [[ $# -lt 1 ]] ; then
echo 'Usage: jpgrename $FILES' >& 2
return 1
@@ -3945,6 +3967,7 @@ exirename() {
# open file in vim and jump to line
# http://www.downgra.de/archives/2007/05/08/T19_21_11/
j2v() {
+ emulate -L zsh
local -a params
params=(${*//(#m):[0-9]*:/\\n+${MATCH//:/}}) # replace ':23:' to '\n+23'
params=(${(s|\n|)${(j|\n|)params}}) # join array using '\n', then split on all '\n'
@@ -3953,6 +3976,7 @@ j2v() {
# get_ic() - queries imap servers for capabilities; real simple. no imaps
ic_get() {
+ emulate -L zsh
local port
if [[ ! -z $1 ]] ; then
port=${2:-143}
@@ -3965,6 +3989,7 @@ ic_get() {
# creates a Maildir/ with its {new,cur,tmp} subdirs
mkmaildir() {
+ emulate -L zsh
local root subdir
root=${MAILDIR_ROOT:-${HOME}/Mail}
if [[ -z ${1} ]] ; then print "Usage:\n $0 " ; return 1 ; fi
@@ -3974,7 +3999,8 @@ mkmaildir() {
#f5# Change the xterm title from within GNU-screen
xtrename() {
- if [[ ${1} != "-f" ]] ; then
+ emulate -L zsh
+ if [[ $1 != "-f" ]] ; then
if [[ -z ${DISPLAY} ]] ; then
printf 'xtrename only makes sense in X11.\n'
return 1
@@ -3982,7 +4008,7 @@ xtrename() {
else
shift
fi
- if [[ -z ${1} ]] ; then
+ if [[ -z $1 ]] ; then
printf 'usage: xtrename [-f] "title for xterm"\n'
printf ' renames the title of xterm from _within_ screen.\n'
printf ' also works without screen.\n'
@@ -3997,6 +4023,7 @@ xtrename() {
# http://ft.bewatermyfriend.org/comp/data/zsh/zfunct.html
if check_com -c highlight ; then
function hl() {
+ emulate -L zsh
local theme lang
theme=${HL_THEME:-""}
case ${1} in
@@ -4054,11 +4081,12 @@ fi
# Create small urls via http://tinyurl.com using wget(1).
function zurl() {
- [[ -z ${1} ]] && { print "USAGE: zurl " ; return 1 }
+ emulate -L zsh
+ [[ -z $1 ]] && { print "USAGE: zurl " ; return 1 }
local PN url tiny grabber search result preview
- PN=${0}
- url=${1}
+ PN=$0
+ url=$1
# Check existence of given URL with the help of ping(1).
# N.B. ping(1) only works without an eventual given protocol.
ping -c 1 ${${url#(ftp|http)://}%%/*} >& /dev/null || \
@@ -4090,6 +4118,7 @@ function zurl() {
#f2# Print a specific line of file(s).
linenr () {
# {{{
+ emulate -L zsh
if [ $# -lt 2 ] ; then
print "Usage: linenr [,] " ; return 1
elif [ $# -eq 2 ] ; then
@@ -4114,6 +4143,7 @@ linenr () {
#f2# Find history events by search pattern and list them by date.
whatwhen() {
# {{{
+ emulate -L zsh
local usage help ident format_l format_s first_char remain first last
usage='USAGE: whatwhen [options] '
help='Use' \`'whatwhen -h'\'' for further explanations.'
@@ -4162,6 +4192,7 @@ whatwhen() {
# change fluxbox keys from 'Alt-#' to 'Alt-F#' and vice versa
fluxkey-change() {
+ emulate -L zsh
[[ -n "$FLUXKEYS" ]] || local FLUXKEYS="$HOME/.fluxbox/keys"
if ! [[ -r "$FLUXKEYS" ]] ; then
echo "Sorry, \$FLUXKEYS file $FLUXKEYS could not be read - nothing to be done."
@@ -4183,6 +4214,7 @@ fluxkey-change() {
# retrieve weather information on the console
# Usage example: 'weather LOWG'
weather() {
+ emulate -L zsh
[[ -n "$1" ]] || {
print 'Usage: weather ' >&2
print 'List of stations: http://en.wikipedia.org/wiki/List_of_airports_by_ICAO_code'>&2
@@ -4226,6 +4258,7 @@ if check_com -c hg ; then
# http://www.selenic.com/mercurial/wiki/index.cgi/TipsAndTricks
#f5# GNU like diff for mercurial
hgdi() {
+ emulate -L zsh
for i in $(hg status -marn "$@") ; diff -ubwd <(hg cat "$i") "$i"
}
@@ -4241,12 +4274,13 @@ if check_com -c hg ; then
# hgstat 1234 => display diffstat between revision 1234 and tip
#f5# Diffstat for specific version of a mercurial repos
hgstat() {
+ emulate -L zsh
[[ -n "$1" ]] && hg diff -r $1 -r tip | diffstat || hg export tip | diffstat
}
#f5# Get current mercurial tip via hg itself
gethgclone() {
- setopt local_options
+ emulate -L zsh
setopt errreturn
if [[ -f mercurial-tree/.hg ]] ; then
cd mercurial-tree
@@ -4275,7 +4309,7 @@ fi # end of check whether we have the 'hg'-executable
# get current mercurial snapshot
#f5# Get current mercurial snapshot
gethgsnap() {
- setopt local_options
+ emulate -L zsh
setopt errreturn
if [[ -f mercurial-snapshot.tar.gz ]] ; then
echo "mercurial-snapshot.tar.gz exists already, skipping download."
@@ -4355,15 +4389,11 @@ if (( GRMLSMALL_SPECIFIC > 0 )) && isgrmlsmall ; then
unset abk[V]
unalias 'V' &> /dev/null
unfunction vman &> /dev/null
- unfunction vimpm &> /dev/null
- unfunction vimhelp &> /dev/null
unfunction viless &> /dev/null
unfunction 2html &> /dev/null
# manpages are not in grmlsmall
unfunction manzsh &> /dev/null
- unalias man2 &> /dev/null
- unalias man &> /dev/null
unfunction man2 &> /dev/null
fi