Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Colored-character displayed on CTRL-C ?
On Sep 23, 3:00pm, Phil Pennock wrote:
} Subject: Re: Colored-character displayed on CTRL-C ?
}
} On 2013-09-23 at 13:02 -0700, Bart Schaefer wrote:
} > This should do it for you:
} >
} > autoload -Uz colors
} > colors
} > handle-interrupt() {
} > print -n "$bg_bold[yellow]${(V)KEYS:-^C}$reset_color"
} > zle -I && zle .kill-buffer
} > }
} > zle -N handle-interrupt
} > TRAPINT() { zle && zle handle-interrupt }
}
} This seems to interact poorly with vared
Hm, I wondered about that. You can change the zle line in handle-interrupt
to read
zle -I && zle .kill-buffer && zle .send-break
and maybe get better behavior that way.
} Also, in bck-i-search (^R) the prompt is re-shown,
} and the mode is still in bck-i-search (although the current selected
} value is blanked out, but typing continues the search).
I think send-break will help there, too, but in case not:
} It seems that handling these requires the TRAPINT to return non-zero,
} but doing so interacts with the widget above to double-prompt (badly).
You can check for [[ $CONTEXT == vared ]] in the TRAPINT function and
return nonzero when appropriate. (It'll normally be unset outside of
ZLE.)
} Ideally, I'd be able to set $? after this, so a manual invocation of
} precmd would correct the prompt variables, since precmd() isn't invoked
} normally, given that widget, whereas it is with a straight Ctrl-C
} without TRAPINT (albeit with $? set to 1).
"zle .send-break" sets the internal error flags so normally it's just
like invoking "return 1" ... but you can use an "always" block to get
around that.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author