summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/aliases.zsh35
-rw-r--r--lib/compfix.zsh60
-rw-r--r--lib/completion.zsh17
-rw-r--r--lib/directories.zsh38
-rw-r--r--lib/functions.zsh16
-rw-r--r--lib/git.zsh83
-rw-r--r--lib/grep.zsh38
-rw-r--r--lib/history.zsh12
-rw-r--r--lib/key-bindings.zsh3
-rw-r--r--lib/misc.zsh28
-rw-r--r--lib/nvm.zsh2
-rw-r--r--lib/termsupport.zsh59
-rw-r--r--lib/theme-and-appearance.zsh15
13 files changed, 269 insertions, 137 deletions
diff --git a/lib/aliases.zsh b/lib/aliases.zsh
deleted file mode 100644
index aae865046..000000000
--- a/lib/aliases.zsh
+++ /dev/null
@@ -1,35 +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 afind='ack-grep -il'
-
diff --git a/lib/compfix.zsh b/lib/compfix.zsh
new file mode 100644
index 000000000..208aaadb1
--- /dev/null
+++ b/lib/compfix.zsh
@@ -0,0 +1,60 @@
+# Handle completions insecurities (i.e., completion-dependent directories with
+# insecure ownership or permissions) by:
+#
+# * Human-readably notifying the user of these insecurities.
+# * Moving away all existing completion caches to a temporary directory. Since
+# any of these caches may have been generated from insecure directories, they
+# are all suspect now. Failing to do so typically causes subsequent compinit()
+# calls to fail with "command not found: compdef" errors. (That's bad.)
+function handle_completion_insecurities() {
+ # List of the absolute paths of all unique insecure directories, split on
+ # newline from compaudit()'s output resembling:
+ #
+ # There are insecure directories:
+ # /usr/share/zsh/site-functions
+ # /usr/share/zsh/5.0.6/functions
+ # /usr/share/zsh
+ # /usr/share/zsh/5.0.6
+ #
+ # Since the ignorable first line is printed to stderr and thus not captured,
+ # stderr is squelched to prevent this output from leaking to the user.
+ local -aU insecure_dirs
+ insecure_dirs=( ${(f@):-"$(compaudit 2>/dev/null)"} )
+
+ # If no such directories exist, get us out of here.
+ if (( ! ${#insecure_dirs} )); then
+ print "[oh-my-zsh] No insecure completion-dependent directories detected."
+ return
+ fi
+
+ # List ownership and permissions of all insecure directories.
+ print "[oh-my-zsh] Insecure completion-dependent directories detected:"
+ ls -ld "${(@)insecure_dirs}"
+ print "[oh-my-zsh] For safety, completions will be disabled until you manually fix all"
+ print "[oh-my-zsh] insecure directory permissions and ownership and restart oh-my-zsh."
+ print "[oh-my-zsh] See the above list for directories with group or other writability.\n"
+
+ # Locally enable the "NULL_GLOB" option, thus removing unmatched filename
+ # globs from argument lists *AND* printing no warning when doing so. Failing
+ # to do so prints an unreadable warning if no completion caches exist below.
+ setopt local_options null_glob
+
+ # List of the absolute paths of all unique existing completion caches.
+ local -aU zcompdump_files
+ zcompdump_files=( "${ZSH_COMPDUMP}"(.) "${ZDOTDIR:-${HOME}}"/.zcompdump* )
+
+ # Move such caches to a temporary directory.
+ if (( ${#zcompdump_files} )); then
+ # Absolute path of the directory to which such files will be moved.
+ local ZSH_ZCOMPDUMP_BAD_DIR="${ZSH_CACHE_DIR}/zcompdump-bad"
+
+ # List such files first.
+ print "[oh-my-zsh] Insecure completion caches also detected:"
+ ls -l "${(@)zcompdump_files}"
+
+ # For safety, move rather than permanently remove such files.
+ print "[oh-my-zsh] Moving to \"${ZSH_ZCOMPDUMP_BAD_DIR}/\"...\n"
+ mkdir -p "${ZSH_ZCOMPDUMP_BAD_DIR}"
+ mv "${(@)zcompdump_files}" "${ZSH_ZCOMPDUMP_BAD_DIR}/"
+ fi
+}
diff --git a/lib/completion.zsh b/lib/completion.zsh
index fa1d97f48..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 \
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 17f5f9cbf..0d632a268 100644
--- a/lib/functions.zsh
+++ b/lib/functions.zsh
@@ -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 7aa5a0ea2..caa7e6329 100644
--- a/lib/git.zsh
+++ b/lib/git.zsh
@@ -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,24 +36,27 @@ 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
- fi
-}
-# Checks if there are commits ahead from remote
-function git_prompt_ahead() {
- if $(echo "$(command git log @{upstream}..HEAD 2> /dev/null)" | grep '^commit' &> /dev/null); then
- echo "$ZSH_THEME_GIT_PROMPT_AHEAD"
- 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
}
# Gets the number of commits ahead from remote
@@ -67,6 +67,29 @@ function git_commits_ahead() {
fi
}
+# Outputs if current branch is ahead of remote
+function git_prompt_ahead() {
+ 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"
@@ -81,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
@@ -135,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 9d6681603..babbaa957 100644
--- a/lib/termsupport.zsh
+++ b/lib/termsupport.zsh
@@ -1,34 +1,56 @@
-#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%<<'
@@ -36,3 +58,16 @@ function 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..ebb11fb31 100644
--- a/lib/theme-and-appearance.zsh
+++ b/lib/theme-and-appearance.zsh
@@ -1,19 +1,21 @@
# 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
- # On OpenBSD, test if "colorls" is installed (this one supports colors);
- # otherwise, leave ls as is, because OpenBSD's ls doesn't support -G
+ # On OpenBSD, "gls" (ls from GNU coreutils) and "colorls" (ls from base,
+ # with color and multibyte support) are available from ports. "colorls"
+ # will be installed on purpose and can't be pulled in by installing
+ # coreutils, so prefer it to "gls".
+ gls --color -d . &>/dev/null 2>&1 && alias ls='gls --color=tty'
colorls -G -d . &>/dev/null 2>&1 && alias ls='colorls -G'
else
ls --color -d . &>/dev/null 2>&1 && alias ls='ls --color=tty' || alias ls='ls -G'
@@ -23,7 +25,7 @@ fi
#setopt no_beep
setopt auto_cd
setopt multios
-setopt cdablevarS
+setopt cdablevars
if [[ x$WINDOW != x ]]
then
@@ -43,4 +45,3 @@ ZSH_THEME_GIT_PROMPT_CLEAN="" # Text to display if the branch is c
# Setup the prompt with pretty colors
setopt prompt_subst
-