From 36925c573cb8c338a983012495631d1f197f6fdb Mon Sep 17 00:00:00 2001 From: Von Random Date: Thu, 3 Aug 2023 17:48:30 +0300 Subject: [PATCH] zsh: streamline and simplify zsh prompt --- cli/.config/zsh/powerline.zsh | 59 ++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/cli/.config/zsh/powerline.zsh b/cli/.config/zsh/powerline.zsh index 7fd7732..e0e8cb3 100644 --- a/cli/.config/zsh/powerline.zsh +++ b/cli/.config/zsh/powerline.zsh @@ -35,8 +35,15 @@ precmd.is_git_repo() { [[ ! -e $prompt_git_dir/nozsh ]] } -precmd.prompt.init() { - typeset -g prompt_string= prev_color= +precmd.prompt.add_plain() { + (( $# < 1 )) && return 1 + typeset data=$1 color=$2 + [[ -n $prompt_string ]] && prompt_string+=" " + if [[ -n $color ]]; then + prompt_string+="%F{$color}$data%f" + else + prompt_string+="$data" + fi } precmd.prompt.add() { @@ -50,28 +57,11 @@ precmd.prompt.add() { prev_color=$color } -precmd.prompt.bang() { - prompt_string+="%F{$prev_color}%k$prompt_symbols[sep_a]%f$prompt_symbols[bang] " -} - precmd.prompt.apply() { PROMPT=$prompt_string unset prompt_string } -precmd.prompt.user() { - (( UID )) || precmd.prompt.add '#' $prompt_colors[root] -} - -precmd.prompt.cwd() { - precmd.prompt.add %~ $prompt_colors[cwd] -} - -precmd.prompt.ssh() { - [[ -n $SSH_CONNECTION ]] || return 0 - precmd.prompt.add %n@%m $prompt_colors[ssh] -} - precmd.prompt.pre_git() { precmd.prompt.add "$prompt_symbols[git] $prompt_symbols[ellipsis]" $prompt_colors[git_branch] } @@ -104,16 +94,27 @@ precmd.prompt.git() { } precmd.prompt() { - precmd.prompt.init - precmd.prompt.user - precmd.prompt.ssh - precmd.prompt.cwd + typeset -g prompt_string= prev_color= + + precmd.prompt.add \[ 7 + (( UID )) \ + || precmd.prompt.add '#' $prompt_colors[root] + [[ -n $SSH_CONNECTION ]]\ + && precmd.prompt.add %n@%m $prompt_colors[ssh] + + precmd.prompt.add %~ $prompt_colors[cwd] + + [[ $1 == pre_git ]]\ + && precmd.prompt.pre_git + [[ $1 == git ]]\ + && precmd.prompt.git + + precmd.prompt.add \] 7 + prompt_string+="%F{$prev_color}%k$prompt_symbols[sep_a]%f$prompt_symbols[bang] " } precmd.git_update() { - precmd.prompt - precmd.prompt.git - precmd.prompt.bang + precmd.prompt git [[ ! -p $prompt_fifo ]] && mkfifo -m 0600 $prompt_fifo echo -n $prompt_string > $prompt_fifo &! kill -s USR1 $$ @@ -131,12 +132,12 @@ precmd.window_title() { precmd() { precmd.window_title - precmd.prompt if precmd.is_git_repo; then - precmd.prompt.pre_git + precmd.prompt pre_git precmd.git_update &! + else + precmd.prompt fi - precmd.prompt.bang precmd.prompt.apply }