Don't do anything but re-bind widgets on each precmd

There's no need to re-run feature detection or async_start on every
precmd. Just do those once.
This commit is contained in:
Eric Freese 2017-02-18 10:47:53 -07:00
parent 2cd99e64b7
commit e3fa4e4904
2 changed files with 16 additions and 0 deletions

View file

@ -5,9 +5,17 @@
# Start the autosuggestion widgets # Start the autosuggestion widgets
_zsh_autosuggest_start() { _zsh_autosuggest_start() {
add-zsh-hook -d precmd _zsh_autosuggest_start
_zsh_autosuggest_feature_detect _zsh_autosuggest_feature_detect
_zsh_autosuggest_bind_widgets _zsh_autosuggest_bind_widgets
# Re-bind widgets on every precmd to ensure we wrap other wrappers.
# Specifically, highlighting breaks if our widgets are wrapped by
# zsh-syntax-highlighting widgets. This also allows modifications
# to the widget list variables to take effect on the next precmd.
add-zsh-hook precmd _zsh_autosuggest_bind_widgets
if [ -n "${ZSH_AUTOSUGGEST_USE_ASYNC+x}" ]; then if [ -n "${ZSH_AUTOSUGGEST_USE_ASYNC+x}" ]; then
_zsh_autosuggest_async_start _zsh_autosuggest_async_start
fi fi

View file

@ -609,9 +609,17 @@ _zsh_autosuggest_async_start() {
# Start the autosuggestion widgets # Start the autosuggestion widgets
_zsh_autosuggest_start() { _zsh_autosuggest_start() {
add-zsh-hook -d precmd _zsh_autosuggest_start
_zsh_autosuggest_feature_detect _zsh_autosuggest_feature_detect
_zsh_autosuggest_bind_widgets _zsh_autosuggest_bind_widgets
# Re-bind widgets on every precmd to ensure we wrap other wrappers.
# Specifically, highlighting breaks if our widgets are wrapped by
# zsh-syntax-highlighting widgets. This also allows modifications
# to the widget list variables to take effect on the next precmd.
add-zsh-hook precmd _zsh_autosuggest_bind_widgets
if [ -n "${ZSH_AUTOSUGGEST_USE_ASYNC+x}" ]; then if [ -n "${ZSH_AUTOSUGGEST_USE_ASYNC+x}" ]; then
_zsh_autosuggest_async_start _zsh_autosuggest_async_start
fi fi