diff --git a/.config/zsh/functions/semantic-prompt.zsh b/.config/zsh/functions/semantic-prompt.zsh new file mode 100644 index 0000000..a36491a --- /dev/null +++ b/.config/zsh/functions/semantic-prompt.zsh @@ -0,0 +1,25 @@ +_prompt_executing="" +function __prompt_precmd() { + local ret="$?" + if test "$_prompt_executing" != "0" + then + _PROMPT_SAVE_PS1="$PS1" + _PROMPT_SAVE_PS2="$PS2" + PS1=$'%{\e]133;P;k=i\a%}'$PS1$'%{\e]133;B\a\e]122;> \a%}' + PS2=$'%{\e]133;P;k=s\a%}'$PS2$'%{\e]133;B\a%}' + fi + if test "$_prompt_executing" != "" + then + printf "\033]133;D;%s;aid=%s\007" "$ret" "$$" + fi + printf "\033]133;A;cl=m;aid=%s\007" "$$" + _prompt_executing=0 +} +function __prompt_preexec() { + PS1="$_PROMPT_SAVE_PS1" + PS2="$_PROMPT_SAVE_PS2" + printf "\033]133;C;\007" + _prompt_executing=1 +} +preexec_functions+=(__prompt_preexec) +precmd_functions+=(__prompt_precmd) diff --git a/.zshrc b/.zshrc index 7b051f2..3ff270a 100644 --- a/.zshrc +++ b/.zshrc @@ -53,6 +53,10 @@ zstyle ':prompt:grml:right:setup' use-rprompt false # https://unix.stackexchange.com/a/302710 #set +o prompt_cr +o prompt_sp +# enable OSC 133 shell prompt start/end reporting +# so that the terminal can scroll jump between prompts +#xsource ~/.config/zsh/functions/semantic-prompt.zsh + # Git based dotfiles setup start function _config_activate { export GIT_DIR=$HOME/.cfg/