diff options
-rw-r--r-- | lib/aliases.zsh | 3 | ||||
-rw-r--r-- | lib/directories.zsh | 5 | ||||
-rw-r--r-- | lib/git.zsh | 19 | ||||
-rw-r--r-- | plugins/archlinux/archlinux.plugin.zsh | 20 | ||||
-rw-r--r-- | plugins/battery/battery.plugin.zsh | 83 | ||||
-rw-r--r-- | plugins/cap/cap.plugin.zsh | 41 | ||||
-rw-r--r-- | plugins/capistrano/_capistrano | 10 | ||||
-rw-r--r-- | plugins/command-not-found/command-not-found.plugin.zsh | 2 | ||||
-rw-r--r-- | plugins/git/git.plugin.zsh | 3 | ||||
-rw-r--r-- | plugins/rsync/rsync.plugin.zsh | 4 | ||||
-rw-r--r-- | plugins/vagrant/_vagrant | 7 | ||||
-rw-r--r-- | templates/zshrc.zsh-template | 6 | ||||
-rw-r--r-- | themes/adben.zsh-theme | 26 | ||||
-rw-r--r-- | themes/candy-kingdom.zsh-theme | 37 | ||||
-rw-r--r-- | themes/gentoo.zsh-theme | 6 | ||||
-rw-r--r-- | themes/intheloop.zsh-theme | 24 |
16 files changed, 226 insertions, 70 deletions
diff --git a/lib/aliases.zsh b/lib/aliases.zsh index 0555be264..14f6ad289 100644 --- a/lib/aliases.zsh +++ b/lib/aliases.zsh @@ -16,8 +16,9 @@ alias history='fc -l 1' # List direcory contents alias lsa='ls -lah' -alias l='ls -la' +alias l='ls -lA1' alias ll='ls -l' +alias la='ls -lA' alias sl=ls # often screw this up alias afind='ack-grep -il' diff --git a/lib/directories.zsh b/lib/directories.zsh index a787db9eb..e445eb84c 100644 --- a/lib/directories.zsh +++ b/lib/directories.zsh @@ -37,8 +37,3 @@ cd () { alias md='mkdir -p' alias rd=rmdir alias d='dirs -v | head -10' - -# mkdir & cd to it -function mcd() { - mkdir -p "$1" && cd "$1"; -} diff --git a/lib/git.zsh b/lib/git.zsh index fb4ad8ca6..258b1df8f 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -18,6 +18,25 @@ parse_git_dirty() { fi } +# get the difference between the local and remote branches +git_remote_status() { + remote=${$(git rev-parse --verify ${hook_com[branch]}@{upstream} --symbolic-full-name 2>/dev/null)/refs\/remotes\/} + if [[ -n ${remote} ]] ; then + ahead=$(git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l) + behind=$(git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l) + + if [ $ahead -eq 0 ] && [ $behind -gt 0 ] + then + echo "$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE" + elif [ $ahead -gt 0 ] && [ $behind -eq 0 ] + then + echo "$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE" + elif [ $ahead -gt 0 ] && [ $behind -gt 0 ] + then + echo "$ZSH_THEME_GIT_PROMPT_DIVERGED_REMOTE" + fi + fi +} # Checks if there are commits ahead from remote function git_prompt_ahead() { diff --git a/plugins/archlinux/archlinux.plugin.zsh b/plugins/archlinux/archlinux.plugin.zsh index 294dc5354..ae92a0b4c 100644 --- a/plugins/archlinux/archlinux.plugin.zsh +++ b/plugins/archlinux/archlinux.plugin.zsh @@ -11,7 +11,7 @@ if [[ -x `which yaourt` ]]; then alias yaupg='yaourt -Syu' # Synchronize with repositories before upgrading packages that are out of date on the local system. alias yasu='yaourt --sucre' # Same as yaupg, but without confirmation alias yain='yaourt -S' # Install specific package(s) from the repositories - alias yains='yaourt -U' # Install specific package not from the repositories but from a file + alias yains='yaourt -U' # Install specific package not from the repositories but from a file alias yare='yaourt -R' # Remove the specified package(s), retaining its configuration(s) and required dependencies alias yarem='yaourt -Rns' # Remove the specified package(s), its configuration(s) and unneeded dependencies alias yarep='yaourt -Si' # Display information about a given package in the repositories @@ -35,7 +35,7 @@ fi # Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips alias pacupg='sudo pacman -Syu' # Synchronize with repositories before upgrading packages that are out of date on the local system. alias pacin='sudo pacman -S' # Install specific package(s) from the repositories -alias pacins='sudo pacman -U' # Install specific package not from the repositories but from a file +alias pacins='sudo pacman -U' # Install specific package not from the repositories but from a file alias pacre='sudo pacman -R' # Remove the specified package(s), retaining its configuration(s) and required dependencies alias pacrem='sudo pacman -Rns' # Remove the specified package(s), its configuration(s) and unneeded dependencies alias pacrep='pacman -Si' # Display information about a given package in the repositories @@ -75,3 +75,19 @@ pacdisowned() { comm -23 "$fs" "$db" } + +pacmanallkeys() { + # Get all keys for developers and trusted users + curl https://www.archlinux.org/{developers,trustedusers}/ | + awk -F\" '(/pgp.mit.edu/) {sub(/.*search=0x/,"");print $1}' | + xargs sudo pacman-key --recv-keys +} + +pacmansignkeys() { + for key in $*; do + sudo pacman-key --recv-keys $key + sudo pacman-key --lsign-key $key + printf 'trust\n3\n' | sudo gpg --homedir /etc/pacman.d/gnupg \ + --no-permission-warning --command-fd 0 --edit-key $key + done +} diff --git a/plugins/battery/battery.plugin.zsh b/plugins/battery/battery.plugin.zsh index bc75c5cf9..9f404088a 100644 --- a/plugins/battery/battery.plugin.zsh +++ b/plugins/battery/battery.plugin.zsh @@ -1,20 +1,71 @@ -if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then - function battery_pct_remaining() { echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')" } - function battery_time_remaining() { echo $(acpi | cut -f3 -d ',') } - function battery_pct_prompt() { - b=$(battery_pct_remaining) - if [ $b -gt 50 ] ; then - color='green' - elif [ $b -gt 20 ] ; then - color='yellow' +########################################### +# Battery plugin for oh-my-zsh # +# Original Author: Peter hoeg (peterhoeg) # +# Email: peter@speartail.com # +########################################### +# Author: Sean Jones (neuralsandwich) # +# Email: neuralsandwich@gmail.com # +# Modified to add support for Apple Mac # +########################################### + +if [[ $(uname) -eq "Darwin" ]] ; then + + function battery_pct_remaining() { + if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then + typeset -F maxcapacity=$(ioreg -rc "AppleSmartBattery"| grep '^.*"MaxCapacity"\ =\ ' | sed -e 's/^.*"MaxCapacity"\ =\ //') + typeset -F currentcapacity=$(ioreg -rc "AppleSmartBattery"| grep '^.*"CurrentCapacity"\ =\ ' | sed -e 's/^.*CurrentCapacity"\ =\ //') + integer i=$(((currentcapacity/maxcapacity) * 100)) + echo $i else - color='red' + echo "External Power" fi - echo "%{$fg[$color]%}[$(battery_pct_remaining)%%]%{$reset_color%}" } -else - error_msg='no battery' - function battery_pct_remaining() { echo $error_msg } - function battery_time_remaining() { echo $error_msg } - function battery_pct_prompt() { echo '' } + + function battery_time_remaining() { + if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then + timeremaining=$(ioreg -rc "AppleSmartBattery"| grep '^.*"AvgTimeToEmpty"\ =\ ' | sed -e 's/^.*"AvgTimeToEmpty"\ =\ //') + echo "~$((timeremaining / 60)):$((timeremaining % 60))" + else + echo "∞" + fi + } + + function battery_pct_prompt () { + if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then + b=$(battery_pct_remaining) + if [ $b -gt 50 ] ; then + color='green' + elif [ $b -gt 20 ] ; then + color='yellow' + else + color='red' + fi + echo "%{$fg[$color]%}[$(battery_pct_remaining)%%]%{$reset_color%}" + else + echo "" + fi + } + +elif [[ $(uname) -eq "Linux" ]] ; then + + if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then + function battery_pct_remaining() { echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')" } + function battery_time_remaining() { echo $(acpi | cut -f3 -d ',') } + function battery_pct_prompt() { + b=$(battery_pct_remaining) + if [ $b -gt 50 ] ; then + color='green' + elif [ $b -gt 20 ] ; then + color='yellow' + else + color='red' + fi + echo "%{$fg[$color]%}[$(battery_pct_remaining)%%]%{$reset_color%}" + } + else + error_msg='no battery' + function battery_pct_remaining() { echo $error_msg } + function battery_time_remaining() { echo $error_msg } + function battery_pct_prompt() { echo '' } + fi fi diff --git a/plugins/cap/cap.plugin.zsh b/plugins/cap/cap.plugin.zsh deleted file mode 100644 index d22d10401..000000000 --- a/plugins/cap/cap.plugin.zsh +++ /dev/null @@ -1,41 +0,0 @@ -stat -f%m . > /dev/null 2>&1 -if [ "$?" = 0 ]; then - stat_cmd=(stat -f%m) -else - stat_cmd=(stat -L --format=%y) -fi - -# Cache filename -_cap_show_undescribed_tasks=0 - -# Cache filename -_cap_task_cache_file='.cap_task_cache' - -_cap_get_task_list () { - if [ ${_cap_show_undescribed_tasks} -eq 0 ]; then - cap -T | grep '^cap' | cut -d " " -f 2 - else - cap -vT | grep '^cap' | cut -d " " -f 2 - fi -} - -_cap_does_task_list_need_generating () { - - if [ ! -f ${_cap_task_cache_file} ]; then return 0; - else - accurate=$($stat_cmd $_cap_task_cache_file) - changed=$($stat_cmd config/deploy.rb) - return $(expr $accurate '>=' $changed) - fi -} - -function _cap () { - if [ -f config/deploy.rb ]; then - if _cap_does_task_list_need_generating; then - _cap_get_task_list > ${_cap_task_cache_file} - fi - compadd `cat ${_cap_task_cache_file}` - fi -} - -compdef _cap cap diff --git a/plugins/capistrano/_capistrano b/plugins/capistrano/_capistrano new file mode 100644 index 000000000..cf6b50c7f --- /dev/null +++ b/plugins/capistrano/_capistrano @@ -0,0 +1,10 @@ +#compdef cap +#autoload + +if [ -f config/deploy.rb ]; then + if [[ ! -f .cap_tasks~ || config/deploy.rb -nt .cap_tasks~ ]]; then + echo "\nGenerating .cap_tasks~..." > /dev/stderr + cap --tasks | grep '#' | cut -d " " -f 2 > .cap_tasks~ + fi + compadd `cat .cap_tasks~` +fi diff --git a/plugins/command-not-found/command-not-found.plugin.zsh b/plugins/command-not-found/command-not-found.plugin.zsh index 5ab03d5a9..567da1b45 100644 --- a/plugins/command-not-found/command-not-found.plugin.zsh +++ b/plugins/command-not-found/command-not-found.plugin.zsh @@ -2,4 +2,4 @@ # as seen in http://www.porcheron.info/command-not-found-for-zsh/ # this is installed in Ubuntu -source /etc/zsh_command_not_found +[[ -e /etc/zsh_command_not_found ]] && source /etc/zsh_command_not_found diff --git a/plugins/git/git.plugin.zsh b/plugins/git/git.plugin.zsh index 14ae78d41..0a19e0c1c 100644 --- a/plugins/git/git.plugin.zsh +++ b/plugins/git/git.plugin.zsh @@ -39,11 +39,14 @@ compdef _git gm=git-merge alias grh='git reset HEAD' alias grhh='git reset HEAD --hard' alias gwc='git whatchanged -p --abbrev-commit --pretty=medium' +alias gf='git ls-files | grep' # Will cd into the top of the current repository # or submodule. alias grt='cd $(git rev-parse --show-toplevel || echo ".")' + + # Git and svn mix alias git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk' compdef git-svn-dcommit-push=git diff --git a/plugins/rsync/rsync.plugin.zsh b/plugins/rsync/rsync.plugin.zsh new file mode 100644 index 000000000..33a31a5c1 --- /dev/null +++ b/plugins/rsync/rsync.plugin.zsh @@ -0,0 +1,4 @@ +alias rsync-copy="rsync -av --progress -h" +alias rsync-move="rsync -av --progress -h --remove-source-files" +alias rsync-update="rsync -avu --progress -h" +alias rsync-synchronize="rsync -avu --delete --progress -h" diff --git a/plugins/vagrant/_vagrant b/plugins/vagrant/_vagrant index 483b29c53..9bed1e3c6 100644 --- a/plugins/vagrant/_vagrant +++ b/plugins/vagrant/_vagrant @@ -46,6 +46,11 @@ __box_list () _wanted application expl 'command' compadd $(command ls -1 $HOME/.vagrant/boxes 2>/dev/null| sed -e 's/ /\\ /g') } +__vm_list () +{ + _wanted application expl 'command' compadd $(command grep Vagrantfile -oe '^[^#]*\.vm\.define *:\([a-zA-Z0-9]\+\)' 2>/dev/null | cut -d: -f2) +} + __vagrant-box () { local curcontext="$curcontext" state line @@ -99,6 +104,8 @@ case $state in (box) __vagrant-box ;; + (up|provision|package|destroy|reload|ssh|halt|resume|status) + _arguments ':feature:__vm_list' esac ;; esac diff --git a/templates/zshrc.zsh-template b/templates/zshrc.zsh-template index 758fc26b8..2ea9934af 100644 --- a/templates/zshrc.zsh-template +++ b/templates/zshrc.zsh-template @@ -14,11 +14,11 @@ ZSH_THEME="robbyrussell" # Set to this to use case-sensitive completion # CASE_SENSITIVE="true" -# Comment this out to disable weekly auto-update checks +# Comment this out to disable bi-weekly auto-update checks # DISABLE_AUTO_UPDATE="true" -# Change this value to set how frequently ZSH updates¬ -export UPDATE_ZSH_DAYS=13 +# Uncomment to change how many often would you like to wait before auto-updates occur? (in days) +# export UPDATE_ZSH_DAYS=13 # Uncomment following line if you want to disable colors in ls # DISABLE_LS_COLORS="true" diff --git a/themes/adben.zsh-theme b/themes/adben.zsh-theme new file mode 100644 index 000000000..9f777e847 --- /dev/null +++ b/themes/adben.zsh-theme @@ -0,0 +1,26 @@ +#!/usr/bin/env zsh +local USER_HOST='%{$terminfo[bold]$fg[yellow]%}%n@%m%{$reset_color%}' +local RETURN_CODE="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" +local GIT_BRANCH='%{$terminfo[bold]$fg[red]%}$(git_prompt_info)%{$reset_color%}' +local CURRENT_DIR='%{$terminfo[bold]$fg[green]%} %~%{$reset_color%}' +local RUBY_RVM='%{$fg[gray]%}‹$(rvm-prompt i v g)›%{$reset_color%}' +local COMMAND_TIP='%{$terminfo[bold]$fg[blue]%}$(wget -qO - http://www.commandlinefu.com/commands/random/plaintext | sed 1d | sed '/^$/d' | sed 's/^/║/g')%{$reset_color%}' +######### PROMPT ######### +PROMPT="%{$terminfo[bold]$fg[blue]%}╔═ %{$reset_color%}${USER_HOST} ${CURRENT_DIR} ${RUBY_RVM} ${GIT_BRANCH} +${COMMAND_TIP} +%{$terminfo[bold]$fg[blue]%}╚═ %{$reset_color%}%B%{$terminfo[bold]$fg[white]%}$%b%{$reset_color%} " +RPS1='${RETURN_CODE}' +RPROMPT='%{$fg[green]%}[%*]%{$reset_color%}' +######### PROMPT ######### +########## GIT ########### +ZSH_THEME_GIT_PROMPT_PREFIX="‹" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$GIT_PROMPT_INFO%}›" +ZSH_THEME_GIT_PROMPT_DIRTY=" %{$GIT_DIRTY_COLOR%}✘" +ZSH_THEME_GIT_PROMPT_CLEAN=" %{$GIT_CLEAN_COLOR%}✔" +ZSH_THEME_GIT_PROMPT_ADDED="%{$FG[082]%}✚%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_MODIFIED="%{$FG[166]%}✹%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_DELETED="%{$FG[160]%}✖%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_RENAMED="%{$FG[220]%}➜%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_UNMERGED="%{$FG[082]%}═%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$FG[190]%}✭%{$reset_color%}" +########## GIT ########### diff --git a/themes/candy-kingdom.zsh-theme b/themes/candy-kingdom.zsh-theme new file mode 100644 index 000000000..25aeb6597 --- /dev/null +++ b/themes/candy-kingdom.zsh-theme @@ -0,0 +1,37 @@ +# neuralsanwich.zsh-theme +# +# Author: Sean Jones +# URL: http://www.neuralsandwich.com +# Repo: +# Direct link: +# Create: +# Modified: + +if [ "x$OH_MY_ZSH_HG" = "x" ]; then + OH_MY_ZSH_HG="hg" +fi + +function hg_prompt_info { + $OH_MY_ZSH_HG prompt --angle-brackets "\ +< on %{$fg[magenta]%}<branch>%{$reset_color%}>\ +< at %{$fg[yellow]%}<tags|%{$reset_color%}, %{$fg[yellow]%}>%{$reset_color%}>\ +%{$fg[green]%}<status|modified|unknown><update>%{$reset_color%}< +patches: <patches|join( → )|pre_applied(%{$fg[yellow]%})|post_applied(%{$reset_color%})|pre_unapplied(%{$fg_bold[black]%})|post_unapplied(%{$reset_color%})>>" 2>/dev/null +} + +function box_name { + [ -f ~/.box-name ] && cat ~/.box-name || hostname -s +} + +PROMPT=' +%{$fg[magenta]%}%n%{$reset_color%}@%{$fg[yellow]%}$(box_name)%{$reset_color%}:%{$fg_bold[green]%}${PWD/#$HOME/~}%{$reset_color%}$(hg_prompt_info)$(git_prompt_info) +%(?,,%{${fg_bold[white]}%}[%?]%{$reset_color%} )$ ' + +ZSH_THEME_GIT_PROMPT_PREFIX=" (%{$fg[magenta]%}branch: " +ZSH_THEME_GIT_PROMPT_CLEAN="" +ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[red]%}?" +ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[orange]%}!" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%})" + +local return_status="%{$fg[red]%}%(?..✘)%{$reset_color%}" +RPROMPT='${return_status}$(battery_time_remaining) $(battery_pct_prompt)%{$reset_color%}' diff --git a/themes/gentoo.zsh-theme b/themes/gentoo.zsh-theme index cba143d42..ee205d248 100644 --- a/themes/gentoo.zsh-theme +++ b/themes/gentoo.zsh-theme @@ -1,4 +1,8 @@ -PROMPT='%(!.%{$fg_bold[red]%}.%{$fg_bold[green]%}%n@)%m %{$fg_bold[blue]%}%(!.%1~.%~) $(git_prompt_info)%#%{$reset_color%} ' +function prompt_char { + if [ $UID -eq 0 ]; then echo "#"; else echo $; fi +} + +PROMPT='%(!.%{$fg_bold[red]%}.%{$fg_bold[green]%}%n@)%m %{$fg_bold[blue]%}%(!.%1~.%~) $(git_prompt_info)%_$(prompt_char)%{$reset_color%} ' ZSH_THEME_GIT_PROMPT_PREFIX="(" ZSH_THEME_GIT_PROMPT_SUFFIX=") " diff --git a/themes/intheloop.zsh-theme b/themes/intheloop.zsh-theme new file mode 100644 index 000000000..85b4a4d95 --- /dev/null +++ b/themes/intheloop.zsh-theme @@ -0,0 +1,24 @@ +# ZSH theme by James Smith (http://loopj.com) +# A multiline prompt with username, hostname, full path, return status, git branch, git dirty status, git remote status + +local return_status="%{$fg[red]%}%(?..⏎)%{$reset_color%}" + +local host_color="green" +if [ -n "$SSH_CLIENT" ]; then + local host_color="red" +fi + +PROMPT=' +%{$fg_bold[grey]%}[%{$reset_color%}%{$fg_bold[${host_color}]%}%n@%m%{$reset_color%}%{$fg_bold[grey]%}]%{$reset_color%} %{$fg_bold[blue]%}%10c%{$reset_color%} $(git_prompt_info) $(git_remote_status) +%{$fg_bold[cyan]%}❯%{$reset_color%} ' + + +RPROMPT='${return_status}%{$reset_color%}' + +ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[grey]%}(%{$fg[red]%}" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[grey]%}) %{$fg[yellow]%}⚡%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[grey]%})" +ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE="%{$fg_bold[magenta]%}↓%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE="%{$fg_bold[magenta]%}↑%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_DIVERGED_REMOTE="%{$fg_bold[magenta]%}↕%{$reset_color%}"
\ No newline at end of file |