#--------------------------------------------------------------------# # Start # #--------------------------------------------------------------------# # Start the autosuggestion widgets _zsh_autosuggest_start() { # By default we 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. However this has # a decent performance hit, so users can set ZSH_AUTOSUGGEST_MANUAL_REBIND # to disable the automatic re-binding. if (( ${+ZSH_AUTOSUGGEST_MANUAL_REBIND} )); then add-zsh-hook -d precmd _zsh_autosuggest_start fi _zsh_autosuggest_bind_widgets } # Mark for auto-loading the functions that we use autoload -Uz add-zsh-hook is-at-least # Automatically enable asynchronous mode in newer versions of zsh. Disable for # older versions because there is a bug when using async mode where ^C does not # work immediately after fetching a suggestion. # See https://github.com/zsh-users/zsh-autosuggestions/issues/364 if is-at-least 5.0.8; then typeset -g ZSH_AUTOSUGGEST_USE_ASYNC= fi # Start the autosuggestion widgets on the next precmd add-zsh-hook precmd _zsh_autosuggest_start _zsh_autosuggest_line_init() { emulate -L zsh local min_input="${ZSH_AUTOSUGGEST_AI_MIN_INPUT:-1}" if (( min_input == 0 )) && \ (( ! ${+_ZSH_AUTOSUGGEST_DISABLED} )); then _zsh_autosuggest_fetch fi } # Use add-zle-hook-widget (zsh 5.3+) to avoid conflicts with other plugins if (( ${+functions[add-zle-hook-widget]} )) || \ autoload -Uz add-zle-hook-widget 2>/dev/null; then add-zle-hook-widget zle-line-init _zsh_autosuggest_line_init fi