hsmw: Solve problems with rapid Ctrl-C pressing

This commit is contained in:
Sebastian Gniazdowski 2016-10-20 11:01:09 +02:00
parent c8496ca35d
commit 84b7b4b7c8

View file

@ -16,7 +16,7 @@
# zstyle ":plugin:history-search-multi-word" synhl "yes"
emulate -LR zsh
setopt typesetsilent extendedglob noshortloops
setopt typesetsilent extendedglob noshortloops localtraps
# When an error, then no cursor keys bindings
zmodload zsh/terminfo 2>/dev/null
@ -29,6 +29,9 @@ typeset -g __hsmw_hcw_widget_name __hsmw_hcw_restart __hsmw_hcw_call_count
typeset -g __hsmw_page_size __hsmw_hl_color __hsmw_synhl
typeset -gaU __hsmw_hcw_found
(( __hsmw_hcw_call_count ++ ))
trap '(( __hsmw_hcw_call_count -- )); return 0;' INT
_hsmw_main() {
# First call or restart?
if [[ "$__hsmw_hcw_call_count" -le 1 || "$__hsmw_hcw_restart" = "1" ]]; then
@ -141,7 +144,6 @@ _hsmw_main() {
fi
}
(( __hsmw_hcw_call_count ++ ))
[[ "$__HSMW_MH_SOURCED" != "1" ]] && source "$HSMW_REPO_DIR/hsmw-highlight"
_hsmw_main
@ -249,7 +251,6 @@ if [ "$__hsmw_hcw_call_count" -eq "1" ]; then
zle -N "$pup_widget" _hsmw_simulate_widget
# Trap INT to manually interrupt Zle to work around a bug
setopt localtraps
trap 'zle && zle .send-break' INT
if zle .recursive-edit -K hsmw; then
@ -280,6 +281,8 @@ if [ "$__hsmw_hcw_call_count" -eq "1" ]; then
# Free memory
#__hsmw_hcw_found=( )
elif (( __hsmw_hcw_call_count > 0 )); then
(( __hsmw_hcw_call_count -- ))
fi
# vim:ft=zsh