fi
# load .zshrc.pre to give the user the chance to overwrite the defaults
-[[ -r ${HOME}/.zshrc.pre ]] && source ${HOME}/.zshrc.pre
+[[ -r ${ZDOTDIR:-${HOME}}/.zshrc.pre ]] && source ${ZDOTDIR:-${HOME}}/.zshrc.pre
# check for version/system
# check for versions (compatibility reasons)
local -i ffound
ffile=$1
- (( found = 0 ))
+ (( ffound = 0 ))
for fdir in ${fpath} ; do
[[ -e ${fdir}/${ffile} ]] && (( ffound = 1 ))
done
# modifications in ~/.zshrc.local
zrclocal() {
xsource "/etc/zsh/zshrc.local"
- xsource "${HOME}/.zshrc.local"
+ xsource "${ZDOTDIR:-${HOME}}/.zshrc.local"
return 0
}
return 0
fi
- matched_chars='[.-|_a-zA-Z0-9]#'
- LBUFFER=${LBUFFER%%(#m)[.-|_a-zA-Z0-9]#}
+ LBUFFER=${LBUFFER%%(#m)[.\-+:|_a-zA-Z0-9]#}
LBUFFER+=${abk[$MATCH]:-$MATCH}
}
# history
-ZSHDIR=$HOME/.zsh
+ZSHDIR=${ZDOTDIR:-${HOME}/.zsh}
#v#
-HISTFILE=$HOME/.zsh_history
+HISTFILE=${ZDOTDIR:-${HOME}}/.zsh_history
isgrmlcd && HISTSIZE=500 || HISTSIZE=5000
isgrmlcd && SAVEHIST=1000 || SAVEHIST=10000 # useful for setopt append_history
# dirstack handling
DIRSTACKSIZE=${DIRSTACKSIZE:-20}
-DIRSTACKFILE=${DIRSTACKFILE:-${HOME}/.zdirs}
+DIRSTACKFILE=${DIRSTACKFILE:-${ZDOTDIR:-${HOME}}/.zdirs}
if [[ -f ${DIRSTACKFILE} ]] && [[ ${#dirstack[*]} -eq 0 ]] ; then
dirstack=( ${(f)"$(< $DIRSTACKFILE)"} )
MAGENTA="%{${fg[magenta]}%}"
YELLOW="%{${fg[yellow]}%}"
WHITE="%{${fg[white]}%}"
- NO_COLOUR="%{${reset_color}%}"
+ NO_COLOR="%{${reset_color}%}"
else
BLUE=$'%{\e[1;34m%}'
RED=$'%{\e[1;31m%}'
WHITE=$'%{\e[1;37m%}'
MAGENTA=$'%{\e[1;35m%}'
YELLOW=$'%{\e[1;33m%}'
- NO_COLOUR=$'%{\e[0m%}'
+ NO_COLOR=$'%{\e[0m%}'
fi
# gather version control information for inclusion in a prompt
zstyle ':vcs_info:*' actionformats "(%s%)-[%b|%a] " "zsh: %r"
zstyle ':vcs_info:*' formats "(%s%)-[%b] " "zsh: %r"
else
- # these are the same, just with a lot of colours:
- zstyle ':vcs_info:*' actionformats "${MAGENTA}(${NO_COLOUR}%s${MAGENTA})${YELLOW}-${MAGENTA}[${GREEN}%b${YELLOW}|${RED}%a${MAGENTA}]${NO_COLOUR} " \
+ # these are the same, just with a lot of colors:
+ zstyle ':vcs_info:*' actionformats "${MAGENTA}(${NO_COLOR}%s${MAGENTA})${YELLOW}-${MAGENTA}[${GREEN}%b${YELLOW}|${RED}%a${MAGENTA}]${NO_COLOR} " \
"zsh: %r"
- zstyle ':vcs_info:*' formats "${MAGENTA}(${NO_COLOUR}%s${MAGENTA})${YELLOW}-${MAGENTA}[${GREEN}%b${MAGENTA}]${NO_COLOUR}%} " \
+ zstyle ':vcs_info:*' formats "${MAGENTA}(${NO_COLOR}%s${MAGENTA})${YELLOW}-${MAGENTA}[${GREEN}%b${MAGENTA}]${NO_COLOR}%} " \
"zsh: %r"
zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat "%b${RED}:${YELLOW}%r"
fi
# 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_COLOR}@%m %40<...<%B%~%b%<< "
else
# This assembles the primary prompt string
if (( EUID != 0 )); then
- PROMPT="${RED}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< "
+ PROMPT="${RED}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}${BLUE}%n${NO_COLOR}@%m %40<...<%B%~%b%<< "
else
- PROMPT="${BLUE}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}${RED}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< "
+ PROMPT="${BLUE}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}${RED}%n${NO_COLOR}@%m %40<...<%B%~%b%<< "
fi
fi
fi
$(hostname)
"$_ssh_hosts[@]"
"$_etc_hosts[@]"
- grml.org
localhost
)
zstyle ':completion:*:hosts' hosts $hosts
_dnews() { _files -W /usr/share/doc -/ }
compdef _dnews dnews
+ #f1# View Debian's copyright of a given package
+ dcopyright() {
+ emulate -L zsh
+ if [[ -r /usr/share/doc/$1/copyright ]] ; then
+ $PAGER /usr/share/doc/$1/copyright
+ else
+ echo "No copyright file for package $1 found, sorry."
+ return 1
+ fi
+ }
+ _dcopyright() { _files -W /usr/share/doc -/ }
+ compdef _dcopyright dcopyright
+
#f1# View upstream's changelog of a given package
uchange() {
emulate -L zsh
# API reference: https://code.google.com/apis/urlshortener/
function zurl() {
emulate -L zsh
+ setopt extended_glob
+
if [[ -z $1 ]]; then
print "USAGE: zurl <URL>"
return 1
fi
- local PN url prog api json data
+ local PN url prog api json contenttype item
+ local -a data
PN=$0
url=$1
api='https://www.googleapis.com/urlshortener/v1/url'
contenttype="Content-Type: application/json"
json="{\"longUrl\": \"${url}\"}"
- data=$($prog --silent -H ${contenttype} -d ${json} $api)
- # Match against a regex and print it
- if [[ $data =~ '"id": "(http://goo.gl/[[:alnum:]]+)"' ]]; then
- print $match;
- fi
+ data=(${(f)"$($prog --silent -H ${contenttype} -d ${json} $api)"})
+ # Parse the response
+ for item in "${data[@]}"; do
+ case "$item" in
+ ' '#'"id":'*)
+ item=${item#*: \"}
+ item=${item%\",*}
+ printf '%s\n' "$item"
+ return 0
+ ;;
+ esac
+ done
+ return 1
}
#f2# Find history events by search pattern and list them by date.