From e3fa4e4904fede78390152e9a1cc6f9f2ec9b1cb Mon Sep 17 00:00:00 2001 From: Eric Freese Date: Sat, 18 Feb 2017 10:47:53 -0700 Subject: [PATCH] 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. --- src/start.zsh | 8 ++++++++ zsh-autosuggestions.zsh | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/src/start.zsh b/src/start.zsh index c5ac120..2304fb3 100644 --- a/src/start.zsh +++ b/src/start.zsh @@ -5,9 +5,17 @@ # Start the autosuggestion widgets _zsh_autosuggest_start() { + add-zsh-hook -d precmd _zsh_autosuggest_start + _zsh_autosuggest_feature_detect _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 _zsh_autosuggest_async_start fi diff --git a/zsh-autosuggestions.zsh b/zsh-autosuggestions.zsh index 4018b0f..2726661 100644 --- a/zsh-autosuggestions.zsh +++ b/zsh-autosuggestions.zsh @@ -609,9 +609,17 @@ _zsh_autosuggest_async_start() { # Start the autosuggestion widgets _zsh_autosuggest_start() { + add-zsh-hook -d precmd _zsh_autosuggest_start + _zsh_autosuggest_feature_detect _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 _zsh_autosuggest_async_start fi