X-Git-Url: https://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=8a836cd2f0a18066a15f837d565dcc14f174d738;hb=refs%2Ftags%2Fv0.3.66;hp=5b09f25cbb0032ba2c5aa7104d049c841e95163f;hpb=7ed37a114a4cac77069d7dc37d20a92e6d1e0fd3;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index 5b09f25..8a836cd 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -230,6 +230,8 @@ zrcautoload is-at-least || is-at-least() { return 1 } NOCOR=${NOCOR:-0} NOMENU=${NOMENU:-0} NOPRECMD=${NOPRECMD:-0} +COMMAND_NOT_FOUND=${COMMAND_NOT_FOUND:-0} +GRML_ZSH_CNF_HANDLER=${GRML_ZSH_CNF_HANDLER:-/usr/share/command-not-found/command-not-found} BATTERY=${BATTERY:-0} GRMLSMALL_SPECIFIC=${GRMLSMALL_SPECIFIC:-1} GRML_ALWAYS_LOAD_ALL=${GRML_ALWAYS_LOAD_ALL:-0} @@ -453,9 +455,7 @@ zrclocal() { #}}} # locale setup {{{ -if [[ -z "$LANG" ]] ; then - xsource "/etc/default/locale" -fi +xsource "/etc/default/locale" export LANG=${LANG:-en_US.iso885915} for var in LC_ALL LC_MESSAGES ; do @@ -630,6 +630,14 @@ grml_toggle_abbrev() { zle -N grml_toggle_abbrev bindkey '^xA' grml_toggle_abbrev +# add a command line to the shells history without executing it +commit-to-history() { + print -s ${(z)BUFFER} + zle send-break +} +zle -N commit-to-history +bindkey "^x^h" commit-to-history + # }}} # a generic accept-line wrapper {{{ @@ -1032,7 +1040,7 @@ fi battery() { if [[ $BATTERY -gt 0 ]] ; then - PERCENT="${${"$(acpi 2>/dev/null)"}/(#b)[[:space:]]##Battery <->: [^0-9]##, (<->)%*/${match[1]}}" + PERCENT="${${"$(acpi 2>/dev/null)"}/(#b)[[:space:]]#Battery <->: [^0-9]##, (<->)%*/${match[1]}}" if [[ -z "$PERCENT" ]] ; then PERCENT='acpi not present' else @@ -1907,6 +1915,19 @@ fi # }}} +# command not found handling {{{ + +(( ${COMMAND_NOT_FOUND} == 1 )) && +function command_not_found_handler() { + setopt localoptions no_sh_wordsplit + if [[ -x ${GRML_ZSH_CNF_HANDLER} ]] ; then + ${GRML_ZSH_CNF_HANDLER} $1 + fi + return 1 +} + +# }}} + # {{{ set prompt if zrcautoload promptinit && promptinit 2>/dev/null ; then promptinit # people should be able to use their favourite prompt @@ -2195,6 +2216,11 @@ the zsh yet. :) "NOTITLE=1 zsh" => disable setting the title of xterms without disabling preexec() and precmd() completely "BATTERY=1 zsh" => activate battery status (via acpi) on right side of prompt + "COMMAND_NOT_FOUND=1 zsh" + => Enable a handler if an external command was not found + The command called in the handler can be altered by setting + the GRML_ZSH_CNF_HANDLER variable, the default is: + "/usr/share/command-not-found/command-not-found" A value greater than 0 is enables a feature; a value equal to zero disables it. If you like one or the other of these settings, you can @@ -2465,7 +2491,9 @@ grmlcomp() { # use generic completion system for programs not yet defined; (_gnu_generic works # with commands that provide a --help option with "standard" gnu-like output.) - compdef _gnu_generic tail head feh cp mv df stow uname ipacsum fetchipac + for compcom in tail head feh cp mv df stow uname ipacsum fetchipac; do + [[ -z ${_comps[$compcom]} ]] && compdef _gnu_generic ${compcom} + done; unset compcom # see upgrade function in this file compdef _hosts upgrade @@ -2846,6 +2874,17 @@ minimal-shell() { exec env -i ENV="/etc/minimal-shellrc" HOME="$HOME" TERM="$TERM" ksh } +# a wrapper for vim, that deals with title setting +# VIM_OPTIONS +# set this array to a set of options to vim you always want +# to have set when calling vim (in .zshrc.local), like: +# VIM_OPTIONS=( -p ) +# This will cause vim to send every file given on the +# commandline to be send to it's own tab (needs vim7). +vim() { + VIM_PLEASE_SET_TITLE='yes' command vim ${VIM_OPTIONS} "$@" +} + # make a backup of a file bk() { cp -a "$1" "${1}_$(date --iso-8601=seconds)"