summary refs log tree commit diff
path: root/.zsh
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.zsh/aliases.zsh58
-rw-r--r--.zsh/gitprompt.zsh80
-rw-r--r--.zsh/title.zsh30
m---------.zsh/z0
m---------.zsh/zsh-syntax-highlighting0
-rw-r--r--.zshrc67
6 files changed, 235 insertions, 0 deletions
diff --git a/.zsh/aliases.zsh b/.zsh/aliases.zsh
new file mode 100644
index 00000000..98bbae18
--- /dev/null
+++ b/.zsh/aliases.zsh
@@ -0,0 +1,58 @@
+function reload {
+  source ~/.zshrc
+  rehash
+}
+
+function mkcd {
+  mkdir $@
+  if [ "$1" = "-p" ]; then
+    cd $2
+  else
+    cd $1
+  fi
+}
+
+function home.programble.me {
+  ssh -R 8071:localhost:$1 quartz
+}
+
+
+alias killlall='killall'
+alias irb='ripl'
+alias l='ls'
+alias ll='ls'
+
+alias ls='ls --color=auto'
+alias grep='grep --color=auto'
+alias rm='rm -vI'
+
+alias gvim='gvim 2> /dev/null'
+
+alias sprunge='curl -F "sprunge=<-" http://sprunge.us'
+
+if which hub &> /dev/null; then
+  compdef hub=git
+  alias git=hub
+fi
+
+alias g=git
+alias ga='git add'
+alias gb='git branch'
+alias gc='git commit'
+alias gcl='git clone'
+alias gco='git checkout'
+alias gd='git diff'
+alias gi='git init'
+alias gl='git log'
+alias glg="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative --color"
+alias gm='git merge'
+alias gmv='git mv'
+alias gp='git push'
+alias gpom='git pull origin master'
+alias gr='git remote'
+alias grm='git rm'
+alias gs='git status -sb'
+alias gsh='git show'
+alias gst='git stash'
+alias gt='git tag'
+alias gu='git pull'
diff --git a/.zsh/gitprompt.zsh b/.zsh/gitprompt.zsh
new file mode 100644
index 00000000..433481b9
--- /dev/null
+++ b/.zsh/gitprompt.zsh
@@ -0,0 +1,80 @@
+# Ported from http://sebastiancelis.com/2009/11/16/zsh-prompt-git-users/
+
+function _gitprompt_update {
+  unset _git_branch
+  unset _git_status
+  unset _git_dirty
+
+  local st="$(git status 2> /dev/null)"
+  if [[ -n "$st" ]]; then
+    local -a arr
+    arr=(${(f)st})
+
+    if [[ $arr[1] =~ 'Not currently on any branch.' ]]; then
+      _git_branch='none'
+    else
+      _git_branch="${arr[1][(w)-1]}"
+    fi
+
+    if [[ $arr[2] =~ 'Your branch is' ]]; then
+      if [[ $arr[2] =~ 'ahead' ]]; then
+        _git_status='ahead'
+      elif [[ $arr[2] =~ 'diverged' ]]; then
+        _git_status='diverged'
+      else
+        _git_status='behind'
+      fi
+    fi
+
+    if [[ ! $st =~ 'nothing' ]]; then
+      _git_dirty=1
+    fi
+  fi
+}
+
+function gitprompt {
+  if [[ -n "$_git_branch" ]]; then
+    local s
+    [[ -z "$1" ]] && s="%{${fg[yellow]}%}"
+
+    if [[ -n "$_git_dirty" ]]; then
+      s+="⚡"
+    else
+      s+=":"
+    fi
+
+    s+="$_git_branch"
+    case "$_git_status" in
+      ahead)
+        s+="↑"
+        ;;
+      diverged)
+        s+="↕"
+        ;;
+      behind)
+        s+="↓"
+        ;;
+    esac
+
+    echo "$s"
+  fi
+}
+
+function _gitprompt_preexec {
+  [[ "$1" =~ "^g" ]] && _git_command=1
+}
+
+function _gitprompt_precmd {
+  if [[ -n "$_git_command" ]]; then
+    _gitprompt_update
+    unset _git_command
+  fi
+}
+
+typeset -ga preexec_functions
+typeset -ga precmd_functions
+typeset -ga chpwd_functions
+
+preexec_functions+='_gitprompt_preexec'
+precmd_functions+='_gitprompt_precmd'
+chpwd_functions+='_gitprompt_update'
diff --git a/.zsh/title.zsh b/.zsh/title.zsh
new file mode 100644
index 00000000..0307b57c
--- /dev/null
+++ b/.zsh/title.zsh
@@ -0,0 +1,30 @@
+function _title {
+  print -Pn "\033]0;$@\a"
+}
+
+function title {
+  if [[ -n "$1" ]]; then
+    _title_custom=1
+    _title $@
+  else
+    unset _title_custom
+    _title_precmd
+  fi
+}
+
+function _title_preexec {
+  [[ -z "$_title_custom" ]] && _title "$1"
+}
+
+unset _title_host
+[[ -n "$SSH_CLIENT" ]] && _title_host='%m:'
+
+function _title_precmd {
+  [[ -z "$_title_custom" ]] && _title '$_title_host%1~'
+}
+
+typeset -ga preexec_functions
+typeset -ga precmd_functions
+
+preexec_functions+='_title_preexec'
+precmd_functions+='_title_precmd'
diff --git a/.zsh/z b/.zsh/z
new file mode 160000
+Subproject dfd4308ae84da481f774b3f5e732ee277d9d876
diff --git a/.zsh/zsh-syntax-highlighting b/.zsh/zsh-syntax-highlighting
new file mode 160000
+Subproject e5d8a50d362a153a28506be6fae9cf179dbb5fd
diff --git a/.zshrc b/.zshrc
new file mode 100644
index 00000000..36fa2e01
--- /dev/null
+++ b/.zshrc
@@ -0,0 +1,67 @@
+HISTFILE=~/.histfile
+HISTSIZE=5000
+SAVEHIST=5000
+setopt appendhistory autocd extendedglob nomatch notify autopushd
+setopt interactive_comments prompt_subst
+unsetopt beep
+bindkey -v
+
+# Completion
+zstyle ':completion:*' completer _expand _complete _ignored _correct _approximate _prefix
+zstyle ':completion:*' max-errors 2
+zstyle :compinstall filename '/home/curtis/.zshrc'
+
+autoload -Uz compinit
+compinit
+
+# Colors
+autoload colors zsh/terminfo
+colors
+
+[[ -n "$COLORTERM" ]] && export TERM='xterm-256color'
+
+# Libs
+
+source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
+ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets)
+ZSH_HIGHLIGHT_STYLES[builtin]='none'
+ZSH_HIGHLIGHT_STYLES[command]='bold'
+ZSH_HIGHLIGHT_STYLES[precommand]='fg=yellow,bold'
+ZSH_HIGHLIGHT_STYLES[alias]='fg=magenta,bold'
+ZSH_HIGHLIGHT_STYLES[function]='fg=magenta,bold'
+ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='bold'
+ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='bold'
+ZSH_HIGHLIGHT_STYLES[globbing]='fg=blue,bold'
+ZSH_HIGHLIGHT_STYLES[path]='none'
+ZSH_HIGHLIGHT_STYLES[history-expansion]='fg=blue,bold'
+ZSH_HIGHLIGHT_STYLES[back-quoted-argument]='fg=cyan,bold'
+ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]='fg=cyan,bold'
+ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]='fg=cyan,bold'
+
+source ~/.zsh/z/z.sh
+
+if [[ -d /usr/share/chruby ]]; then
+  source /usr/share/chruby/chruby.sh
+  source /usr/share/chruby/auto.sh
+  chruby 'ruby-2.0.0'
+fi
+
+[[ -s ~/.nvm/nvm.sh ]] && source ~/.nvm/nvm.sh
+
+[[ -f /usr/local/heroku ]] && export PATH="/usr/local/heroku/bin:$PATH"
+
+source ~/.zsh/gitprompt.zsh
+source ~/.zsh/title.zsh
+
+source ~/.zsh/aliases.zsh
+
+# Environment
+
+EDITOR=vim
+
+# Prompt
+
+unset _prompt_host
+[[ -n "$SSH_CLIENT" ]] && _prompt_host="%{$fg[magenta]%}%m:"
+PROMPT=$'%{$terminfo[bold]$fg[green]%}[$_prompt_host%{$fg[blue]%}%30<..<%~$(gitprompt)%{$fg[green]%}]%(!.#.$)%{$terminfo[sgr0]$reset_color%} '
+RPROMPT="%(?..%{$terminfo[bold]$fg[green]%}[%{$fg[red]%}%?%{$fg[green]%}]%{$terminfo[sgr0]%})"