summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/django/django.plugin.zsh222
-rw-r--r--plugins/extract/_extract8
-rw-r--r--plugins/extract/extract.plugin.zsh85
-rw-r--r--plugins/git/git.plugin.zsh4
-rw-r--r--plugins/kate/kate.plugin.zsh9
-rw-r--r--plugins/osx/_man-preview5
-rw-r--r--plugins/osx/osx.plugin.zsh134
7 files changed, 418 insertions, 49 deletions
diff --git a/plugins/django/django.plugin.zsh b/plugins/django/django.plugin.zsh
new file mode 100644
index 000000000..1d72a2f2c
--- /dev/null
+++ b/plugins/django/django.plugin.zsh
@@ -0,0 +1,222 @@
+#compdef manage.py
+
+typeset -ga nul_args
+nul_args=(
+ '--settings=-[the Python path to a settings module.]:file:_files'
+ '--pythonpath=-[a directory to add to the Python path.]::directory:_directories'
+ '--traceback[print traceback on exception.]'
+ "--version[show program's version number and exit.]"
+ {-h,--help}'[show this help message and exit.]'
+)
+
+_managepy-adminindex(){
+ _arguments -s : \
+ $nul_args \
+ '*::directory:_directories' && ret=0
+}
+
+_managepy-createcachetable(){
+ _arguments -s : \
+ $nul_args && ret=0
+}
+
+_managepy-dbshell(){
+ _arguments -s : \
+ $nul_args && ret=0
+}
+
+_managepy-diffsettings(){
+ _arguments -s : \
+ $nul_args && ret=0
+}
+
+_managepy-dumpdata(){
+ _arguments -s : \
+ '--format=-[specifies the output serialization format for fixtures.]:format:(json yaml xml)' \
+ '--indent=-[specifies the indent level to use when pretty-printing output.]:' \
+ $nul_args \
+ '*::appname:_applist' && ret=0
+}
+
+_managepy-flush(){
+ _arguments -s : \
+ '--verbosity=-[verbosity level; 0=minimal output, 1=normal output, 2=all output.]:Verbosity:((0\:minimal 1\:normal 2\:all))' \
+ '--noinput[tells Django to NOT prompt the user for input of any kind.]' \
+ $nul_args && ret=0
+}
+
+_managepy-help(){
+ _arguments -s : \
+ '*:command:_managepy_cmds' \
+ $nul_args && ret=0
+}
+
+_managepy_cmds(){
+ local line
+ local -a cmd
+ _call_program help-command ./manage.py help \
+ |& sed -n '/^ /s/[(), ]/ /gp' \
+ | while read -A line; do cmd=($line $cmd) done
+ _describe -t managepy-command 'manage.py command' cmd
+}
+
+_managepy-inspectdb(){
+ _arguments -s : \
+ $nul_args && ret=0
+}
+
+_managepy-loaddata(){
+ _arguments -s : \
+ '--verbosity=-[verbosity level; 0=minimal output, 1=normal output, 2=all output.]:Verbosity:((0\:minimal 1\:normal 2\:all))' \
+ '*::file:_files' \
+ $nul_args && ret=0
+}
+
+_managepy-reset(){
+ _arguments -s : \
+ '--noinput[tells Django to NOT prompt the user for input of any kind.]' \
+ '*::appname:_applist' \
+ $nul_args && ret=0
+}
+
+_managepy-runfcgi(){
+ local state
+
+ local fcgi_opts
+ fcgi_opts=(
+ 'protocol[fcgi, scgi, ajp, ... (default fcgi)]:protocol:(fcgi scgi ajp)'
+ 'host[hostname to listen on..]:'
+ 'port[port to listen on.]:'
+ 'socket[UNIX socket to listen on.]::file:_files'
+ 'method[prefork or threaded (default prefork)]:method:(prefork threaded)'
+ 'maxrequests[number of requests a child handles before it is killed and a new child is forked (0 = no limit).]:'
+ 'maxspare[max number of spare processes / threads.]:'
+ 'minspare[min number of spare processes / threads.]:'
+ 'maxchildren[hard limit number of processes / threads.]:'
+ 'daemonize[whether to detach from terminal.]:boolean:(False True)'
+ 'pidfile[write the spawned process-id to this file.]:file:_files'
+ 'workdir[change to this directory when daemonizing.]:directory:_files'
+ 'outlog[write stdout to this file.]:file:_files'
+ 'errlog[write stderr to this file.]:file:_files'
+ )
+
+ _arguments -s : \
+ $nul_args \
+ '*: :_values "FCGI Setting" $fcgi_opts' && ret=0
+}
+
+_managepy-runserver(){
+ _arguments -s : \
+ '--noreload[tells Django to NOT use the auto-reloader.]' \
+ '--adminmedia[specifies the directory from which to serve admin media.]:directory:_files' \
+ $nul_args && ret=0
+}
+
+_managepy-shell(){
+ _arguments -s : \
+ '--plain[tells Django to use plain Python, not IPython.]' \
+ $nul_args && ret=0
+}
+
+_managepy-sql(){}
+_managepy-sqlall(){}
+_managepy-sqlclear(){}
+_managepy-sqlcustom(){}
+_managepy-sqlflush(){}
+_managepy-sqlindexes(){}
+_managepy-sqlinitialdata(){}
+_managepy-sqlreset(){}
+_managepy-sqlsequencereset(){}
+_managepy-startapp(){}
+
+_managepy-syncdb() {
+ _arguments -s : \
+ '--verbosity=-[verbosity level; 0=minimal output, 1=normal output, 2=all output.]:Verbosity:((0\:minimal 1\:normal 2\:all))' \
+ '--noinput[tells Django to NOT prompt the user for input of any kind.]' \
+ $nul_args && ret=0
+}
+
+_managepy-test() {
+ _arguments -s : \
+ '--verbosity=-[verbosity level; 0=minimal output, 1=normal output, 2=all output.]:Verbosity:((0\:minimal 1\:normal 2\:all))' \
+ '--noinput[tells Django to NOT prompt the user for input of any kind.]' \
+ '*::appname:_applist' \
+ $nul_args && ret=0
+}
+
+_managepy-testserver() {
+ _arguments -s : \
+ '--verbosity=-[verbosity level; 0=minimal output, 1=normal output, 2=all output.]:Verbosity:((0\:minimal 1\:normal 2\:all))' \
+ '--addrport=-[port number or ipaddr:port to run the server on.]' \
+ '*::fixture:_files' \
+ $nul_args && ret=0
+}
+
+_managepy-validate() {
+ _arguments -s : \
+ $nul_args && ret=0
+}
+
+_managepy-commands() {
+ local -a commands
+
+ commands=(
+ 'adminindex:prints the admin-index template snippet for the given app name(s).'
+ 'createcachetable:creates the table needed to use the SQL cache backend.'
+ 'dbshell:runs the command-line client for the current DATABASE_ENGINE.'
+ "diffsettings:displays differences between the current settings.py and Django's default settings."
+ 'dumpdata:Output the contents of the database as a fixture of the given format.'
+ 'flush:Executes ``sqlflush`` on the current database.'
+ 'help:manage.py help.'
+ 'inspectdb:Introspects the database tables in the given database and outputs a Django model module.'
+ 'loaddata:Installs the named fixture(s) in the database.'
+ 'reset:Executes ``sqlreset`` for the given app(s) in the current database.'
+ 'runfcgi:Run this project as a fastcgi (or some other protocol supported by flup) application,'
+ 'runserver:Starts a lightweight Web server for development.'
+ 'shell:Runs a Python interactive interpreter.'
+ 'sql:Prints the CREATE TABLE SQL statements for the given app name(s).'
+ 'sqlall:Prints the CREATE TABLE, custom SQL and CREATE INDEX SQL statements for the given model module name(s).'
+ 'sqlclear:Prints the DROP TABLE SQL statements for the given app name(s).'
+ 'sqlcustom:Prints the custom table modifying SQL statements for the given app name(s).'
+ 'sqlflush:Returns a list of the SQL statements required to return all tables in the database to the state they were in just after they were installed.'
+ 'sqlindexes:Prints the CREATE INDEX SQL statements for the given model module name(s).'
+ "sqlinitialdata:RENAMED: see 'sqlcustom'"
+ 'sqlreset:Prints the DROP TABLE SQL, then the CREATE TABLE SQL, for the given app name(s).'
+ 'sqlsequencereset:Prints the SQL statements for resetting sequences for the given app name(s).'
+ "startapp:Creates a Django app directory structure for the given app name in this project's directory."
+ "syncdb:Create the database tables for all apps in INSTALLED_APPS whose tables haven't already been created."
+ 'test:Runs the test suite for the specified applications, or the entire site if no apps are specified.'
+ 'testserver:Runs a development server with data from the given fixture(s).'
+ 'validate:Validates all installed models.'
+ )
+
+ _describe -t commands 'manage.py command' commands && ret=0
+}
+
+_applist() {
+ local line
+ local -a apps
+ _call_program help-command "python -c \"import os.path as op, re, django.conf, sys;\\
+ bn=op.basename(op.abspath(op.curdir));[sys\\
+ .stdout.write(str(re.sub(r'^%s\.(.*?)$' %
+ bn, r'\1', i)) + '\n') for i in django.conf.settings.\\
+ INSTALLED_APPS if re.match(r'^%s' % bn, i)]\"" \
+ | while read -A line; do apps=($line $apps) done
+ _values 'Application' $apps && ret=0
+}
+
+_managepy() {
+ local curcontext=$curcontext ret=1
+
+ if ((CURRENT == 2)); then
+ _managepy-commands
+ else
+ shift words
+ (( CURRENT -- ))
+ curcontext="${curcontext%:*:*}:managepy-$words[1]:"
+ _call_function ret _managepy-$words[1]
+ fi
+}
+
+compdef _managepy manage.py
+compdef _managepy django
diff --git a/plugins/extract/_extract b/plugins/extract/_extract
new file mode 100644
index 000000000..dca890954
--- /dev/null
+++ b/plugins/extract/_extract
@@ -0,0 +1,8 @@
+#compdef extract
+#autoload
+
+_arguments \
+ '(-r --remove)'{-r,--remove}'[Remove archive.]' \
+ "*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|rar|7z|deb)(-.)'" && return 0
+
+
diff --git a/plugins/extract/extract.plugin.zsh b/plugins/extract/extract.plugin.zsh
new file mode 100644
index 000000000..8cc17f7d4
--- /dev/null
+++ b/plugins/extract/extract.plugin.zsh
@@ -0,0 +1,85 @@
+# ------------------------------------------------------------------------------
+# FILE: extract.plugin.zsh
+# DESCRIPTION: oh-my-zsh plugin file.
+# AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com)
+# VERSION: 1.0.1
+# ------------------------------------------------------------------------------
+
+
+function extract() {
+ local remove_archive
+ local success
+ local file_name
+ local extract_dir
+
+ if (( $# == 0 )); then
+ echo "Usage: extract [-option] [file ...]"
+ echo
+ echo Options:
+ echo " -r, --remove Remove archive."
+ echo
+ echo "Report bugs to <sorin.ionescu@gmail.com>."
+ fi
+
+ remove_archive=1
+ if [[ "$1" == "-r" ]] || [[ "$1" == "--remove" ]]; then
+ remove_archive=0
+ shift
+ fi
+
+ while (( $# > 0 )); do
+ if [[ ! -f "$1" ]]; then
+ echo "extract: '$1' is not a valid file" 1>&2
+ shift
+ continue
+ fi
+
+ success=0
+ file_name="$( basename "$1" )"
+ extract_dir="$( echo "$file_name" | sed "s/\.${1##*.}//g" )"
+ case "$1" in
+ (*.tar.gz|*.tgz) tar xvzf "$1" ;;
+ (*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;;
+ (*.tar.xz|*.txz) tar --xz --help &> /dev/null \
+ && tar --xz -xvf "$1" \
+ || xzcat "$1" | tar xvf - ;;
+ (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
+ && tar --lzma -xvf "$1" \
+ || lzcat "$1" | tar xvf - ;;
+ (*.tar) tar xvf "$1" ;;
+ (*.gz) gunzip "$1" ;;
+ (*.bz2) bunzip2 "$1" ;;
+ (*.xz) unxz "$1" ;;
+ (*.lzma) unlzma "$1" ;;
+ (*.Z) uncompress "$1" ;;
+ (*.zip) unzip "$1" -d $extract_dir ;;
+ (*.rar) unrar e -ad "$1" ;;
+ (*.7z) 7za x "$1" ;;
+ (*.deb)
+ mkdir -p "$extract_dir/control"
+ mkdir -p "$extract_dir/data"
+ cd "$extract_dir"; ar vx "../${1}" > /dev/null
+ cd control; tar xzvf ../control.tar.gz
+ cd ../data; tar xzvf ../data.tar.gz
+ cd ..; rm *.tar.gz debian-binary
+ cd ..
+ ;;
+ (*)
+ echo "extract: '$1' cannot be extracted" 1>&2
+ success=1
+ ;;
+ esac
+
+ (( success = $success > 0 ? $success : $? ))
+ (( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1"
+ shift
+ done
+}
+
+alias x=extract
+
+# add extract completion function to path
+fpath=($ZSH/plugins/extract $fpath)
+autoload -U compinit
+compinit -i
+
diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh
index bc340e86b..5132b639a 100644
--- a/plugins/git/git.plugin.zsh
+++ b/plugins/git/git.plugin.zsh
@@ -27,11 +27,15 @@ alias gcp='git cherry-pick'
compdef _git gcp=git-cherry-pick
alias glg='git log --stat --max-count=5'
compdef _git glg=git-log
+alias glgg='git log --graph --max-count=5'
+compdef _git glgg=git-log
# Git and svn mix
alias git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk'
compdef git-svn-dcommit-push=git
+alias gsr='git svn rebase'
+alias gsd='git svn dcommit'
#
# Will return the current branch name
# Usage example: git pull origin $(current_branch)
diff --git a/plugins/kate/kate.plugin.zsh b/plugins/kate/kate.plugin.zsh
new file mode 100644
index 000000000..eb16522ac
--- /dev/null
+++ b/plugins/kate/kate.plugin.zsh
@@ -0,0 +1,9 @@
+
+# Kate
+# Start kate always silent
+alias kate='kate >/dev/null 2>&1'
+
+function kt () {
+ cd $1
+ kate $1
+} \ No newline at end of file
diff --git a/plugins/osx/_man-preview b/plugins/osx/_man-preview
new file mode 100644
index 000000000..6cc344ad4
--- /dev/null
+++ b/plugins/osx/_man-preview
@@ -0,0 +1,5 @@
+#compdef man-preview
+#autoload
+
+_man
+
diff --git a/plugins/osx/osx.plugin.zsh b/plugins/osx/osx.plugin.zsh
index a65ca642a..682bb2667 100644
--- a/plugins/osx/osx.plugin.zsh
+++ b/plugins/osx/osx.plugin.zsh
@@ -1,63 +1,99 @@
-alias showfiles='defaults write com.apple.finder AppleShowAllFiles TRUE; killall Finder'
-alias hidefiles='defaults write com.apple.finder AppleShowAllFiles FALSE; killall Finder'
+# ------------------------------------------------------------------------------
+# FILE: osx.plugin.zsh
+# DESCRIPTION: oh-my-zsh plugin file.
+# AUTHOR: Sorin Ionescu (sorin.ionescu@gmail.com)
+# VERSION: 1.0.1
+# ------------------------------------------------------------------------------
-# Recursively delete .DS_Store files
-alias rm-dsstore="find . -name '*.DS_Store' -type f -delete"
-
-function savepath() {
- pwd > ~/.current_path~
-}
function tab() {
-savepath
-osascript >/dev/null <<EOF
-on do_submenu(app_name, menu_name, menu_item, submenu_item)
- -- bring the target application to the front
- tell application app_name
- activate
- end tell
- tell application "System Events"
- tell process app_name
- tell menu bar 1
- tell menu bar item menu_name
- tell menu menu_name
- tell menu item menu_item
- tell menu menu_item
- click menu item submenu_item
- end tell
- end tell
- end tell
- end tell
- end tell
+ local command="cd \\\"$PWD\\\""
+ (( $# > 0 )) && command="${command}; $*"
+
+ the_app=$(
+ osascript 2>/dev/null <<EOF
+ tell application "System Events"
+ name of first item of (every process whose frontmost is true)
end tell
- end tell
-end do_submenu
+EOF
+ )
-do_submenu("Terminal", "Shell", "New Tab", 1)
+ [[ "$the_app" == 'Terminal' ]] && {
+ osascript 2>/dev/null <<EOF
+ tell application "System Events"
+ tell process "Terminal" to keystroke "t" using command down
+ tell application "Terminal" to do script "${command}" in front window
+ end tell
EOF
-}
+ }
-function itab() {
-savepath
-osascript >/dev/null <<EOF
-on do_submenu(app_name, menu_name, menu_item)
- -- bring the target application to the front
- tell application app_name
- activate
- end tell
- tell application "System Events"
- tell process app_name
- tell menu bar 1
- tell menu bar item menu_name
- tell menu menu_name
- click menu item menu_item
- end tell
+ [[ "$the_app" == 'iTerm' ]] && {
+ osascript 2>/dev/null <<EOF
+ tell application "iTerm"
+ set current_terminal to current terminal
+ tell current_terminal
+ launch session "Default Session"
+ set current_session to current session
+ tell current_session
+ write text "${command}"
end tell
end tell
end tell
+EOF
+ }
+}
+
+function pfd() {
+ osascript 2>/dev/null <<EOF
+ tell application "Finder"
+ return POSIX path of (target of window 1 as alias)
end tell
-end do_submenu
+EOF
+}
-do_submenu("iTerm", "Shell", "New Tab")
+function pfs() {
+ osascript 2>/dev/null <<EOF
+ set output to ""
+ tell application "Finder" to set the_selection to selection
+ set item_count to count the_selection
+ repeat with item_index from 1 to count the_selection
+ if item_index is less than item_count then set the_delimiter to "\n"
+ if item_index is item_count then set the_delimiter to ""
+ set output to output & ((item item_index of the_selection as alias)'s POSIX path) & the_delimiter
+ end repeat
EOF
}
+
+function cdf() {
+ cd "$(pfd)"
+}
+
+function pushdf() {
+ pushd "$(pfd)"
+}
+
+function quick-look() {
+ (( $# > 0 )) && qlmanage -p $* &>/dev/null &
+}
+
+function man-preview() {
+ man -t "$@" | open -f -a Preview
+}
+
+function trash() {
+ local trash_dir="${HOME}/.Trash"
+ local temp_ifs=$IFS
+ IFS=$'\n'
+ for item in "$@"; do
+ if [[ -e "$item" ]]; then
+ item_name="$(basename $item)"
+ if [[ -e "${trash_dir}/${item_name}" ]]; then
+ mv -f "$item" "${trash_dir}/${item_name} $(date "+%H-%M-%S")"
+ else
+ mv -f "$item" "${trash_dir}/"
+ fi
+ fi
+ done
+ IFS=$temp_ifs
+}
+