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