diff --git a/zsh/.config/zsh/config.d/30_prompts.zsh b/zsh/.config/zsh/config.d/30_prompts.zsh index ce2b0ee..f875dc4 100644 --- a/zsh/.config/zsh/config.d/30_prompts.zsh +++ b/zsh/.config/zsh/config.d/30_prompts.zsh @@ -6,10 +6,6 @@ setopt PROMPT_SUBST # Hide rprompt after command execution setopt TRANSIENT_RPROMPT -lineup=$'\e[1A' -linedown=$'\e[1B' -newline=$'\n' - # 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:*' formats '(%b) ' @@ -18,23 +14,26 @@ autoload -Uz vcs_info precmd_functions+="vcs_info" # 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 -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 -PROMPT="$PROMPT_NORMAL" +PROMPT="$prompt_normal" function del-prompt-accept-line { - # store current prompts - # remove everything from left prompt except %/# - PROMPT="$PROMPT_MINIMAL" - RPROMPT_OLD="$RPROMPT" - RPROMPT="" - zle reset-prompt - PROMPT="$PROMPT_NORMAL" - RPROMPT="$RPROMPT_OLD" - zle accept-line + # store current prompts + # remove everything from left prompt except %/# + PROMPT="$prompt_minimal" + zle reset-prompt + PROMPT="$prompt_normal" + zle accept-line } zle -N del-prompt-accept-line bindkey '^M' del-prompt-accept-line @@ -72,14 +71,13 @@ function build_rprompt { else # Calculate elapsed real time for last command now="$(date +%s.%N)" - if [[ $(($now - $rprompt_exec_timer)) > 0.5 ]]; then - timer_show=$(($now - $rprompt_exec_timer)) - timer_show=$(printf '%.*f\n' 3 $timer_show) - RPROMPT="took %B%F{cyan}${timer_show}s%f%b, $RPROMPT" + delta=$(($now - $rprompt_exec_timer)) + if [[ $delta > 0.5 ]]; then + RPROMPT="took %B%F{cyan}$(printf '%.*f\n' 3 $delta)s%f%b, $RPROMPT" fi # if the command took a *really* long time, play a bell when it's # done - if [[ $(($now - $rprompt_exec_timer)) > 15 ]]; then + if [[ $delta > 15 ]]; then tput bel fi fi @@ -90,9 +88,6 @@ function build_rprompt { exittime="$(print -P "$timeformat")" 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! export RPROMPT diff --git a/zsh/.config/zsh/config.d/10_completions.zsh b/zsh/.config/zsh/config.d/31_completions.zsh similarity index 100% rename from zsh/.config/zsh/config.d/10_completions.zsh rename to zsh/.config/zsh/config.d/31_completions.zsh