zsh: streamline and simplify zsh prompt
This commit is contained in:
parent
9b2c8b65c7
commit
36925c573c
1 changed files with 30 additions and 29 deletions
|
@ -35,8 +35,15 @@ precmd.is_git_repo() {
|
||||||
[[ ! -e $prompt_git_dir/nozsh ]]
|
[[ ! -e $prompt_git_dir/nozsh ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
precmd.prompt.init() {
|
precmd.prompt.add_plain() {
|
||||||
typeset -g prompt_string= prev_color=
|
(( $# < 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() {
|
precmd.prompt.add() {
|
||||||
|
@ -50,28 +57,11 @@ precmd.prompt.add() {
|
||||||
prev_color=$color
|
prev_color=$color
|
||||||
}
|
}
|
||||||
|
|
||||||
precmd.prompt.bang() {
|
|
||||||
prompt_string+="%F{$prev_color}%k$prompt_symbols[sep_a]%f$prompt_symbols[bang] "
|
|
||||||
}
|
|
||||||
|
|
||||||
precmd.prompt.apply() {
|
precmd.prompt.apply() {
|
||||||
PROMPT=$prompt_string
|
PROMPT=$prompt_string
|
||||||
unset 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.pre_git() {
|
||||||
precmd.prompt.add "$prompt_symbols[git] $prompt_symbols[ellipsis]" $prompt_colors[git_branch]
|
precmd.prompt.add "$prompt_symbols[git] $prompt_symbols[ellipsis]" $prompt_colors[git_branch]
|
||||||
}
|
}
|
||||||
|
@ -104,16 +94,27 @@ precmd.prompt.git() {
|
||||||
}
|
}
|
||||||
|
|
||||||
precmd.prompt() {
|
precmd.prompt() {
|
||||||
precmd.prompt.init
|
typeset -g prompt_string= prev_color=
|
||||||
precmd.prompt.user
|
|
||||||
precmd.prompt.ssh
|
precmd.prompt.add \[ 7
|
||||||
precmd.prompt.cwd
|
(( 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.git_update() {
|
||||||
precmd.prompt
|
precmd.prompt git
|
||||||
precmd.prompt.git
|
|
||||||
precmd.prompt.bang
|
|
||||||
[[ ! -p $prompt_fifo ]] && mkfifo -m 0600 $prompt_fifo
|
[[ ! -p $prompt_fifo ]] && mkfifo -m 0600 $prompt_fifo
|
||||||
echo -n $prompt_string > $prompt_fifo &!
|
echo -n $prompt_string > $prompt_fifo &!
|
||||||
kill -s USR1 $$
|
kill -s USR1 $$
|
||||||
|
@ -131,12 +132,12 @@ precmd.window_title() {
|
||||||
|
|
||||||
precmd() {
|
precmd() {
|
||||||
precmd.window_title
|
precmd.window_title
|
||||||
precmd.prompt
|
|
||||||
if precmd.is_git_repo; then
|
if precmd.is_git_repo; then
|
||||||
precmd.prompt.pre_git
|
precmd.prompt pre_git
|
||||||
precmd.git_update &!
|
precmd.git_update &!
|
||||||
|
else
|
||||||
|
precmd.prompt
|
||||||
fi
|
fi
|
||||||
precmd.prompt.bang
|
|
||||||
precmd.prompt.apply
|
precmd.prompt.apply
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue