zrcautoload $rh
done; unset rh
+# command not found handling
+
+(( ${COMMAND_NOT_FOUND} == 1 )) &&
+function command_not_found_handler() {
+ emulate -L zsh
+ if [[ -x ${GRML_ZSH_CNF_HANDLER} ]] ; then
+ ${GRML_ZSH_CNF_HANDLER} $1
+ fi
+ return 1
+}
+
# completion system
if zrcautoload compinit ; then
compinit || print 'Notice: no compinit available :('
# - battery status
# - debian_chroot
# - vcs_info setup and version specific fixes
-# - command-not-found handling
-# (TODO: This has nothing to do with prompts: move!)
# display battery status on right side of prompt via running 'BATTERY=1 zsh'
if [[ $BATTERY -gt 0 ]] ; then
# set variable debian_chroot if running in a chroot with /etc/debian_chroot
if [[ -z "$debian_chroot" ]] && [[ -r /etc/debian_chroot ]] ; then
- debian_chroot=$(cat /etc/debian_chroot)
+ debian_chroot=$(</etc/debian_chroot)
fi
# gather version control information for inclusion in a prompt
zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat "%b${RED}:${YELLOW}%r"
fi
-# command not found handling
-
-(( ${COMMAND_NOT_FOUND} == 1 )) &&
-function command_not_found_handler() {
- emulate -L zsh
- if [[ -x ${GRML_ZSH_CNF_HANDLER} ]] ; then
- ${GRML_ZSH_CNF_HANDLER} $1
- fi
- return 1
-}
-
# Now for the fun part: The grml prompt themes in `promptsys' mode of operation
# This actually defines three prompts:
- The attributes used with the items are customisable via strings
used before and after the actual item.
- The available items are: rc, rc-always, change-root, user, at, host, path,
- vcs, percent, sad-smiley, battery.
+ The available items are: at, battery, change-root, date, grml-chroot,
+ history, host, jobs, newline, path, percent, rc, rc-always, sad-smiley,
+ shell-level, time, user, vcs
The actual configuration is done via zsh's \`zstyle' mechanism. The
context, that is used while looking up styles is:
- items (list): The list of items used in the prompt. If \`vcs' is
present in the list, the theme's code invokes \`vcs_info'
- accordingly. Default: rc user change-root at host path vcs precent
+ accordingly. Default (left): rc change-root user at host path vcs
+ percent; Default (right): sad-smiley
Available styles in 'items:<item>' are: pre, post. These are strings that
are inserted before (pre) and after (post) the item in question. Thus, the
__EOF0__
}
+function prompt_grml-chroot_help () {
+ cat <<__EOF0__
+ prompt grml-chroot
+
+ This is a variation of the grml prompt, see: prompt -h grml
+
+ The main difference is the default value of the \`items' style. The rest
+ behaves exactly the same. Here are the defaults for \`grml-chroot':
+
+ - left: grml-chroot user at host path percent
+ - right: (empty list)
+__EOF0__
+}
+
+function prompt_grml-large_help () {
+ cat <<__EOF0__
+ prompt grml-large
+
+ This is a variation of the grml prompt, see: prompt -h grml
+
+ The main difference is the default value of the \`items' style. In
+ particular, this theme uses _two_ lines instead of one with the plain
+ \`grml' theme. The rest behaves exactly the same. Here are the defaults
+ for \`grml-chroot':
+
+ - left: rc jobs history shell-level change-root time date newline user
+ at host path vcs percent
+ - right: sad-smiley
+__EOF0__
+}
+
function grml_prompt_setup () {
emulate -L zsh
autoload -Uz vcs_info
grml_prompt_token_default
grml_prompt_pre_default=(
- rc '%F{red}'
- rc-always ''
- change-root ''
- user '%B%F{blue}'
at ''
+ battery ' '
+ change-root ''
+ date '%F{blue}'
+ grml-chroot '%F{red}'
+ history '%F{green}'
host ''
- path '%b'
- vcs ''
+ jobs '%F{cyan}'
+ newline ''
+ path '%B'
percent ''
+ rc '%F{red}'
+ rc-always ''
sad-smiley ''
- battery ' '
- newline ''
- jobs '%F{cyan}'
- history '%F{green}'
- date '%F{blue}'
- time '%F{blue}'
shell-level '%F{red}'
- grml-chroot '%F{red}'
+ time '%F{blue}'
+ user '%B%F{blue}'
+ vcs ''
)
grml_prompt_post_default=(
- rc '%f'
- rc-always ''
- change-root ''
- user '%f%b'
at ''
+ battery ''
+ change-root ''
+ date '%f'
+ grml-chroot '%f '
+ history '%f'
host ''
- path '%B'
- vcs ''
+ jobs '%f'
+ newline ''
+ path '%b'
percent ''
+ rc '%f'
+ rc-always ''
sad-smiley ''
- battery ''
- newline ''
- jobs '%f'
- history '%f'
- date '%f'
- time '%f'
shell-level '%f'
- grml-chroot '%f '
+ time '%f'
+ user '%f%b'
+ vcs ''
)
grml_prompt_token_default=(
- rc '%(?..%? )'
- rc-always '%?'
- change-root 'debian_chroot'
- user '%n'
at '@'
+ battery 'PERCENT'
+ change-root 'debian_chroot'
+ date '%D{%Y-%m-%d}'
+ grml-chroot 'GRML_CHROOT'
+ history '{history#%!} '
host '%m '
+ jobs '[%j running job(s)] '
+ newline $'\n'
path '%40<..<%~%<< '
- vcs '0'
- percent '%% '
+ percent '% # '
+ rc '%(?..%? )'
+ rc-always '%?'
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'
+ time '%D{%H:%M:%S} '
+ user '%n'
+ vcs '0'
)
function grml_typeset_and_wrap () {
fi
}
-zrcautoload add-zsh-hook || add-zsh-hook () { :; }
-if [[ $NOPRECMD -gt 0 ]]; then
- add-zsh-hook precmd grml_reset_screen_title
- add-zsh-hook precmd grml_vcs_to_screen_title
-fi
-
-# preexec() => a function running before every command
-is4 && [[ $NOPRECMD -eq 0 ]] && \
-preexec () {
- [[ $NOPRECMD -gt 0 ]] && return 0
-# set hostname if not running on host with name 'grml'
+function grml_maintain_name () {
+ # set hostname if not running on host with name 'grml'
if [[ -n "$HOSTNAME" ]] && [[ "$HOSTNAME" != $(hostname) ]] ; then
NAME="@$HOSTNAME"
fi
-# get the name of the program currently running and hostname of local machine
-# set screen window title if running in a screen
+}
+
+function grml_cmd_to_screen_title () {
+ # get the name of the program currently running and hostname of local
+ # machine set screen window title if running in a screen
if [[ "$TERM" == screen* ]] ; then
- # local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} # don't use hostname
- local CMD="${1[(wr)^(*=*|sudo|ssh|-*)]}$NAME" # use hostname
+ local CMD="${1[(wr)^(*=*|sudo|ssh|-*)]}$NAME"
ESC_print ${CMD}
fi
-# adjust title of xterm
- [[ ${NOTITLE} -gt 0 ]] && return 0
+}
+
+function grml_control_xterm_title () {
case $TERM in
(xterm*|rxvt*)
set_title "${(%):-"%n@%m:"}" "$1"
esac
}
+zrcautoload add-zsh-hook || add-zsh-hook () { :; }
+if [[ $NOPRECMD -gt 0 ]]; then
+ add-zsh-hook precmd grml_reset_screen_title
+ add-zsh-hook precmd grml_vcs_to_screen_title
+ add-zsh-hook preexec grml_maintain_name
+ add-zsh-hook preexec grml_cmd_to_screen_title
+ if [[ $NOTITLE -eq 0 ]]; then
+ add-zsh-hook preexec grml_control_xterm_title
+ fi
+fi
+
# 'hash' some often used directories
#d# start
hash -d deb=/var/cache/apt/archives