From 812d81a8071716cb96e27c939243574bc88d34cf Mon Sep 17 00:00:00 2001 From: alexg0 Date: Sat, 12 Dec 2009 00:51:31 -0600 Subject: [PATCH] Improve behavior inside Emacs, abbreviate master branch to M * when branch is master, replace displayed branch name with M * enable colors only when on color capable terminal. --- lib/appearance.zsh | 26 +++++++++++++++++--------- lib/git.zsh | 16 ++++++++++++++-- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/lib/appearance.zsh b/lib/appearance.zsh index ffee52b5e..69d0afc41 100644 --- a/lib/appearance.zsh +++ b/lib/appearance.zsh @@ -1,15 +1,23 @@ # ls colors -autoload colors; colors; -export LSCOLORS="Gxfxcxdxbxegedabagacad" -#export LS_COLORS +autoload colors zsh/terminfo -# Enable ls colors -if [ "$DISABLE_LS_COLORS" != "true" ] -then - # Find the option for using colors in ls, depending on the version: Linux or BSD - ls --color -d . &>/dev/null 2>&1 && alias ls='ls --color=tty' || alias ls='ls -G' +# enable colors on color capable terminals +if [[ "$terminfo[colors]" -ge 8 ]]; then + colors + export LSCOLORS="Gxfxcxdxbxegedabagacad" + + # ls colors + if [ "$DISABLE_LS_COLORS" != "true" ]; then + # Find the option for using colors in ls, depending on the + # version: Linux or BSD + ls --color -d . &>/dev/null 2>&1 && alias ls='ls --color=tty' || \ + alias ls='ls -G' + fi fi +# disable zle inside emacs +[[ $TERM = 'dumb' && $EMACS = t ]] && unsetopt zle + #setopt no_beep setopt auto_cd setopt multios @@ -35,4 +43,4 @@ ZSH_THEME_GIT_PROMPT_CLEAN="" # Text to display if the branch is c setopt prompt_subst # Load the theme -source "$ZSH/themes/$ZSH_THEME.zsh-theme" \ No newline at end of file +source "$ZSH/themes/$ZSH_THEME.zsh-theme" diff --git a/lib/git.zsh b/lib/git.zsh index 52c7969f3..c8f5da2ea 100644 --- a/lib/git.zsh +++ b/lib/git.zsh @@ -1,7 +1,7 @@ # get the name of the branch we are on function git_prompt_info() { - ref=$(git symbolic-ref HEAD 2> /dev/null) || return - echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX" + branch=$(current_branch_for_display) || return + echo "$ZSH_THEME_GIT_PROMPT_PREFIX${branch}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX" } parse_git_dirty () { @@ -20,3 +20,15 @@ function current_branch() { ref=$(git symbolic-ref HEAD 2> /dev/null) || return echo ${ref#refs/heads/} } + +# +# current branch for display. Abbreviate master to M. +# Other substitutions are possible. +# TODO: +# * allow to enable/disable translation of master to M. +# * enable argument to git_prompt_info control what is displayed +# (eg: M=535516, ala git-prompt project for bash) +function current_branch_for_display() { + branch=$(current_branch) || return + echo ${branch/master/M} # master abbreviated to M. +}