+function Accept-Line() {
+ setopt localoptions noksharrays
+ local -a subs
+ local -xi aldone
+ local sub
+
+ zstyle -a ":acceptline:${alcontext}" actions subs
+
+ (( ${#subs} < 1 )) && return 0
+
+ (( aldone = 0 ))
+ for sub in ${subs} ; do
+ [[ ${sub} == 'accept-line' ]] && sub='.accept-line'
+ zle ${sub}
+
+ (( aldone > 0 )) && break
+ done
+}
+
+function Accept-Line-getdefault() {
+ local default_action
+
+ zstyle -s ":acceptline:${alcontext}" default_action default_action
+ case ${default_action} in
+ ((accept-line|))
+ printf ".accept-line"
+ ;;
+ (*)
+ printf ${default_action}
+ ;;
+ esac
+}
+
+function accept-line() {
+ setopt localoptions noksharrays
+ local -a cmdline
+ local -x alcontext
+ local buf com fname format msg default_action
+
+ alcontext='default'
+ buf="${BUFFER}"
+ cmdline=(${(z)BUFFER})
+ com="${cmdline[1]}"
+ fname="_${com}"
+
+ zstyle -t ":acceptline:${alcontext}" rehash \
+ && [[ -z ${commands[$com]} ]] \
+ && rehash
+
+ if [[ -n ${reswords[(r)$com]} ]] \
+ || [[ -n ${aliases[$com]} ]] \
+ || [[ -n ${functions[$com]} ]] \
+ || [[ -n ${builtins[$com]} ]] \
+ || [[ -n ${commands[$com]} ]] ; then
+
+ # there is something sensible to execute, just do it.
+ alcontext='normal'
+ zle Accept-Line
+
+ default_action=$(Accept-Line-getdefault)
+ zstyle -T ":acceptline:${alcontext}" call_default \
+ && zle ${default_action}
+ return
+ fi
+
+ if [[ -o correct ]] \
+ || [[ -o correctall ]] \
+ && [[ -n ${functions[$fname]} ]] ; then
+
+ # nothing there to execute but there is a function called
+ # _command_name; a completion widget. Makes no sense to
+ # call it on the commandline, but the correct{,all} options
+ # will ask for it nevertheless, so warn the user.
+ if [[ ${LASTWIDGET} == 'accept-line' ]] ; then
+ # Okay, we warned the user before, he called us again,
+ # so have it his way.
+ alcontext='force'
+ zle Accept-Line
+
+ default_action=$(Accept-Line-getdefault)
+ zstyle -T ":acceptline:${alcontext}" call_default \
+ && zle ${default_action}
+ return
+ fi
+
+ # prepare warning message for the user, configurable via zstyle.
+ zstyle -s ":acceptline:${alcontext}" compwarnfmt msg
+
+ if [[ -z ${msg} ]] ; then
+ msg="%c will not execute and completion %f exists."
+ fi
+
+ zformat -f msg "${msg}" "c:${com}" "f:${fname}"
+
+ zle -M -- "${msg}"
+ return
+ elif [[ -n ${buf//[$' \t\n']##/} ]] ; then
+ # If we are here, the commandline contains something that is not
+ # executable, which is neither subject to _command_name correction
+ # and is not empty. might be a variable assignment
+ alcontext='misc'
+ zle Accept-Line
+
+ default_action=$(Accept-Line-getdefault)
+ zstyle -T ":acceptline:${alcontext}" call_default \
+ && zle ${default_action}
+ return
+ fi
+
+ # If we got this far, the commandline only contains whitespace, or is empty.
+ alcontext='empty'
+ zle Accept-Line
+
+ default_action=$(Accept-Line-getdefault)
+ zstyle -T ":acceptline:${alcontext}" call_default \
+ && zle ${default_action}
+}
+
+zle -N accept-line
+zle -N Accept-Line
+
+# }}}
+
+# power completion - abbreviation expansion {{{
+# power completion / abbreviation expansion / buffer expansion
+# see http://zshwiki.org/home/examples/zleiab for details
+# less risky than the global aliases but powerful as well
+# just type the abbreviation key and afterwards ',.' to expand it
+declare -A abk
+setopt extendedglob
+setopt interactivecomments
+abk=(
+# key # value (#d additional doc string)
+#A# start
+ '...' '../..'
+ '....' '../../..'
+ 'BG' '& exit'
+ 'C' '| wc -l'
+ 'G' '|& grep --color=auto'
+ 'H' '| head'
+ 'Hl' ' --help |& less -r' #d (Display help in pager)
+ 'L' '| less'
+ 'LL' '|& less -r'
+ 'M' '| most'
+ 'N' '&>/dev/null' #d (No Output)
+ 'R' '| tr A-z N-za-m' #d (ROT13)
+ 'SL' '| sort | less'
+ 'S' '| sort -u'
+ 'T' '| tail'
+ 'V' '|& vim -'
+#A# end
+ 'hide' "echo -en '\033]50;nil2\007'"
+ 'tiny' 'echo -en "\033]50;-misc-fixed-medium-r-normal-*-*-80-*-*-c-*-iso8859-15\007"'
+ 'small' 'echo -en "\033]50;6x10\007"'
+ 'medium' 'echo -en "\033]50;-misc-fixed-medium-r-normal--13-120-75-75-c-80-iso8859-15\007"'
+ 'default' 'echo -e "\033]50;-misc-fixed-medium-r-normal-*-*-140-*-*-c-*-iso8859-15\007"'
+ 'large' 'echo -en "\033]50;-misc-fixed-medium-r-normal-*-*-150-*-*-c-*-iso8859-15\007"'
+ 'huge' 'echo -en "\033]50;-misc-fixed-medium-r-normal-*-*-210-*-*-c-*-iso8859-15\007"'
+ 'smartfont' 'echo -en "\033]50;-artwiz-smoothansi-*-*-*-*-*-*-*-*-*-*-*-*\007"'
+ 'semifont' 'echo -en "\033]50;-misc-fixed-medium-r-semicondensed-*-*-120-*-*-*-*-iso8859-15\007"'
+ 'da' 'du -sch'
+ 'j' 'jobs -l'
+ 'u' 'translate -i'
+ 'co' "./configure && make && sudo make install"
+ 'CH' "./configure --help"
+ 'conkeror' 'firefox -chrome chrome://conkeror/content'
+ 'dir' 'ls -lSrah'
+ 'lad' $'ls -d .*(/)\n# only show dot-directories'
+ 'lsa' $'ls -a .*(.)\n# only show dot-files'
+ 'lss' $'ls -l *(s,S,t)\n# only files with setgid/setuid/sticky flag'
+ 'lsl' $'ls -l *(@[1,10])\n# only symlinks'
+ 'lsx' $'ls -l *(*[1,10])\n# only executables'
+ 'lsw' $'ls -ld *(R,W,X.^ND/)\n# world-{readable,writable,executable} files'
+ 'lsbig' $'ls -flh *(.OL[1,10])\n# display the biggest files'
+ 'lsd' $'ls -d *(/)\n# only show directories'
+ 'lse' $'ls -d *(/^F)\n# only show empty directories'
+ 'lsnew' $'ls -rl *(D.om[1,10])\n# display the newest files'
+ 'lsold' $'ls -rtlh *(D.om[-11,-1])\n # display the oldest files'
+ 'lssmall' $'ls -Srl *(.oL[1,10])\n# display the smallest files'
+ 'rw-' 'chmod 600'
+ '600' 'chmod u+rw-x,g-rwx,o-rwx'
+ 'rwx' 'chmod u+rwx'
+ '700' 'chmod u+rwx,g-rwx,o-rwx'
+ 'r--' 'chmod u+r-wx,g-rwx,o-rwx'
+ '644' $'chmod u+rw-x,g+r-wx,o+r-wx\n # 4=r,2=w,1=x'
+ '755' 'chmod u+rwx,g+r-w+x,o+r-w+x'
+ 'md' 'mkdir -p '
+ 'cmplayer' 'mplayer -vo -fs -zoom fbdev'
+ 'fbmplayer' 'mplayer -vo -fs -zoom fbdev'
+ 'fblinks' 'links2 -driver fb'
+ 'insecssh' 'ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"'
+ 'insecscp' 'scp -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"'
+ 'fori' 'for i ({..}) { }'
+ 'cx' 'chmod +x'
+ 'e' 'print -l'
+ 'se' 'setopt interactivecomments'
+ 'va' 'valac --vapidir=../vapi/ --pkg=gtk+-2.0 gtktest.vala'
+ 'fb2' '=mplayer -vo fbdev -fs -zoom 1>/dev/null -xy 2'
+ 'fb3' '=mplayer -vo fbdev -fs -zoom 1>/dev/null -xy 3'
+ 'ci' 'centericq'
+ 'D' 'export DISPLAY=:0.0'
+ 'mp' 'mplayer -vo xv -fs -zoom'
+)
+
+globalias() {
+ local MATCH
+
+ if (( NOABBREVIATION > 0 )) ; then
+ LBUFFER="${LBUFFER},."
+ return 0
+ fi
+
+ matched_chars='[.-|_a-zA-Z0-9]#'
+ LBUFFER=${LBUFFER%%(#m)[.-|_a-zA-Z0-9]#}
+ LBUFFER+=${abk[$MATCH]:-$MATCH}
+}
+
+zle -N globalias
+bindkey ",." globalias
+# }}}
+
+# {{{ autoloading
+zrcautoload zmv # who needs mmv or rename?
+zrcautoload history-search-end
+
+# we don't want to quote/espace URLs on our own...
+# if autoload -U url-quote-magic ; then
+# zle -N self-insert url-quote-magic
+# zstyle ':url-quote-magic:*' url-metas '*?[]^()~#{}='
+# else
+# print 'Notice: no url-quote-magic available :('
+# fi
+alias url-quote='autoload -U url-quote-magic ; zle -N self-insert url-quote-magic'
+
+#m# k ESC-h Call \kbd{run-help} for the 1st word on the command line
+alias run-help >&/dev/null && unalias run-help
+zrcautoload run-help # use via 'esc-h'