mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-01-09 02:24:03 +01:00
Merge 73a1184433 into 397c085a19
This commit is contained in:
commit
ba0273eeaf
4 changed files with 155 additions and 0 deletions
83
lib/scm.zsh
Normal file
83
lib/scm.zsh
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
# SCM_DEBUG=yes # comment line to disable debugging
|
||||
|
||||
declare -A _SCM_PROMPT_CHARS
|
||||
|
||||
_SCM_TYPES=(git hg svn) && export _SCM_TYPES
|
||||
_SCM_PROMPT_CHARS[git]=±
|
||||
_SCM_PROMPT_CHARS[hg]=ʜɢ
|
||||
_SCM_PROMPT_CHARS[svn]=svn
|
||||
|
||||
function _scm_debug { [ $SCM_DEBUG ] && echo $(xterm_color 237 "$*") >&2 }
|
||||
|
||||
# Checks given 1st path argument if it's root of .git|.hg|.svn
|
||||
function _scm_get_scm_type {
|
||||
[[ "$1" = "/" ]] && return 1
|
||||
|
||||
for type ($_SCM_TYPES) {
|
||||
[ ! -d "$1/.$type" ] && continue
|
||||
|
||||
export SCM_ROOT="$1"
|
||||
export SCM_TYPE=$type
|
||||
return 0
|
||||
}
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
function _scm_reset {
|
||||
_scm_debug 'scm reset'
|
||||
unset SCM_ROOT
|
||||
unset SCM_TYPE
|
||||
unset SCM_PROMPT_INFO
|
||||
}
|
||||
|
||||
# Recursive lookup for possible SCM root
|
||||
function scm_detect_root {
|
||||
_DETECT_WD=${1:-$PWD}
|
||||
|
||||
# skip detection if SCM root already detected and current folder is sub folder of SCM
|
||||
[ $SCM_ROOT ] && [[ $_DETECT_WD == $SCM_ROOT* ]] && return
|
||||
_scm_reset
|
||||
|
||||
until [ "$_DETECT_WD" = "" ]; do
|
||||
_scm_get_scm_type "$_DETECT_WD" && return
|
||||
|
||||
_DETECT_WD=${_DETECT_WD%/*}
|
||||
done
|
||||
}
|
||||
|
||||
function scm_prompt_char() {
|
||||
[ ! $SCM_TYPE ] && return
|
||||
|
||||
echo $_SCM_PROMPT_CHARS[$SCM_TYPE]
|
||||
}
|
||||
|
||||
|
||||
function scm_prompt_info_for_git() { echo "$(git_prompt_info)$(git_prompt_status)" }
|
||||
function scm_prompt_info_for_hg() {}
|
||||
function scm_prompt_info_for_svn() {}
|
||||
|
||||
function scm_build_prompt_info() {
|
||||
[ ! $SCM_TYPE ] && return
|
||||
|
||||
SCM_DATA_DIR=$SCM_ROOT/.$SCM_TYPE
|
||||
SCM_PROMPT_CACHE_FILE=$SCM_DATA_DIR/prompt_cache
|
||||
|
||||
if [ ! -e "$SCM_PROMPT_CACHE_FILE" ]; then
|
||||
_scm_debug "Creating $SCM_PROMPT_CACHE_FILE"
|
||||
touch "$SCM_PROMPT_CACHE_FILE"
|
||||
SCM_PROMPT_INFO=$(scm_prompt_info_for_$SCM_TYPE) # calls scm type specific prompt generator
|
||||
else
|
||||
LAST_UPDATE_TIME=`stat -c %Y $SCM_PROMPT_CACHE_FILE`
|
||||
DIRSTATE_TIME=`stat -c %Y $SCM_DATA_DIR`
|
||||
|
||||
if [[ $DIRSTATE_TIME -gt $LAST_UPDATE_TIME || "$1" == "force" ]]; then
|
||||
_scm_debug "Updating $SCM_PROMPT_CACHE_FILE"
|
||||
SCM_PROMPT_INFO=$(scm_prompt_info_for_$SCM_TYPE) # calls scm type specific prompt generator
|
||||
touch "$SCM_PROMPT_CACHE_FILE"
|
||||
fi
|
||||
fi
|
||||
|
||||
SCM_PROMPT_INFO=${SCM_PROMPT_INFO:-$(scm_prompt_info_for_$SCM_TYPE)}
|
||||
export SCM_PROMPT_INFO
|
||||
}
|
||||
|
|
@ -32,6 +32,39 @@ function omz_termsupport_preexec {
|
|||
title "$CMD" "%100>...>${2:gs/%/%%}%<<"
|
||||
}
|
||||
|
||||
# Prints given 2nd argument with xterm color code of 1st argument
|
||||
# see http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html for color codes
|
||||
function xterm_color() {
|
||||
echo -e "%{\033[38;5;$1m%}$2%{\033[0m%}"
|
||||
}
|
||||
|
||||
function xterm_color_open() {
|
||||
echo -e "%{\033[38;5;$1m%}"
|
||||
}
|
||||
|
||||
function xterm_color_reset() {
|
||||
echo -e "%{\033[0m%}"
|
||||
}
|
||||
|
||||
function _show_colors() {
|
||||
T='■' # The test text
|
||||
|
||||
echo -e "\n 40m 41m 42m 43m 44m 45m 46m 47m";
|
||||
|
||||
for FGs in ' m' ' 1m' ' 30m' '1;30m' \
|
||||
' 31m' '1;31m' ' 32m' '1;32m' \
|
||||
' 33m' '1;33m' ' 34m' '1;34m' \
|
||||
' 35m' '1;35m' ' 36m' '1;36m' \
|
||||
' 37m' '1;37m';
|
||||
do FG=${FGs// /}
|
||||
echo -en " $FGs \033[$FG $T "
|
||||
for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
|
||||
do echo -en "$EINS \033[$FG\033[$BG $T \033[0m";
|
||||
done
|
||||
echo;
|
||||
done
|
||||
}
|
||||
|
||||
autoload -U add-zsh-hook
|
||||
add-zsh-hook precmd omz_termsupport_precmd
|
||||
add-zsh-hook preexec omz_termsupport_preexec
|
||||
|
|
|
|||
5
plugins/scm/scm.plugin.zsh
Normal file
5
plugins/scm/scm.plugin.zsh
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
declare -a chpwd_functions
|
||||
declare -a precmd_functions
|
||||
chpwd_functions+='scm_detect_root'
|
||||
precmd_functions+='scm_build_prompt_info'
|
||||
|
||||
34
themes/pixelplastic.zsh-theme
Normal file
34
themes/pixelplastic.zsh-theme
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
# see http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html for color codes
|
||||
PROMPT_PREFIX="$(xterm_color 243 '%n')$(xterm_color 240 '@')$(xterm_color 238 '%m')"
|
||||
|
||||
PROMPT='$PROMPT_PREFIX $(xterm_color 76 "${PWD/#$HOME/~}") $SCM_PROMPT_INFO
|
||||
$(xterm_color 33 $(scm_prompt_char))> '
|
||||
|
||||
RPROMPT='$RPROMPT_SUFFIX'
|
||||
|
||||
ZSH_THEME_GIT_PROMPT_PREFIX="on $(xterm_color_open 220)"
|
||||
ZSH_THEME_GIT_PROMPT_SUFFIX="$(xterm_color_reset)"
|
||||
ZSH_THEME_GIT_PROMPT_DIRTY=" $(xterm_color 196 '(!)')"
|
||||
ZSH_THEME_GIT_PROMPT_UNTRACKED=" $(xterm_color 33 '(+)')"
|
||||
ZSH_THEME_GIT_PROMPT_CLEAN=""
|
||||
|
||||
# Map the default colors to more pastelesque colors
|
||||
# see https://code.google.com/p/mintty/wiki/Tips#Changing_colours
|
||||
# see http://stackoverflow.com/questions/1057564/pretty-git-branch-graphs#comment12477465_9074343
|
||||
echo -ne '\e]4;0;#202020\a' # black
|
||||
echo -ne '\e]4;1;#5d1a14\a' # red
|
||||
echo -ne '\e]4;2;#424e24\a' # green
|
||||
echo -ne '\e]4;3;#6f5028\a' # yellow
|
||||
echo -ne '\e]4;4;#263e4e\a' # blue
|
||||
echo -ne '\e]4;5;#3e1f50\a' # magenta
|
||||
echo -ne '\e]4;6;#234e3f\a' # cyan
|
||||
echo -ne '\e]4;7;#979797\a' # white (light grey really)
|
||||
echo -ne '\e]4;8;#555555\a' # bold black (i.e. dark grey)
|
||||
echo -ne '\e]4;9;#e32424\a' # bold red
|
||||
echo -ne '\e]4;10;#65c734\a' # bold green
|
||||
echo -ne '\e]4;11;#dae83a\a' # bold yellow
|
||||
echo -ne '\e]4;12;#4790c4\a' # bold blue
|
||||
echo -ne '\e]4;13;#a256c7\a' # bold magenta
|
||||
echo -ne '\e]4;14;#40c7b0\a' # bold cyan
|
||||
echo -ne '\e]4;15;#fefefe\a' # bold white
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue