--- /dev/null
+# Author: Copyright © 2005 Eric P. Mangold - teratorn (-at-) gmail (-dot) com
+# License: MIT. http://www.opensource.org/licenses/mit-license.html
+# http://zshwiki.org/home/examples/functions
+
+local old_dirs current_dirs lower
+lower=${(L)1}
+old_dirs=( *(N/) )
+if [[ $lower == *.tar.gz || $lower == *.tgz ]]; then
+ tar zxfv $1
+elif [[ $lower == *.gz ]]; then
+ gunzip $1
+elif [[ $lower == *.tar.bz2 || $lower == *.tbz ]]; then
+ bunzip2 -c $1 | tar xfv -
+elif [[ $lower == *.bz2 ]]; then
+ bunzip2 $1
+elif [[ $lower == *.zip ]]; then
+ unzip $1
+elif [[ $lower == *.rar ]]; then
+ unrar e $1
+elif [[ $lower == *.tar ]]; then
+ tar xfv $1
+elif [[ $lower == *.lha ]]; then
+ lha e $1
+else
+ print "Unknown archive type: $1"
+ return 1
+fi
+# Change in to the newly created directory, and
+# list the directory contents, if there is one.
+current_dirs=( *(N/) )
+for i in {1..${#current_dirs}}; do
+ if [[ $current_dirs[$i] != $old_dirs[$i] ]]; then
+ cd $current_dirs[$i]
+ ls
+ break
+ fi
+done
+
+#compdef '_files -g "*.gz *.tgz *.bz2 *.tbz *.zip *.rar *.tar *.lha"' extract_archive
la -l $*
}
+# Set correct fpath to allow loading my functions (including completion
+# functions).
+fpath=(~/.zsh/functions $fpath)
+# Autoload my functions (except completion functions). Thanks to caphuso from
+# the Zsh example files for this idea.
+autoload ${fpath[1]}/^_*(:t)
+
# If ^C is pressed while typing a command, add it to the history so it can be
# easily retrieved later and then abort like ^C normally does. This is useful
# when I want to abort an command to do something in between and then finish