X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=bd54c2b1b239493673b5822a4faeaac665b24526;hb=3c7bb2fa9a9957d4703b51cc54de094bd4232822;hp=d8bb45304aa20ccb04231e9c0a4a103a8cadd00e;hpb=e5d1d0b354ab8ebe16b4f78aadec91ed861fd04c;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index d8bb453..bd54c2b 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -906,11 +906,11 @@ if is4 && [[ -n ${(k)modules[zsh/complist]} ]] ; then fi # press "ctrl-e d" to insert the actual date in the form yyyy-mm-dd -_bkdate() { BUFFER="$BUFFER$(date '+%F')"; CURSOR=$#BUFFER; } -zle -N _bkdate +insert-datestamp() { LBUFFER+=${(%):-'%D{%Y-%m-%d}'}; } +zle -N insert-datestamp #k# Insert a timestamp on the command line (yyyy-mm-dd) -bindkey '^Ed' _bkdate +bindkey '^Ed' insert-datestamp # press esc-m for inserting last typed word again (thanks to caphuso!) insert-last-typed-word() { zle insert-last-word -- 0 -1 }; @@ -1143,6 +1143,12 @@ if ! is41 ; then zstyle ':vcs_info:*' enable false fi +if zrcautoload vcs_info; then + GRML_VCS_INFO=0 +else +# I'm not reindenting the whole code below. +GRML_VCS_INFO=1 + # The following code is imported from the file 'zsh/functions/vcs_info' # from , # which distributed under the same terms as zsh itself. @@ -1790,7 +1796,7 @@ VCS_INFO_cdv_detect() { #{{{ } # }}} VCS_INFO_cvs_detect() { #{{{ - VCS_INFO_check_com svn || return 1 + VCS_INFO_check_com cvs || return 1 [[ -d "./CVS" ]] && [[ -r "./CVS/Repository" ]] && return 0 return 1 } @@ -1971,6 +1977,8 @@ vcs_info () { # {{{ VCS_INFO_set --nvcs preinit # }}} +fi + # Change vcs_info formats for the grml prompt. The 2nd format sets up # $vcs_info_msg_1_ to contain "zsh: repo-name" used to set our screen title. # TODO: The included vcs_info() version still uses $VCS_INFO_message_N_. @@ -2045,6 +2053,8 @@ is4 && [[ $NOPRECMD -eq 0 ]] && precmd () { if [[ $TERM == screen* ]] ; then if [[ -n ${VCS_INFO_message_1_} ]] ; then ESC_print ${VCS_INFO_message_1_} + elif [[ -n ${vcs_info_msg_1_} ]] ; then + ESC_print ${vcs_info_msg_1_} else ESC_print "zsh" fi @@ -2105,23 +2115,29 @@ fi # don't use colors on dumb terminals (like emacs): if [[ "$TERM" == dumb ]] ; then - PROMPT="${EXITCODE}${debian_chroot:+($debian_chroot)}%n@%m %40<...<%B%~%b%<< "'${VCS_INFO_message_0_}'"%# " + PROMPT="${EXITCODE}${debian_chroot:+($debian_chroot)}%n@%m %40<...<%B%~%b%<< " else # only if $GRMLPROMPT is set (e.g. via 'GRMLPROMPT=1 zsh') use the extended prompt # set variable identifying the chroot you work in (used in the prompt below) if [[ $GRMLPROMPT -gt 0 ]] ; then PROMPT="${RED}${EXITCODE}${CYAN}[%j running job(s)] ${GREEN}{history#%!} ${RED}%(3L.+.) ${BLUE}%* %D -${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< "'${VCS_INFO_message_0_}'"%# " +${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< " else # This assembles the primary prompt string if (( EUID != 0 )); then - PROMPT="${RED}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< "'${VCS_INFO_message_0_}'"%# " + PROMPT="${RED}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< " else - PROMPT="${BLUE}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}${RED}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< "'${VCS_INFO_message_0_}'"%# " + PROMPT="${BLUE}${EXITCODE}${WHITE}${debian_chroot:+($debian_chroot)}${RED}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< " fi fi fi +if (( GRML_VCS_INFO )); then + PROMPT="${PROMPT}"'${VCS_INFO_message_0_}'"%# " +else + PROMPT="${PROMPT}"'${vcs_info_msg_0_}'"%# " +fi + # if we are inside a grml-chroot set a specific prompt theme if [[ -n "$GRML_CHROOT" ]] ; then PROMPT="%{$fg[red]%}(CHROOT) %{$fg_bold[red]%}%n%{$fg_no_bold[white]%}@%m %40<...<%B%~%b%<< %\# " @@ -2149,7 +2165,11 @@ if check_com -c screen ; then elif [[ -r $HOME/.screenrc ]] ; then alias screen="${commands[screen]} -c $HOME/.screenrc" else - [[ -r /etc/grml/screenrc_grml ]] && alias screen="${commands[screen]} -c /etc/grml/screenrc_grml" + if [[ -r /etc/grml/screenrc_grml ]]; then + alias screen="${commands[screen]} -c /etc/grml/screenrc_grml" + else + [[ -r /etc/grml/screenrc ]] && alias screen="${commands[screen]} -c /etc/grml/screenrc" + fi fi fi @@ -2244,6 +2264,12 @@ check_com 0 || alias 0='return 0' check_com S &>/dev/null || alias S='screen' check_com s &>/dev/null || alias s='ssh' +# especially for roadwarriors using GNU screen and ssh: +if ! check_com asc &>/dev/null ; then + asc() { autossh -t "$@" 'screen -RdU' } + compdef asc=ssh +fi + # get top 10 shell commands: alias top10='print -l ? ${(o)history%% *} | uniq -c | sort -nr | head -n 10' @@ -2465,8 +2491,8 @@ grmlcomp() { # format on completion zstyle ':completion:*:descriptions' format $'%{\e[0;31m%}completing %B%d%b%{\e[0m%}' - # complete 'cd -' with menu - zstyle ':completion:*:*:cd:*:directory-stack' menu yes select + # automatically complete 'cd -' and 'cd -' with menu + # zstyle ':completion:*:*:cd:*:directory-stack' menu yes select # insert all expansions for expand completer zstyle ':completion:*:expand:*' tag-order all-expansions @@ -3961,50 +3987,6 @@ getair() { [[ -x /usr/local/bin/air ]] && [[ -n "$DISPLAY" ]] && $SUDO air } -#f5# Get specific git commitdiff -git-get-diff() { - emulate -L zsh - if [[ -z $GITTREE ]] ; then - GITTREE='linux/kernel/git/torvalds/linux-2.6.git' - fi - if ! [[ -z $1 ]] ; then - ${=BROWSER} "http://kernel.org/git/?p=$GITTREE;a=commitdiff;h=$1" - else - echo "Usage: git-get-diff " - fi -} - -#f5# Get specific git commit -git-get-commit() { - emulate -L zsh - if [[ -z $GITTREE ]] ; then - GITTREE='linux/kernel/git/torvalds/linux-2.6.git' - fi - if ! [[ -z $1 ]] ; then - ${=BROWSER} "http://kernel.org/git/?p=$GITTREE;a=commit;h=$1" - else - echo "Usage: git-get-commit " - fi -} - -#f5# Get specific git diff -git-get-plaindiff () { - emulate -L zsh - if [[ -z $GITTREE ]] ; then - GITTREE='linux/kernel/git/torvalds/linux-2.6.git' - fi - if [[ -z $1 ]] ; then - echo 'Usage: git-get-plaindiff ' - else - echo -n "Downloading $1.diff ... " - # avoid "generating ..." stuff from kernel.org server: - wget --quiet "http://kernel.org/git/?p=$GITTREE;a=commitdiff_plain;h=$1" -O /dev/null - wget --quiet "http://kernel.org/git/?p=$GITTREE;a=commitdiff_plain;h=$1" -O $1.diff \ - && echo done || echo failed - fi -} - - # http://strcat.de/blog/index.php?/archives/335-Software-sauber-deinstallieren...html #f5# Log 'make install' output mmake() {