diff options
author | Aaron LI <aaronly.me@gmail.com> | 2016-04-30 15:13:55 +0800 |
---|---|---|
committer | Aaron LI <aaronly.me@gmail.com> | 2016-04-30 15:13:55 +0800 |
commit | c381c0c531a78ff4b1a1907c10da4ff54a112f0a (patch) | |
tree | b194beb791c36b31fd1f3333d2f20f07462fe516 /_zsh/40-functions.zsh | |
parent | 3d6f015f851398d0ce1e509cd6fd88e74c7626f6 (diff) | |
download | dotfiles-c381c0c531a78ff4b1a1907c10da4ff54a112f0a.tar.bz2 |
_zsh: simplify initialization; order by perfix
Diffstat (limited to '_zsh/40-functions.zsh')
-rw-r--r-- | _zsh/40-functions.zsh | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/_zsh/40-functions.zsh b/_zsh/40-functions.zsh new file mode 100644 index 0000000..46da01c --- /dev/null +++ b/_zsh/40-functions.zsh @@ -0,0 +1,95 @@ +# +# zsh/functions.zsh +# +# execute 'functions <func_name>' to show function details. +# + +function zsh_recompile() { + autoload -U zrecompile + rm -f ~/.zsh/*.zwc + [[ -f ~/.zshrc ]] && zrecompile -p ~/.zshrc + [[ -f ~/.zshrc.zwc.old ]] && rm -f ~/.zshrc.zwc.old + + for f in ~/.zsh/**/*.zsh; do + [[ -f $f ]] && zrecompile -p $f + [[ -f $f.zwc.old ]] && rm -f $f.zwc.old + done + + [[ -f ~/.zcompdump ]] && zrecompile -p ~/.zcompdump + [[ -f ~/.zcompdump.zwc.old ]] && rm -f ~/.zcompdump.zwc.old + + source ~/.zshrc +} + + +function extract() { + echo Extracting $1 ... + if [ -f "$1" ] ; then + case "$1" in + *.tar.bz2) + tar xjf "$1";; + *.tar.gz) + tar xzf "$1";; + *.bz2) + bunzip2 "$1";; + *.rar) + unrar x "$1";; + *.gz) + gunzip "$1";; + *.tar) + tar xf "$1";; + *.tbz2) + tar xjf "$1";; + *.tgz) + tar xzf "$1";; + *.zip) + unzip "$1";; + *.Z) + uncompress "$1";; + *.7z) + 7z x "$1";; + *) + echo "'$1' cannot be extracted via extract()" ;; + esac + else + echo "'$1' is not a valid file" + fi +} + + +function trash() { + local path + for path in "$@"; do + # ignore any arguments + if [[ "${path}" = -* ]]; then + : + else + local dst="${path##*/}" + # append the time if necessary + while [ -e ~/.trash/"${dst}" ]; do + dst="${dst} "$(date +%H-%M-%S) + done + command mv "${path}" ~/.trash/"${dst}" + fi + done +} + + +function strip_diff_leading_symbols() { + local color_code_regex="(\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K])" + + # simplify the unified patch diff header + sed -r "s/^($color_code_regex)diff --git .*$//g" | \ + sed -r "s/^($color_code_regex)index .*$/\n\1$(rule)/g" | \ + sed -r "s/^($color_code_regex)\+\+\+(.*)$/\1+++\5\n\1$(rule)\x1B\[m/g" |\ + # actually strips the leading symbols + sed -r "s/^($color_code_regex)[\+\-]/\1 /g" +} + + +## Print a horizontal rule +function rule() { + printf "%$(tput cols)s\n" | tr ' ' '-' +} + +# vim: set ts=8 sw=4 tw=0 fenc=utf-8 ft=zsh: # |