fix that terribly annoying prompt/completion conflict; make prompt work a little more consistently
This commit is contained in:
parent
ae1fe97ef2
commit
325cdc1ca4
2 changed files with 19 additions and 24 deletions
|
|
@ -6,10 +6,6 @@ setopt PROMPT_SUBST
|
||||||
# Hide rprompt after command execution
|
# Hide rprompt after command execution
|
||||||
setopt TRANSIENT_RPROMPT
|
setopt TRANSIENT_RPROMPT
|
||||||
|
|
||||||
lineup=$'\e[1A'
|
|
||||||
linedown=$'\e[1B'
|
|
||||||
newline=$'\n'
|
|
||||||
|
|
||||||
# vcs_info - used for displaying VCS information in prompt
|
# vcs_info - used for displaying VCS information in prompt
|
||||||
zstyle ':vcs_info:*' actionformats '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '
|
zstyle ':vcs_info:*' actionformats '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '
|
||||||
zstyle ':vcs_info:*' formats '(%b) '
|
zstyle ':vcs_info:*' formats '(%b) '
|
||||||
|
|
@ -18,23 +14,26 @@ autoload -Uz vcs_info
|
||||||
precmd_functions+="vcs_info"
|
precmd_functions+="vcs_info"
|
||||||
|
|
||||||
# Prompt shows hostname if connected to a remote or if root
|
# Prompt shows hostname if connected to a remote or if root
|
||||||
PROMPT_NORMAL="$newline%B$([ -n "$is_remote" ] || [ "$EUID" = 0 ] && echo "%F{magenta}%m%f ")%F{$([ "$EUID" = 0 ] && echo "red" || echo "\${PROMPT_NAME_COLOR:-cyan}")}%n%f %F{blue}%~%f%b \${vcs_info_msg_0_}$newline%B%#%b "
|
prompt_host_="$([ -n "$is_remote" ] || [ "$EUID" = 0 ] && echo "%B%F{magenta}%m%f%b ")"
|
||||||
|
prompt_user_color="$([ "$EUID" = 0 ] && echo "red" || echo "\${PROMPT_NAME_COLOR:-cyan}")"
|
||||||
|
prompt_user="%B%F{$prompt_user_color}%n%f"
|
||||||
|
prompt_dir="%B%F{blue}%~%f%b"
|
||||||
|
prompt_vcs_info_="\${vcs_info_msg_0_}"
|
||||||
|
|
||||||
|
prompt_normal="$prompt_host_$prompt_user $prompt_dir $prompt_vcs_info_"$'\n'"%B%#%b "
|
||||||
|
|
||||||
# Also create a minimal prompt which is displayed for previously run commands
|
# Also create a minimal prompt which is displayed for previously run commands
|
||||||
PROMPT_MINIMAL="%F{$([ -n "$is_remote" ] && echo "magenta" || [ "$EUID" = 0 ] && echo "red" || echo "\${PROMPT_NAME_COLOR:-cyan}")}%B%#%b%f "
|
prompt_minimal="%B%F{$prompt_user_color}%#%f%b "
|
||||||
|
|
||||||
# Replace prompt with a smaller form on enter
|
# Replace prompt with a smaller form on enter
|
||||||
PROMPT="$PROMPT_NORMAL"
|
PROMPT="$prompt_normal"
|
||||||
function del-prompt-accept-line {
|
function del-prompt-accept-line {
|
||||||
# store current prompts
|
# store current prompts
|
||||||
# remove everything from left prompt except %/#
|
# remove everything from left prompt except %/#
|
||||||
PROMPT="$PROMPT_MINIMAL"
|
PROMPT="$prompt_minimal"
|
||||||
RPROMPT_OLD="$RPROMPT"
|
zle reset-prompt
|
||||||
RPROMPT=""
|
PROMPT="$prompt_normal"
|
||||||
zle reset-prompt
|
zle accept-line
|
||||||
PROMPT="$PROMPT_NORMAL"
|
|
||||||
RPROMPT="$RPROMPT_OLD"
|
|
||||||
zle accept-line
|
|
||||||
}
|
}
|
||||||
zle -N del-prompt-accept-line
|
zle -N del-prompt-accept-line
|
||||||
bindkey '^M' del-prompt-accept-line
|
bindkey '^M' del-prompt-accept-line
|
||||||
|
|
@ -72,14 +71,13 @@ function build_rprompt {
|
||||||
else
|
else
|
||||||
# Calculate elapsed real time for last command
|
# Calculate elapsed real time for last command
|
||||||
now="$(date +%s.%N)"
|
now="$(date +%s.%N)"
|
||||||
if [[ $(($now - $rprompt_exec_timer)) > 0.5 ]]; then
|
delta=$(($now - $rprompt_exec_timer))
|
||||||
timer_show=$(($now - $rprompt_exec_timer))
|
if [[ $delta > 0.5 ]]; then
|
||||||
timer_show=$(printf '%.*f\n' 3 $timer_show)
|
RPROMPT="took %B%F{cyan}$(printf '%.*f\n' 3 $delta)s%f%b, $RPROMPT"
|
||||||
RPROMPT="took %B%F{cyan}${timer_show}s%f%b, $RPROMPT"
|
|
||||||
fi
|
fi
|
||||||
# if the command took a *really* long time, play a bell when it's
|
# if the command took a *really* long time, play a bell when it's
|
||||||
# done
|
# done
|
||||||
if [[ $(($now - $rprompt_exec_timer)) > 15 ]]; then
|
if [[ $delta > 15 ]]; then
|
||||||
tput bel
|
tput bel
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
@ -90,9 +88,6 @@ function build_rprompt {
|
||||||
exittime="$(print -P "$timeformat")"
|
exittime="$(print -P "$timeformat")"
|
||||||
RPROMPT="$RPROMPT at $exittime"
|
RPROMPT="$RPROMPT at $exittime"
|
||||||
|
|
||||||
# this is all info about the previous command, so put it up a line from the main prompt
|
|
||||||
RPROMPT="%{$lineup%}$RPROMPT%{$linedown%}"
|
|
||||||
|
|
||||||
# that's an RPROMPT!
|
# that's an RPROMPT!
|
||||||
export RPROMPT
|
export RPROMPT
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue