aboutsummaryrefslogtreecommitdiffstats
path: root/_zsh/40-functions.zsh
diff options
context:
space:
mode:
Diffstat (limited to '_zsh/40-functions.zsh')
-rw-r--r--_zsh/40-functions.zsh95
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: #