From 91ebf6e21fa15d52dbca9ff09ec67338d3987f0a Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 29 Mar 2014 17:56:33 -0400 Subject: [PATCH] Clean up zsh rcfiles + add py|rbenv init * Made PATH initializing smarter * zsh rcfiles are no longer fired twice (thanks to zshenv) * Introduced speculative rb|pyenv support * General cleanup all around --- zsh/aliases | 10 +++------- zsh/config | 10 ++++++++++ zsh/functions | 40 ---------------------------------------- zsh/paths | 46 ++++++++++++++++++++++++++++++++-------------- zsh/prompt | 20 ++++++++++---------- zshenv | 8 +++++--- zshrc | 5 +++++ 7 files changed, 65 insertions(+), 74 deletions(-) diff --git a/zsh/aliases b/zsh/aliases index 3a491d9a..1af6fd0f 100644 --- a/zsh/aliases +++ b/zsh/aliases @@ -30,6 +30,7 @@ alias va='vagrant' # Interpreters command_exists "ruby" && alias rb='ruby' +command_exists "rbenv" && alias re='rbenv' command_exists "python" && alias py='python' command_exists "node" && alias js='node' if [ -e /Applications/love.app ]; then @@ -55,16 +56,10 @@ alias wget='wget -c' alias sudo='sudo ' if is_linux; then - alias ls='ls --color' - - # iptables alias ipt='sudo iptables' - elif is_mac; then - alias ls='ls -G' - alias b='brew' alias ql='quicklook' @@ -75,7 +70,6 @@ elif is_mac; then open "$@" fi } - fi alias v="vim" @@ -85,5 +79,7 @@ function mkd { mkdir "$@" && cd "$@" } +alias reload='exec $SHELL -l' +alias c='clear' # vim:set ft=zsh: diff --git a/zsh/config b/zsh/config index c0780afc..6af1a5f5 100644 --- a/zsh/config +++ b/zsh/config @@ -73,4 +73,14 @@ if is_mac; then zle -N zle-keymap-select fi +autoload colors +if [[ "$terminfo[colors]" -gt 8 ]]; then + colors +fi +for COLOR in RED GREEN YELLOW BLUE MAGENTA CYAN BLACK WHITE; do + eval $COLOR='$fg_no_bold[${(L)COLOR}]' + eval BOLD_$COLOR='$fg_bold[${(L)COLOR}]' +done +eval RESET='$reset_color' + # vim:set ft=zsh: diff --git a/zsh/functions b/zsh/functions index 721e4e0c..ff55bde4 100644 --- a/zsh/functions +++ b/zsh/functions @@ -17,37 +17,6 @@ function is_linux { [[ $(uname) == 'Linux' ]] } -# Package management aliases -function pkg_install() { - if is_mac; then - brew install $1 - elif is_deb; then - sudo apt-get -y install $1 - fi -} - -function pkg_remove() { - if is_mac; then - brew remove $1 - elif is_deb; then - sudo apt-get -y remove $1 - fi -} - -function pkg_update() { - if is_mac; then - brew update && brew upgrade - elif is_deb; then - sudo apt-get update && sudo apt-get upgrade - fi -} - -# Ask for admin password up front and keep sudo alive until the end of the script -function keep_alive { - sudo -v - while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null & -} - # Extract a compressed file with the appropriate command function unpack { if [ -f "$1" ]; then @@ -88,13 +57,4 @@ if is_mac; then fi -# Output functions -function echo_g { - echo -e "\e[0;32m$1\e[m" -} - -function echo_r { - echo -e "\e[0;31m$1\e[m" -} - # vim:set ft=zsh: diff --git a/zsh/paths b/zsh/paths index b0f7ecdf..bf5d07ef 100644 --- a/zsh/paths +++ b/zsh/paths @@ -1,22 +1,40 @@ -if [ -e /usr/local/bin/brew ]; then - BREWDIR=`/usr/local/bin/brew --prefix` - PATH=$BREWDIR/sbin:$PATH - PATH=$BREWDIR/bin:$PATH +function _init_paths { + export PATH=/usr/bin:/bin:/usr/sbin - COREUTIL=`$BREWDIR/bin/brew --prefix coreutils` - if [ -d "$COREUTIL" ]; then - PATH=$COREUTIL/libexec/bin/gnubin:$PATH + # Setup homebrew paths + if [ -e /usr/local/bin/brew ]; then + local BREWDIR=`/usr/local/bin/brew --prefix` + + PATH=$BREWDIR/bin:$PATH + + local COREUTILS=`brew --prefix coreutils` + if [ -d "$COREUTILS" ]; then + PATH="$COREUTILS/libexec/gnubin:$PATH" + MANPATH="$COREUTILS/libexec/gnuman:$MANPATH" + fi fi -fi -# rbenv paths -[ -d $HOME/.rbenv ] && PATH=$HOME/.rbenv/bin:$HOME/.rbenv/shims:$PATH + # rb/pyenv paths + local RBENV_DIR="`brew --prefix rbenv`" + local PYENV_DIR="`brew --prefix pyenv`" + if [ -d "$RBENV_DIR" ]; then + PATH=$RBENV_DIR/bin:$PATH + export RBENV_ROOT=$RBENV_DIR + fi + if [ -d "$PYENV_DIR" ]; then + PATH=$PYENV_DIR/bin:$PATH + export PYENV_ROOT=$PYENV_DIR + fi -# hostname-specific bins -[ -d $HOME/.dotfiles/bin/`hostname` ] && PATH=$HOME/.dotfiles/bin/`hostname`:$PATH + # hostname-specific bins + [ -d $HOME/.dotfiles/bin/`hostname` ] && PATH=$HOME/.dotfiles/bin/`hostname`:$PATH -# global bins -PATH=$HOME/.dotfiles/bin:$PATH + # global bins + PATH=$HOME/.dotfiles/bin:$PATH +} + +_init_paths +unset -f _init_paths # vim:set ft=zsh: diff --git a/zsh/prompt b/zsh/prompt index 4ced58c8..2c0a27d6 100644 --- a/zsh/prompt +++ b/zsh/prompt @@ -8,7 +8,7 @@ ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}+%{$fg[white]%}" # Build Prompt # ################## -function prompt_pwd { +function _prompt_pwd { SHORTPWD=`print -Pn "%4~"` if [[ -n "${ZSH_VERSION:-}" ]] @@ -21,11 +21,11 @@ function prompt_pwd { echo -n $SHORTPWD } -function prompt_git { +function _prompt_git { [ "`git_prompt_info`" ] && echo -n "$(git_prompt_info)" } -function prompt_vimode { +function _prompt_vimode { # The prompt turns green in command mode, and red in insert mode PROMPT="$" @@ -39,7 +39,7 @@ function prompt_vimode { } # prompts -function lprompt { +function _lprompt { # Start each prompt with a newline echo @@ -54,22 +54,22 @@ function lprompt { fi # Print the prompt - echo -n '%{$fg[red]%}%{$FX[bold]%}$(prompt_vimode)%{$reset_color%}' + echo -n '%{$fg[red]%}%{$FX[bold]%}$(_prompt_vimode)%{$reset_color%}' } -function rprompt { +function _rprompt { # Make the rprompt a bright grey to set it apart echo -n "%{$FG[245]%}" - echo -n '$(prompt_pwd)' + echo -n '$(_prompt_pwd)' # Show the branch/status if in a git repo - echo -n '$(prompt_git)' + echo -n '$(_prompt_git)' # Reset formatting for command output echo -n "%{$reset_color%}" } -PROMPT="$(lprompt)" -RPROMPT="$(rprompt)" +PROMPT="$(_lprompt)" +RPROMPT="$(_rprompt)" # vim:set ft=zsh: diff --git a/zshenv b/zshenv index 0f9632ad..8b05d502 100644 --- a/zshenv +++ b/zshenv @@ -1,3 +1,5 @@ -source ~/.zsh/functions -source ~/.zsh/aliases -source ~/.zsh/paths +if [ -z ${ZSH_INIT+x} ]; then + source ~/.zsh/functions + source ~/.zsh/aliases + source ~/.zsh/paths +fi diff --git a/zshrc b/zshrc index 092e9091..0e11a7c6 100644 --- a/zshrc +++ b/zshrc @@ -1,4 +1,5 @@ # ZSH Env variables +export ZSH_INIT=1 export ZSH=$HOME/.oh-my-zsh source ~/.zsh/functions @@ -24,3 +25,7 @@ source ~/.zsh/prompt # Have a system specific rcfile? Source it! [ -f ~/.localrc ] && source ~/.localrc + +# Init rbenv & pyenv +command_exists rbenv && eval "$(rbenv init -)" +command_exists pyenv && eval "$(pyenv init -)"