+###--------------------------------------------------------------------------
+### Hook implementation.
+
+__mdw_precmd_hook= __mdw_preexec_hook=
+__mdw_running=t
+
+__mdw_run_precmd_hook () {
+ __mdw_runhook __mdw_precmd_hook "$@"
+ __mdw_running=nil
+}
+__mdw_run_preexec_hook () {
+ case $__mdw_running in
+ t) ;;
+ nil)
+ __mdw_running=t;
+ set -- $(history 1); shift
+ __mdw_runhook __mdw_preexec_hook "$*"
+ ;;
+ esac
+}
+
+PROMPT_COMMAND=__mdw_run_precmd_hook
+trap __mdw_run_preexec_hook DEBUG
+