#!/bin/zsh zmodload zsh/complist typeset -ga _autocomplete__suggest_ignore_widgets=() typeset -g ZSH_AUTOSUGGEST_MANUAL_REBIND=1 typeset -g ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=.autosuggest-orig- ${0}:c() { _autocomplete__suggest_ignore_widgets+=( $1 ) builtin zle -C "$1" "$2" .autocomplete__${3}__completion-widget } ${0}:z() { builtin zle -N "$1" .autocomplete__${2}__zle-widget } ${0}:z up-line-or-search{,} ${0}:z down-line-or-select{,} ${0}:z history-search{-backward,} ${0}:precmd() { emulate -L zsh setopt $_autocomplete__func_opts[@] 0=${0%:*} # Create all completion widgets here, to avoid getting them wrapped by # Autosuggest or Syntax Highlighting. local -P tab_style= for tab_style in complete-word menu-complete menu-select; do ${0}:c "$tab_style" "$tab_style" complete-word done ${0}:c {,}reverse-menu-complete complete-word ${0}:c insert-unambiguous-or-complete {,}complete-word ${0}:c menu-search menu-select complete-word ${0}:c history-search-backward menu-select history-search # Autosuggestions otherwise makes $WIDGETSTYLE disappear [[ -v ZSH_AUTOSUGGEST_IGNORE_WIDGETS ]] && ZSH_AUTOSUGGEST_IGNORE_WIDGETS+=( $_autocomplete__suggest_ignore_widgets ) unset _autocomplete__suggest_ignore_widgets unfunction ${0}:{c,z} }