Refactor zsh prompt
This commit is contained in:
parent
bfa44821dd
commit
482785780c
|
@ -15,7 +15,6 @@ prompt_git_dirty() {
|
||||||
# check if it's dirty
|
# check if it's dirty
|
||||||
command test -n "$(git status --porcelain --ignore-submodules -unormal)" || return
|
command test -n "$(git status --porcelain --ignore-submodules -unormal)" || return
|
||||||
|
|
||||||
echo -n "%F{red}[+]"
|
|
||||||
local r=$(command git rev-list --right-only --count HEAD...@'{u}' 2>/dev/null)
|
local r=$(command git rev-list --right-only --count HEAD...@'{u}' 2>/dev/null)
|
||||||
local l=$(command git rev-list --left-only --count HEAD...@'{u}' 2>/dev/null)
|
local l=$(command git rev-list --left-only --count HEAD...@'{u}' 2>/dev/null)
|
||||||
|
|
||||||
|
@ -26,19 +25,16 @@ prompt_git_dirty() {
|
||||||
|
|
||||||
## Hooks ###############################
|
## Hooks ###############################
|
||||||
prompt_hook_precmd() {
|
prompt_hook_precmd() {
|
||||||
print -Pn '\e]0;%~\a' # full path in the title
|
|
||||||
vcs_info # get git info
|
vcs_info # get git info
|
||||||
# Newline before prompt, excpet on init
|
# Newline before prompt, except on init
|
||||||
[[ -n "$_DONE" ]] && print ""; _DONE=1
|
[[ -n "$_DONE" ]] && print ""; _DONE=1
|
||||||
}
|
}
|
||||||
|
|
||||||
## Initialization ######################
|
## Initialization ######################
|
||||||
prompt_init() {
|
prompt_init() {
|
||||||
# prevent percentage showing up if output doesn't end with a newline
|
ZLE_RPROMPT_INDENT=0 # prevent the extra space in the rprompt
|
||||||
export PROMPT_EOL_MARK=''
|
|
||||||
|
|
||||||
prompt_opts=(cr subst percent)
|
|
||||||
|
|
||||||
|
# prompt_opts=(cr subst percent)
|
||||||
setopt PROMPTSUBST
|
setopt PROMPTSUBST
|
||||||
autoload -Uz add-zsh-hook
|
autoload -Uz add-zsh-hook
|
||||||
autoload -Uz vcs_info
|
autoload -Uz vcs_info
|
||||||
|
@ -47,8 +43,8 @@ prompt_init() {
|
||||||
# Updates cursor shape and prompt symbol based on vim mode
|
# Updates cursor shape and prompt symbol based on vim mode
|
||||||
zle-keymap-select() {
|
zle-keymap-select() {
|
||||||
case $KEYMAP in
|
case $KEYMAP in
|
||||||
vicmd) PROMPT_SYMBOL=$N_MODE ;;
|
vicmd) PROMPT_SYMBOL="%F{magenta}## " ;;
|
||||||
main|viins) PROMPT_SYMBOL=$I_MODE ;;
|
main|viins) PROMPT_SYMBOL="%(?.%F{blue}.%F{red})λ " ;;
|
||||||
esac
|
esac
|
||||||
zle reset-prompt
|
zle reset-prompt
|
||||||
zle -R
|
zle -R
|
||||||
|
@ -64,19 +60,10 @@ prompt_init() {
|
||||||
|
|
||||||
# show username@host if logged in through SSH
|
# show username@host if logged in through SSH
|
||||||
prompt_username=
|
prompt_username=
|
||||||
is-ssh && prompt_username='%F{magenta}%n%F{244}@%m '
|
[[ $SSH_CONNECTION ]] && prompt_username='%F{magenta}%n%F{244}@%m '
|
||||||
|
|
||||||
## Vim cursors
|
RPROMPT='%F{cyan}%~ %F{magenta}${vcs_info_msg_0_}$(prompt_git_dirty)%f'
|
||||||
if [[ "$SSH_CONNECTION" ]]; then
|
PROMPT='${prompt_username}${PROMPT_SYMBOL:-$ }'
|
||||||
N_MODE="%F{red}### "
|
|
||||||
I_MODE="%(?.%F{magenta}.%F{red})λ "
|
|
||||||
else
|
|
||||||
N_MODE="%F{magenta}## "
|
|
||||||
I_MODE="%(?.%F{blue}.%F{red})λ "
|
|
||||||
fi
|
|
||||||
|
|
||||||
RPROMPT='%F{cyan}${vcs_info_msg_0_}$(prompt_git_dirty)%f'
|
|
||||||
PROMPT='${prompt_username}%F{cyan}%~ %f${PROMPT_SYMBOL:-$ }%f'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
prompt_init "$@"
|
prompt_init "$@"
|
||||||
|
|
Loading…
Reference in a new issue