diff --git a/zlogin b/zlogin new file mode 100644 index 0000000000..77fe66773b --- /dev/null +++ b/zlogin @@ -0,0 +1,21 @@ +# adds the current branch name in green +git_prompt_info() { + ref=$(git symbolic-ref HEAD 2> /dev/null) + if [[ -n $ref ]]; then + echo "[%{$fg_bold[green]%}${ref#refs/heads/}%{$reset_color%}]" + fi +} + +# makes color constants available +autoload -U colors +colors + +# enable colored output from ls, etc +export CLICOLOR=1 + +# expand functions in the prompt +setopt prompt_subst + +# prompt +export PS1='$(git_prompt_info)[${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[blue]%}%~%{$reset_color%}] ' + diff --git a/zsh/completion/_bundler b/zsh/completion/_bundler new file mode 100644 index 0000000000..767e55982b --- /dev/null +++ b/zsh/completion/_bundler @@ -0,0 +1,69 @@ +#compdef bundle + +local curcontext="$curcontext" state line _gems _opts ret=1 + +_arguments -C -A "-v" -A "--version" \ + '(- 1 *)'{-v,--version}'[display version information]' \ + '1: :->cmds' \ + '*:: :->args' && ret=0 + +case $state in + cmds) + _values "bundle command" \ + "install[Install the gems specified by the Gemfile or Gemfile.lock]" \ + "update[Update dependencies to their latest versions]" \ + "package[Package the .gem files required by your application]" \ + "exec[Execute a script in the context of the current bundle]" \ + "config[Specify and read configuration options for bundler]" \ + "check[Determine whether the requirements for your application are installed]" \ + "list[Show all of the gems in the current bundle]" \ + "show[Show the source location of a particular gem in the bundle]" \ + "console[Start an IRB session in the context of the current bundle]" \ + "open[Open an installed gem in the editor]" \ + "viz[Generate a visual representation of your dependencies]" \ + "init[Generate a simple Gemfile, placed in the current directory]" \ + "gem[Create a simple gem, suitable for development with bundler]" \ + "help[Describe available tasks or one specific task]" + ret=0 + ;; + args) + case $line[1] in + help) + _values 'commands' 'install update package exec config check list show console open viz init gem help' && ret=0 + ;; + install) + _arguments \ + '(--no-color)--no-color[disable colorization in output]' \ + '(--local)--local[do not attempt to connect to rubygems.org]' \ + '(--quiet)--quiet[only output warnings and errors]' \ + '(--gemfile)--gemfile=-[use the specified gemfile instead of Gemfile]:gemfile' \ + '(--system)--system[install to the system location]' \ + '(--deployment)--deployment[install using defaults tuned for deployment environments]' \ + '(--frozen)--frozen[do not allow the Gemfile.lock to be updated after this install]' \ + '(--path)--path=-[specify a different path than the system default]:path:_files' \ + '(--binstubs)--binstubs=-[generate bin stubs for bundled gems to ./bin]:directory:_files' \ + '(--without)--without=-[exclude gems that are part of the specified named group]:groups' + ret=0 + ;; + exec) + _normal && ret=0 + ;; + (open|show) + _gems=( $(bundle show 2> /dev/null | sed -e '/^ \*/!d; s/^ \* \([^ ]*\) .*/\1/') ) + if [[ $_gems != "" ]]; then + _values 'gems' $_gems && ret=0 + fi + ;; + *) + _opts=( $(bundle help $line[1] | sed -e '/^ \[-/!d; s/^ \[\(-[^=]*\)=.*/\1/') ) + _opts+=( $(bundle help $line[1] | sed -e '/^ -/!d; s/^ \(-.\), \[\(-[^=]*\)=.*/\1 \2/') ) + if [[ $_opts != "" ]]; then + _values 'options' $_opts && ret=0 + fi + ;; + esac + ;; +esac + +return ret + diff --git a/zsh/completion/_cucumber b/zsh/completion/_cucumber new file mode 100644 index 0000000000..49c6415756 --- /dev/null +++ b/zsh/completion/_cucumber @@ -0,0 +1,3 @@ +#compdef cucumber + +compadd -P features/ -S .feature `ls features/**/*.feature | sed -E "s/features\/|\.feature//g"` diff --git a/zsh/completion/_rspec b/zsh/completion/_rspec new file mode 100644 index 0000000000..dec4733c66 --- /dev/null +++ b/zsh/completion/_rspec @@ -0,0 +1,3 @@ +#compdef rspec + +compadd -P spec/ -S _spec.rb `ls spec/**/*_spec.rb | sed -E "s/spec\/|_spec\.rb//g"` diff --git a/zshrc b/zshrc new file mode 100644 index 0000000000..806aaea315 --- /dev/null +++ b/zshrc @@ -0,0 +1,40 @@ +# load our own completion functions +fpath=(~/.zsh/completion $fpath) + +# completion +autoload -U compinit +compinit + +# automatically enter directories without cd +setopt auto_cd + +# use vim as an editor +export EDITOR=vim + +# aliases +if [ -e "$HOME/.aliases" ]; then + source "$HOME/.aliases" +fi + +# vi mode +bindkey -v +bindkey ^F vi-cmd-mode + +# use incremental search +bindkey ^R history-incremental-search-backward + +# expand functions in the prompt +setopt prompt_subst + +# prompt +export PS1='[${SSH_CONNECTION+"%n@%m:"}%~] ' + +# ignore duplicate history entries +setopt histignoredups + +# keep more history +export HISTSIZE=200 + +# look for ey config in project dirs +export EYRC=./.eyrc +