overhaul prompt management; make it easier to add/remove things to {,r}prompt over time

This commit is contained in:
Nicole O'Connor 2023-06-30 17:05:18 -07:00
parent ed5afe0300
commit 798ced71aa
5 changed files with 51 additions and 11 deletions

View File

@ -4,4 +4,4 @@ function precmd_tab_directory () {
print -Pn "\e]0;%n@%m: %~\a"
}
precmd_functions+="precmd_tab_directory"
precmd_functions+="precmd_tab_directory"

24
base/prompt.zsh Normal file
View File

@ -0,0 +1,24 @@
typeset -ag prompt_functions
typeset -ag rprompt_functions
function prompt_builder () {
result=""
for prompt_func in $prompt_functions; do
result="${result}$($prompt_func) "
done
# prompt will always end with "% " (or "# " if we're somehow root)
result="${result}%#%{$reset_color%} "
print "${result}"
}
function rprompt_builder () {
result=""
for rprompt_func in $rprompt_functions; do
result="$($rprompt_func) ${result}"
done
result="${result}%{$reset_color%}"
print "${result}"
}
PROMPT='$(prompt_builder)'
RPROMPT='$(rprompt_builder)'

19
modules/base_prompt.zsh Normal file
View File

@ -0,0 +1,19 @@
# PROMPT="%{$fg_bold[cyan]%}%n%{$fg_bold[white]%}@%{$fg_bold[magenta]%}%m %{$fg_bold[white]%}%~ %# %{$reset_color%}"
# RPROMPT="%(?..%{$fg[red]%}%? )$RPROMPT"
function prompt_userathost () {
print "%{$fg_bold[cyan]%}%n%{$fg_bold[white]%}@%{$fg_bold[magenta]%}%m %{$fg_bold[white]%}%~"
}
prompt_functions+=prompt_userathost
function rprompt_clock () {
print "%{$fg_bold[black]%}%T"
}
function rprompt_retval () {
print "%(?..%{$fg[red]%}%?)"
}
rprompt_functions+=rprompt_clock
rprompt_functions+=rprompt_retval

View File

@ -6,16 +6,12 @@
# auto_assign_base: false
# changeps1: false
local orig_rprompt="${RPROMPT}"
function precmd_conda_prompt() {
function conda_prompt() {
if [[ -v CONDA_DEFAULT_ENV && "$CONDA_DEFAULT_ENV" != "base" ]]; then
RPROMPT="%{$fg[cyan]%}$CONDA_DEFAULT_ENV %{$reset_color%} ${orig_rprompt}"
else
RPROMPT="${orig_rprompt}"
print "%{$fg[cyan]%}$CONDA_DEFAULT_ENV"
fi
}
if (( ${+commands[conda]} )); then
precmd_functions+=precmd_conda_prompt
rprompt_functions+=conda_prompt
fi

View File

@ -10,9 +10,9 @@ if [[ $cols -lt 80 ]]; then
hostemoji="🖥"
fi
PROMPT="👤%{$fg_bold[white]%}@${hostemoji} %~ %# %{$reset_color%}"
else
PROMPT="%{$fg_bold[cyan]%}%n%{$fg_bold[white]%}@%{$fg_bold[magenta]%}%m %{$fg_bold[white]%}%~ %# %{$reset_color%}"
RPROMPT="%(?..%{$fg[red]%}%? )$RPROMPT"
#else
# PROMPT="%{$fg_bold[cyan]%}%n%{$fg_bold[white]%}@%{$fg_bold[magenta]%}%m %{$fg_bold[white]%}%~ %# %{$reset_color%}"
# RPROMPT="%(?..%{$fg[red]%}%? )$RPROMPT"
fi
TMOUT=60
TRAPALRM () {
@ -20,6 +20,7 @@ TRAPALRM () {
}
source ~/.local/share/zeesh/base/precmd.zsh
source ~/.local/share/zeesh/base/prompt.zsh
source ~/.local/share/zeesh/base/updates.zsh
# TODO: handle whether or not to load given modules]