X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/profile/blobdiff_plain/d90fb8419fd562d9e496a39cb37fa8b96b9f5ef7..4877b8d8f0fd312be08bf10a8ec4f2ac7b7c952b:/dot/bashrc diff --git a/dot/bashrc b/dot/bashrc index 9e872f5..18a2d7d 100644 --- a/dot/bashrc +++ b/dot/bashrc @@ -10,6 +10,30 @@ case ${__mdw_bashrc+t} in t) ;; *) __mdw_bashrc=t +###-------------------------------------------------------------------------- +### Hook implementation. + +__mdw_precmd_hook= __mdw_preexec_hook= +__mdw_running=t + +__mdw_run_precmd_hook () { + __mdw_running=nil + __mdw_runhook __mdw_precmd_hook "$@" +} +__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 + ###-------------------------------------------------------------------------- ### Common shell configuration. @@ -46,18 +70,11 @@ __mdw_set_prompt_hacks () { host='\h' dir=' \w' } -__mdw_before_cmd_hack () { - set -- $(history 1); shift - __mdw_preexec "$*" -} - ## Only bother if the shell is interactive. if [ -t 0 ]; then PROMPT_DIRTRIM=5 __mdw_source_if_exists /usr/lib/git-core/git-sh-prompt __mdw_set_prompt_pieces - PROMPT_COMMAND=__mdw_precmd - PS0="\$(__mdw_before_cmd_hack)" fi ###--------------------------------------------------------------------------