mirror of
https://github.com/zsh-users/zsh-autosuggestions.git
synced 2025-04-17 11:35:31 +08:00
54 lines
1.3 KiB
Bash
54 lines
1.3 KiB
Bash
![]() |
_zsh_autosuggest_is_defined_widget() {
|
||
|
[ -n "$widgets[$1]" ]
|
||
|
}
|
||
|
|
||
|
_zsh_autosuggest_is_built_in_widget() {
|
||
|
[ -n "$widgets[.$1]" ]
|
||
|
}
|
||
|
|
||
|
_zsh_autosuggest_is_original_widget_defined() {
|
||
|
_zsh_autosuggest_is_defined_widget $(_zsh_autosuggest_original_widget $1)
|
||
|
}
|
||
|
|
||
|
_zsh_autosuggest_original_widget() {
|
||
|
if _zsh_autosuggest_is_built_in_widget $1; then
|
||
|
echo ".$1"
|
||
|
else
|
||
|
echo "_autosuggest_original_$1"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
_zsh_autosuggest_hook_widget() {
|
||
|
local autosuggest_widget=$1
|
||
|
local widget=$2
|
||
|
|
||
|
# Skip if the widget does not exist
|
||
|
if ! _zsh_autosuggest_is_defined_widget $widget; then
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
# Alias if dot-prefixed alias is unavailable and we haven't already aliased it
|
||
|
if ! _zsh_autosuggest_is_original_widget_defined $widget; then
|
||
|
zle -A $widget $(_zsh_autosuggest_original_widget $widget)
|
||
|
fi
|
||
|
|
||
|
# Hook it
|
||
|
zle -A $autosuggest_widget $widget
|
||
|
}
|
||
|
|
||
|
_zsh_autosuggest_hook_widgets() {
|
||
|
local widget
|
||
|
|
||
|
for widget in $ZSH_AUTOSUGGEST_MODIFY_WIDGETS; do
|
||
|
_zsh_autosuggest_hook_widget _zsh_autosuggest_widget_modify $widget
|
||
|
done
|
||
|
|
||
|
for widget in $ZSH_AUTOSUGGEST_CLEAR_WIDGETS; do
|
||
|
_zsh_autosuggest_hook_widget _zsh_autosuggest_widget_clear $widget
|
||
|
done
|
||
|
|
||
|
for widget in $ZSH_AUTOSUGGEST_ACCEPT_WIDGETS; do
|
||
|
_zsh_autosuggest_hook_widget _zsh_autosuggest_widget_accept $widget
|
||
|
done
|
||
|
}
|