mirror of
https://github.com/zsh-users/zsh-autosuggestions.git
synced 2025-12-08 15:32:31 +01:00
Cleanup
This commit is contained in:
parent
7dc9e0f926
commit
fc3f368acf
15 changed files with 224 additions and 708 deletions
53
lib/widget/hook.zsh
Normal file
53
lib/widget/hook.zsh
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
_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
|
||||
}
|
||||
42
lib/widget/widgets.zsh
Normal file
42
lib/widget/widgets.zsh
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
# Buffer was modified, update suggestion
|
||||
_zsh_autosuggest_widget_modify() {
|
||||
local suggestion
|
||||
|
||||
zle $(_zsh_autosuggest_original_widget $WIDGET) $@
|
||||
|
||||
if [ $#BUFFER -gt 0 ]; then
|
||||
suggestion=$(_zsh_autosuggest_get_suggestion $BUFFER)
|
||||
fi
|
||||
|
||||
if [ -n "$suggestion" ]; then
|
||||
POSTDISPLAY=${suggestion#$BUFFER}
|
||||
else
|
||||
unset POSTDISPLAY
|
||||
fi
|
||||
|
||||
_zsh_autosuggest_highlight
|
||||
}
|
||||
|
||||
# Clear command triggered, hide the suggestion
|
||||
_zsh_autosuggest_widget_clear() {
|
||||
unset POSTDISPLAY
|
||||
_zsh_autosuggest_highlight
|
||||
zle $(_zsh_autosuggest_original_widget $WIDGET) $@
|
||||
}
|
||||
|
||||
# Suggestion accepted, add it to the buffer
|
||||
_zsh_autosuggest_widget_accept() {
|
||||
if [ $CURSOR -eq $#BUFFER ]; then
|
||||
BUFFER="$BUFFER$POSTDISPLAY"
|
||||
unset POSTDISPLAY
|
||||
CURSOR=${#BUFFER}
|
||||
_zsh_autosuggest_highlight
|
||||
else
|
||||
zle $(_zsh_autosuggest_original_widget $WIDGET) $@
|
||||
fi
|
||||
}
|
||||
|
||||
# Create the widgets
|
||||
zle -N _zsh_autosuggest_widget_modify
|
||||
zle -N _zsh_autosuggest_widget_clear
|
||||
zle -N _zsh_autosuggest_widget_accept
|
||||
Loading…
Add table
Add a link
Reference in a new issue