X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=4fa913e19e21e5fba44f43def2a6d69c7dbd106d;hb=316eaebc386b455ca1ecd08f8fa81527f899e101;hp=0779644342db5fdfcc4b30df5178939b15afa65d;hpb=c875d64b68ce86c7b3f3e6670d5f06a84d164013;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index 0779644..4fa913e 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -1339,11 +1339,23 @@ function prompt_grml_help () { __EOF0__ } -function prompt_grml_setup () { +function grml_prompt_setup () { emulate -L zsh autoload -Uz vcs_info autoload -Uz add-zsh-hook - add-zsh-hook precmd prompt_grml_precmd + add-zsh-hook precmd prompt_$1_precmd +} + +function prompt_grml_setup () { + grml_prompt_setup grml +} + +function prompt_grml-chroot_setup () { + grml_prompt_setup grml-chroot +} + +function prompt_grml-large_setup () { + grml_prompt_setup grml-large } typeset -gA grml_prompt_pre_default \ @@ -1362,6 +1374,13 @@ grml_prompt_pre_default=( percent '' sad-smiley '' battery ' ' + newline '' + jobs '%F{cyan}' + history '%F{green}' + date '%F{blue}' + time '%F{blue}' + shell-level '%F{red}' + grml-chroot '%F{red}' ) grml_prompt_post_default=( @@ -1370,12 +1389,19 @@ grml_prompt_post_default=( change-root '' user '%f%b' at '' - host ' ' - path ' %B' + host '' + path '%B' vcs '' - percent ' ' + percent '' sad-smiley '' battery '' + newline '' + jobs '%f' + history '%f' + date '%f' + time '%f' + shell-level '%f' + grml-chroot '%f ' ) grml_prompt_token_default=( @@ -1384,12 +1410,19 @@ grml_prompt_token_default=( change-root 'debian_chroot' user '%n' at '@' - host '%m' - path '%40<..<%~%<<' + host '%m ' + path '%40<..<%~%<< ' vcs '0' - percent '%%' + percent '%% ' sad-smiley '%(?..:()' battery 'PERCENT' + newline $'\n' + jobs '[%j running job(s)] ' + history '{history#%!} ' + date '%D{%Y-%m-%d}' + time '%D{%H:%M:%S} ' + shell-level '%(3L.+ .)' + grml-chroot 'GRML_CHROOT' ) function grml_typeset_and_wrap () { @@ -1429,6 +1462,11 @@ function grml_prompt_addto () { change-root) grml_typeset_and_wrap $target $new '(' ')' ;; + grml-chroot) + if [[ -n ${(P)new} ]]; then + typeset -g "${target}=${(P)target}(CHROOT)" + fi + ;; vcs) v="vcs_info_msg_${new}_" if (( ! vcscalled )); then @@ -1447,12 +1485,42 @@ function grml_prompt_addto () { function prompt_grml_precmd () { emulate -L zsh - local -i vcscalled=0 local grmltheme=grml + local -a left_items right_items + left_items=(rc change-root user at host path vcs percent) + right_items=(sad-smiley) + + prompt_grml_precmd_worker +} + +function prompt_grml-chroot_precmd () { + emulate -L zsh + local grmltheme=grml-chroot + local -a left_items right_items + left_items=(grml-chroot user at host path percent) + right_items=() + + prompt_grml_precmd_worker +} + +function prompt_grml-large_precmd () { + emulate -L zsh + local grmltheme=grml-large + local -a left_items right_items + left_items=(rc jobs history shell-level change-root time date newline + user at host path vcs percent) + right_items=(sad-smiley) - grml_prompt_addto PS1 rc change-root user at host path vcs percent + prompt_grml_precmd_worker +} + +function prompt_grml_precmd_worker () { + emulate -L zsh + local -i vcscalled=0 + + grml_prompt_addto PS1 "${left_items[@]}" if zstyle -T ":prompt:${grmltheme}:right:setup" use-rprompt; then - grml_prompt_addto RPS1 sad-smiley + grml_prompt_addto RPS1 "${right_items[@]}" fi } @@ -1463,7 +1531,7 @@ if zrcautoload promptinit && promptinit 2>/dev/null ; then # Since we define the required functions in here and not in files in # $fpath, we need to stick the theme's name into `$prompt_themes' # ourselves, since promptinit does not pick them up otherwise. - prompt_themes+=( grml ) + prompt_themes+=( grml grml-chroot grml-large ) # Also, keep the array sorted... prompt_themes=( "${(@on)prompt_themes}" ) @@ -1472,15 +1540,14 @@ if zrcautoload promptinit && promptinit 2>/dev/null ; then add-zsh-hook precmd battery fi if [[ "$TERM" == dumb ]] ; then - zstyle ':prompt:grml:*:items:rc' pre '' - zstyle ':prompt:grml:*:items:user' pre '' - zstyle ':prompt:grml:*:items:path' pre '' - zstyle ':prompt:grml:*:items:rc' post '' - zstyle ':prompt:grml:*:items:user' post '' - zstyle ':prompt:grml:*:items:path' post ' ' - zstyle ':prompt:grml:right:setup' use-rprompt false - elif (( EUID != 0 )); then - zstyle ':prompt:grml:*:items:user' pre '%F{red}' + for i in rc user path jobs history date time shell-level; do + zstyle ":prompt:grml(|-large|-chroot):*:items:$i" pre '' + zstyle ':prompt:grml(|-large|-chroot):*:items:$i' post '' + done + unset i + zstyle ':prompt:grml(|-large|-chroot):right:setup' use-rprompt false + elif (( EUID == 0 )); then + zstyle ':prompt:grml(|-large|-chroot):*:items:user' pre '%F{red}' fi else print 'Notice: no promptinit available :('