diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/aliases.zsh | 36 | ||||
| -rw-r--r-- | lib/completion.zsh | 19 | ||||
| -rw-r--r-- | lib/correction.zsh | 20 | ||||
| -rw-r--r-- | lib/directories.zsh | 38 | ||||
| -rw-r--r-- | lib/functions.zsh | 20 | ||||
| -rw-r--r-- | lib/git.zsh | 85 | ||||
| -rw-r--r-- | lib/grep.zsh | 38 | ||||
| -rw-r--r-- | lib/history.zsh | 12 | ||||
| -rw-r--r-- | lib/key-bindings.zsh | 3 | ||||
| -rw-r--r-- | lib/misc.zsh | 28 | ||||
| -rw-r--r-- | lib/nvm.zsh | 2 | ||||
| -rw-r--r-- | lib/termsupport.zsh | 64 | ||||
| -rw-r--r-- | lib/theme-and-appearance.zsh | 8 | 
13 files changed, 224 insertions, 149 deletions
diff --git a/lib/aliases.zsh b/lib/aliases.zsh deleted file mode 100644 index 3044c9660..000000000 --- a/lib/aliases.zsh +++ /dev/null @@ -1,36 +0,0 @@ -# Push and pop directories on directory stack -alias pu='pushd' -alias po='popd' - -# Basic directory operations -alias ...='cd ../..' -alias -- -='cd -' - -# Super user -alias _='sudo' -alias please='sudo' - -#alias g='grep -in' - -# Show history -if [ "$HIST_STAMPS" = "mm/dd/yyyy" ] -then -    alias history='fc -fl 1' -elif [ "$HIST_STAMPS" = "dd.mm.yyyy" ] -then -    alias history='fc -El 1' -elif [ "$HIST_STAMPS" = "yyyy-mm-dd" ] -then -    alias history='fc -il 1' -else -    alias history='fc -l 1' -fi -# List direcory contents -alias lsa='ls -lah' -alias l='ls -lah' -alias ll='ls -lh' -alias la='ls -lAh' -alias sl=ls # often screw this up - -alias afind='ack-grep -il' - diff --git a/lib/completion.zsh b/lib/completion.zsh index c54249c52..452c0dfe7 100644 --- a/lib/completion.zsh +++ b/lib/completion.zsh @@ -15,7 +15,12 @@ if [ "x$CASE_SENSITIVE" = "xtrue" ]; then    zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'    unset CASE_SENSITIVE  else -  zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' +  if [ "x$HYPHEN_INSENSITIVE" = "xtrue" ]; then +    zstyle ':completion:*' matcher-list 'm:{a-zA-Z-_}={A-Za-z_-}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' +    unset HYPHEN_INSENSITIVE +  else +    zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' +  fi  fi  zstyle ':completion:*' list-colors '' @@ -25,15 +30,19 @@ bindkey -M menuselect '^o' accept-and-infer-next-history  zstyle ':completion:*:*:*:*:*' menu select  zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01' -zstyle ':completion:*:*:*:*:processes' command "ps -u `whoami` -o pid,user,comm -w -w" +if [ "$OSTYPE[0,7]" = "solaris" ] +then +  zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm" +else +  zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm -w -w" +fi  # disable named-directories autocompletion  zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories -cdpath=(.)  # Use caching so that commands like apt and dpkg complete are useable  zstyle ':completion::complete:*' use-cache 1 -zstyle ':completion::complete:*' cache-path $ZSH/cache/ +zstyle ':completion::complete:*' cache-path $ZSH_CACHE_DIR  # Don't complete uninteresting users  zstyle ':completion:*:*:*:users' ignored-patterns \ @@ -44,7 +53,7 @@ zstyle ':completion:*:*:*:users' ignored-patterns \          named netdump news nfsnobody nobody nscd ntp nut nx obsrun openvpn \          operator pcap polkitd postfix postgres privoxy pulse pvm quagga radvd \          rpc rpcuser rpm rtkit scard shutdown squid sshd statd svn sync tftp \ -        usbmux uucp vcsa wwwrun xfs +        usbmux uucp vcsa wwwrun xfs '_*'  # ... unless we really want to.  zstyle '*' single-ignored show diff --git a/lib/correction.zsh b/lib/correction.zsh index 47eb83b1d..3e1415a0b 100644 --- a/lib/correction.zsh +++ b/lib/correction.zsh @@ -1,13 +1,13 @@ -alias man='nocorrect man' -alias mv='nocorrect mv' -alias mysql='nocorrect mysql' -alias mkdir='nocorrect mkdir' -alias gist='nocorrect gist' -alias heroku='nocorrect heroku' -alias ebuild='nocorrect ebuild' -alias hpodder='nocorrect hpodder' -alias sudo='nocorrect sudo' -  if [[ "$ENABLE_CORRECTION" == "true" ]]; then +  alias ebuild='nocorrect ebuild' +  alias gist='nocorrect gist' +  alias heroku='nocorrect heroku' +  alias hpodder='nocorrect hpodder' +  alias man='nocorrect man' +  alias mkdir='nocorrect mkdir' +  alias mv='nocorrect mv' +  alias mysql='nocorrect mysql' +  alias sudo='nocorrect sudo' +    setopt correct_all  fi diff --git a/lib/directories.zsh b/lib/directories.zsh index 1896945f4..3bffa9fd9 100644 --- a/lib/directories.zsh +++ b/lib/directories.zsh @@ -1,15 +1,12 @@  # Changing/making/removing directory -setopt auto_name_dirs  setopt auto_pushd  setopt pushd_ignore_dups  setopt pushdminus -alias ..='cd ..' -alias cd..='cd ..' -alias cd...='cd ../..' -alias cd....='cd ../../..' -alias cd.....='cd ../../../..' -alias cd/='cd /' +alias -g ...='../..' +alias -g ....='../../..' +alias -g .....='../../../..' +alias -g ......='../../../../..'  alias 1='cd -'  alias 2='cd -2' @@ -21,23 +18,16 @@ alias 7='cd -7'  alias 8='cd -8'  alias 9='cd -9' -cd () { -  if   [[ "x$*" == "x..." ]]; then -    cd ../.. -  elif [[ "x$*" == "x...." ]]; then -    cd ../../.. -  elif [[ "x$*" == "x....." ]]; then -    cd ../../../.. -  elif [[ "x$*" == "x......" ]]; then -    cd ../../../../.. -  elif [ -d ~/.autoenv ]; then -    source ~/.autoenv/activate.sh -    autoenv_cd "$@" -  else -    builtin cd "$@" -  fi -} -  alias md='mkdir -p'  alias rd=rmdir  alias d='dirs -v | head -10' + +# List directory contents +alias lsa='ls -lah' +alias l='ls -lah' +alias ll='ls -lh' +alias la='ls -lAh' + +# Push and pop directories on directory stack +alias pu='pushd' +alias po='popd' diff --git a/lib/functions.zsh b/lib/functions.zsh index fda84a953..0d632a268 100644 --- a/lib/functions.zsh +++ b/lib/functions.zsh @@ -3,11 +3,11 @@ function zsh_stats() {  }  function uninstall_oh_my_zsh() { -  /usr/bin/env ZSH=$ZSH /bin/sh $ZSH/tools/uninstall.sh +  env ZSH=$ZSH /bin/sh $ZSH/tools/uninstall.sh  }  function upgrade_oh_my_zsh() { -  /usr/bin/env ZSH=$ZSH /bin/sh $ZSH/tools/upgrade.sh +  env ZSH=$ZSH /bin/sh $ZSH/tools/upgrade.sh  }  function take() { @@ -15,6 +15,22 @@ function take() {    cd $1  } +function open_command() { +  local open_cmd + +  # define the open command +  case "$OSTYPE" in +    darwin*)  open_cmd="open" ;; +    cygwin*)  open_cmd="cygstart" ;; +    linux*)   open_cmd="xdg-open" ;; +    *)        echo "Platform $OSTYPE not supported" +              return 1 +              ;; +  esac + +  nohup $open_cmd "$@" &>/dev/null +} +  #  # Get the value of an alias.  # diff --git a/lib/git.zsh b/lib/git.zsh index 305a77aff..caa7e6329 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -1,8 +1,8 @@  # get the name of the branch we are on  function git_prompt_info() { -  if [[ "$(git config --get oh-my-zsh.hide-status)" != "1" ]]; then +  if [[ "$(command git config --get oh-my-zsh.hide-status 2>/dev/null)" != "1" ]]; then      ref=$(command git symbolic-ref HEAD 2> /dev/null) || \ -    ref=$(command git rev-parse --short HEAD 2> /dev/null) || return +    ref=$(command git rev-parse --short HEAD 2> /dev/null) || return 0      echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX"    fi  } @@ -10,23 +10,20 @@ function git_prompt_info() {  # Checks if working tree is dirty  parse_git_dirty() { -  local SUBMODULE_SYNTAX='' -  local GIT_STATUS='' -  local CLEAN_MESSAGE='nothing to commit (working directory clean)' -  if [[ "$(command git config --get oh-my-zsh.hide-status)" != "1" ]]; then +  local STATUS='' +  local FLAGS +  FLAGS=('--porcelain') +  if [[ "$(command git config --get oh-my-zsh.hide-dirty)" != "1" ]]; then      if [[ $POST_1_7_2_GIT -gt 0 ]]; then -          SUBMODULE_SYNTAX="--ignore-submodules=dirty" +      FLAGS+='--ignore-submodules=dirty'      fi      if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" == "true" ]]; then -        GIT_STATUS=$(command git status -s ${SUBMODULE_SYNTAX} -uno 2> /dev/null | tail -n1) -    else -        GIT_STATUS=$(command git status -s ${SUBMODULE_SYNTAX} 2> /dev/null | tail -n1) -    fi -    if [[ -n $GIT_STATUS ]]; then -      echo "$ZSH_THEME_GIT_PROMPT_DIRTY" -    else -      echo "$ZSH_THEME_GIT_PROMPT_CLEAN" +      FLAGS+='--untracked-files=no'      fi +    STATUS=$(command git status ${FLAGS} 2> /dev/null | tail -n1) +  fi +  if [[ -n $STATUS ]]; then +    echo "$ZSH_THEME_GIT_PROMPT_DIRTY"    else      echo "$ZSH_THEME_GIT_PROMPT_CLEAN"    fi @@ -39,26 +36,60 @@ git_remote_status() {          ahead=$(command git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l)          behind=$(command git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l) -        if [ $ahead -eq 0 ] && [ $behind -gt 0 ] +        if [ $ahead -gt 0 ] && [ $behind -eq 0 ]          then -            echo "$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE" -        elif [ $ahead -gt 0 ] && [ $behind -eq 0 ] +            git_remote_status="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE" +            git_remote_status_detailed="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE$((ahead))%{$reset_color%}" +        elif [ $behind -gt 0 ] && [ $ahead -eq 0 ]           then -            echo "$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE" +            git_remote_status="$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE" +            git_remote_status_detailed="$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE$((behind))%{$reset_color%}"          elif [ $ahead -gt 0 ] && [ $behind -gt 0 ]          then -            echo "$ZSH_THEME_GIT_PROMPT_DIVERGED_REMOTE" +            git_remote_status="$ZSH_THEME_GIT_PROMPT_DIVERGED_REMOTE" +            git_remote_status_detailed="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE$((ahead))%{$reset_color%}$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE$((behind))%{$reset_color%}" +        fi + +        if [ $ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_DETAILED ] +        then +            git_remote_status="$ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_PREFIX$remote$git_remote_status_detailed$ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_SUFFIX"          fi + +        echo $git_remote_status      fi  } -# Checks if there are commits ahead from remote +# Gets the number of commits ahead from remote +function git_commits_ahead() { +  if $(echo "$(command git log @{upstream}..HEAD 2> /dev/null)" | grep '^commit' &> /dev/null); then +    COMMITS=$(command git log @{upstream}..HEAD | grep '^commit' | wc -l | tr -d ' ') +    echo "$ZSH_THEME_GIT_COMMITS_AHEAD_PREFIX$COMMITS$ZSH_THEME_GIT_COMMITS_AHEAD_SUFFIX" +  fi +} + +# Outputs if current branch is ahead of remote  function git_prompt_ahead() { -  if $(echo "$(command git log origin/$(current_branch)..HEAD 2> /dev/null)" | grep '^commit' &> /dev/null); then +  if [[ -n "$(command git rev-list origin/$(current_branch)..HEAD 2> /dev/null)" ]]; then      echo "$ZSH_THEME_GIT_PROMPT_AHEAD"    fi  } +# Outputs if current branch is behind remote +function git_prompt_behind() { +  if [[ -n "$(command git rev-list HEAD..origin/$(current_branch) 2> /dev/null)" ]]; then +    echo "$ZSH_THEME_GIT_PROMPT_BEHIND" +  fi +} + +# Outputs if current branch exists on remote or not +function git_prompt_remote() { +  if [[ -n "$(command git show-ref origin/$(current_branch) 2> /dev/null)" ]]; then +    echo "$ZSH_THEME_GIT_PROMPT_REMOTE_EXISTS" +  else +    echo "$ZSH_THEME_GIT_PROMPT_REMOTE_MISSING" +  fi +} +  # Formats prompt string for current git commit short SHA  function git_prompt_short_sha() {    SHA=$(command git rev-parse --short HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER" @@ -73,7 +104,7 @@ function git_prompt_long_sha() {  git_prompt_status() {    INDEX=$(command git status --porcelain -b 2> /dev/null)    STATUS="" -  if $(echo "$INDEX" | grep -E '^\?\? ' &> /dev/null); then +  if $(echo "$INDEX" | command grep -E '^\?\? ' &> /dev/null); then      STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS"    fi    if $(echo "$INDEX" | grep '^A  ' &> /dev/null); then @@ -127,17 +158,19 @@ function git_compare_version() {    INSTALLED_GIT_VERSION=(${(s/./)INSTALLED_GIT_VERSION[3]});    for i in {1..3}; do +    if [[ $INSTALLED_GIT_VERSION[$i] -gt $INPUT_GIT_VERSION[$i] ]]; then +      echo 1 +      return 0 +    fi      if [[ $INSTALLED_GIT_VERSION[$i] -lt $INPUT_GIT_VERSION[$i] ]]; then        echo -1        return 0      fi    done -  echo 1 +  echo 0  }  #this is unlikely to change so make it all statically assigned  POST_1_7_2_GIT=$(git_compare_version "1.7.2")  #clean up the namespace slightly by removing the checker function  unset -f git_compare_version - - diff --git a/lib/grep.zsh b/lib/grep.zsh index 276fec382..3fa103d19 100644 --- a/lib/grep.zsh +++ b/lib/grep.zsh @@ -1,24 +1,28 @@ -# -# Color grep results -# Examples: http://rubyurl.com/ZXv -# - -GREP_OPTIONS="--color=auto" - -# avoid VCS folders (if the necessary grep flags are available) +# is x grep argument available?  grep-flag-available() {      echo | grep $1 "" >/dev/null 2>&1  } + +GREP_OPTIONS="" + +# color grep results +if grep-flag-available --color=auto; then +    GREP_OPTIONS+=" --color=auto" +fi + +# ignore VCS folders (if the necessary grep flags are available) +VCS_FOLDERS="{.bzr,.cvs,.git,.hg,.svn}" +  if grep-flag-available --exclude-dir=.cvs; then -    for PATTERN in .cvs .git .hg .svn; do -        GREP_OPTIONS+=" --exclude-dir=$PATTERN" -    done +    GREP_OPTIONS+=" --exclude-dir=$VCS_FOLDERS"  elif grep-flag-available --exclude=.cvs; then -    for PATTERN in .cvs .git .hg .svn; do -        GREP_OPTIONS+=" --exclude=$PATTERN" -    done +    GREP_OPTIONS+=" --exclude=$VCS_FOLDERS"  fi -unfunction grep-flag-available -export GREP_OPTIONS="$GREP_OPTIONS" -export GREP_COLOR='1;32' +# export grep settings +alias grep="grep $GREP_OPTIONS" + +# clean up +unset GREP_OPTIONS +unset VCS_FOLDERS +unfunction grep-flag-available diff --git a/lib/history.zsh b/lib/history.zsh index 1d83e56e3..5de71c2d3 100644 --- a/lib/history.zsh +++ b/lib/history.zsh @@ -1,10 +1,20 @@  ## Command history configuration -if [ -z $HISTFILE ]; then +if [ -z "$HISTFILE" ]; then      HISTFILE=$HOME/.zsh_history  fi +  HISTSIZE=10000  SAVEHIST=10000 +# Show history +case $HIST_STAMPS in +  "mm/dd/yyyy") alias history='fc -fl 1' ;; +  "dd.mm.yyyy") alias history='fc -El 1' ;; +  "yyyy-mm-dd") alias history='fc -il 1' ;; +  *) alias history='fc -l 1' ;; +esac + +setopt append_history  setopt extended_history  setopt hist_expire_dups_first  setopt hist_ignore_dups # ignore duplication command history list diff --git a/lib/key-bindings.zsh b/lib/key-bindings.zsh index 9063c6a18..eb2b58058 100644 --- a/lib/key-bindings.zsh +++ b/lib/key-bindings.zsh @@ -64,6 +64,9 @@ autoload -U edit-command-line  zle -N edit-command-line  bindkey '\C-x\C-e' edit-command-line +# file rename magick +bindkey "^[m" copy-prev-shell-word +  # consider emacs keybindings:  #bindkey -e  ## emacs key bindings diff --git a/lib/misc.zsh b/lib/misc.zsh index a8678b8ec..6d1a64e8d 100644 --- a/lib/misc.zsh +++ b/lib/misc.zsh @@ -1,9 +1,10 @@ -## smart urls -autoload -U url-quote-magic -zle -N self-insert url-quote-magic - -## file rename magick -bindkey "^[m" copy-prev-shell-word +## Load smart urls if available +for d in $fpath; do +	if [[ -e "$d/url-quote-magic" ]]; then +		autoload -U url-quote-magic +		zle -N self-insert url-quote-magic +	fi +done  ## jobs  setopt long_list_jobs @@ -12,4 +13,17 @@ setopt long_list_jobs  export PAGER="less"  export LESS="-R" -export LC_CTYPE=$LANG +## super user alias +alias _='sudo' +alias please='sudo' + +## more intelligent acking for ubuntu users +alias afind='ack-grep -il' + +# only define LC_CTYPE if undefined +if [[ -z "$LC_CTYPE" && -z "$LC_ALL" ]]; then +	export LC_CTYPE=${LANG%%:*} # pick the first entry from LANG +fi + +# recognize comments +setopt interactivecomments diff --git a/lib/nvm.zsh b/lib/nvm.zsh index 5cadf7061..61d997fc0 100644 --- a/lib/nvm.zsh +++ b/lib/nvm.zsh @@ -1,6 +1,6 @@  # get the node.js version  function nvm_prompt_info() { -  [ -f $HOME/.nvm/nvm.sh ] || return +  [ -f "$HOME/.nvm/nvm.sh" ] || return    local nvm_prompt    nvm_prompt=$(node -v 2>/dev/null)    [[ "${nvm_prompt}x" == "x" ]] && return diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh index 9c0a430fb..babbaa957 100644 --- a/lib/termsupport.zsh +++ b/lib/termsupport.zsh @@ -1,39 +1,73 @@ -#usage: title short_tab_title looooooooooooooooooooooggggggg_windows_title -#http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#ss3.1 -#Fully support screen, iterm, and probably most modern xterm and rxvt -#Limited support for Apple Terminal (Terminal can't set window or tab separately) +# Set terminal window and tab/icon title +# +# usage: title short_tab_title [long_window_title] +# +# See: http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#ss3.1 +# Fully supports screen, iterm, and probably most modern xterm and rxvt +# (In screen, only short_tab_title is used) +# Limited support for Apple Terminal (Terminal can't set window and tab separately)  function title { -  if [[ "$DISABLE_AUTO_TITLE" == "true" ]] || [[ "$EMACS" == *term* ]]; then -    return -  fi +  emulate -L zsh +  setopt prompt_subst +   +  [[ "$EMACS" == *term* ]] && return + +  # if $2 is unset use $1 as default +  # if it is set and empty, leave it as is +  : ${2=$1} +    if [[ "$TERM" == screen* ]]; then      print -Pn "\ek$1:q\e\\" #set screen hardstatus, usually truncated at 20 chars -  elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ $TERM == ansi ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then +  elif [[ "$TERM" == xterm* ]] || [[ "$TERM" == rxvt* ]] || [[ "$TERM" == ansi ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then      print -Pn "\e]2;$2:q\a" #set window name -    print -Pn "\e]1;$1:q\a" #set icon (=tab) name (will override window name on broken terminal) +    print -Pn "\e]1;$1:q\a" #set icon (=tab) name    fi  }  ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD  ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~" +# Avoid duplication of directory in terminals with independent dir display +if [[ $TERM_PROGRAM == Apple_Terminal ]]; then +  ZSH_THEME_TERM_TITLE_IDLE="%n@%m" +fi -#Appears when you have the prompt +# Runs before showing the prompt  function omz_termsupport_precmd { +  if [[ $DISABLE_AUTO_TITLE == true ]]; then +    return +  fi +    title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE  } -#Appears at the beginning of (and during) of command execution +# Runs before executing the command  function omz_termsupport_preexec { +  if [[ $DISABLE_AUTO_TITLE == true ]]; then +    return +  fi +    emulate -L zsh    setopt extended_glob    # cmd name only, or if this is sudo or ssh, the next cmd -  local CMD=${1[(wr)^(*=*|sudo|ssh|rake|-*)]:gs/%/%%} +  local CMD=${1[(wr)^(*=*|sudo|ssh|mosh|rake|-*)]:gs/%/%%}    local LINE="${2:gs/%/%%}"    title '$CMD' '%100>...>$LINE%<<'  } -autoload -U add-zsh-hook -add-zsh-hook precmd  omz_termsupport_precmd -add-zsh-hook preexec omz_termsupport_preexec +precmd_functions+=(omz_termsupport_precmd) +preexec_functions+=(omz_termsupport_preexec) + + +# Runs before showing the prompt, to update the current directory in Terminal.app +function omz_termsupport_cwd { +  # Notify Terminal.app of current directory using undocumented OSC sequence +  # found in OS X 10.9 and 10.10's /etc/bashrc +  if [[ $TERM_PROGRAM == Apple_Terminal ]] && [[ -z $INSIDE_EMACS ]]; then +    local PWD_URL="file://$HOSTNAME${PWD// /%20}" +    printf '\e]7;%s\a' "$PWD_URL" +  fi +} + +precmd_functions+=(omz_termsupport_cwd) diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh index 0353f9db4..926303ca4 100644 --- a/lib/theme-and-appearance.zsh +++ b/lib/theme-and-appearance.zsh @@ -1,14 +1,13 @@  # ls colors -autoload colors; colors; +autoload -U colors && colors  export LSCOLORS="Gxfxcxdxbxegedabagacad" -#export LS_COLORS  # Enable ls colors  if [ "$DISABLE_LS_COLORS" != "true" ]  then    # Find the option for using colors in ls, depending on the version: Linux or BSD    if [[ "$(uname -s)" == "NetBSD" ]]; then -    # On NetBSD, test if "gls" (GNU ls) is installed (this one supports colors);  +    # On NetBSD, test if "gls" (GNU ls) is installed (this one supports colors);      # otherwise, leave ls as is, because NetBSD's ls doesn't support -G      gls --color -d . &>/dev/null 2>&1 && alias ls='gls --color=tty'    elif [[ "$(uname -s)" == "OpenBSD" ]]; then @@ -23,7 +22,7 @@ fi  #setopt no_beep  setopt auto_cd  setopt multios -setopt cdablevarS +setopt cdablevars  if [[ x$WINDOW != x ]]  then @@ -43,4 +42,3 @@ ZSH_THEME_GIT_PROMPT_CLEAN=""               # Text to display if the branch is c  # Setup the prompt with pretty colors  setopt prompt_subst -  | 
