Lots of little async cleanups

This commit is contained in:
Eric Freese
2017-01-27 15:18:26 -07:00
parent c3425870f1
commit e3eb286ea2
7 changed files with 160 additions and 102 deletions

View File

@@ -46,13 +46,35 @@ _zsh_autosuggest_modify() {
# Get a new suggestion if the buffer is not empty after modification
if [ $#BUFFER -gt 0 ]; then
if [ -z "$ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE" -o $#BUFFER -lt "$ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE" ]; then
_zsh_autosuggest_async_fetch_suggestion "$BUFFER"
_zsh_autosuggest_fetch
fi
fi
return $retval
}
# Fetch a new suggestion based on what's currently in the buffer
_zsh_autosuggest_fetch() {
if zpty -t "$ZSH_AUTOSUGGEST_PTY_NAME" &>/dev/null; then
_zsh_autosuggest_async_request "$BUFFER"
else
local suggestion
_zsh_autosuggest_strategy_$ZSH_AUTOSUGGEST_STRATEGY "$BUFFER"
_zsh_autosuggest_suggest "$suggestion"
fi
}
# Offer a suggestion
_zsh_autosuggest_suggest() {
local suggestion="$1"
if [ -n "$suggestion" ]; then
POSTDISPLAY="${suggestion#$BUFFER}"
else
unset POSTDISPLAY
fi
}
# Accept the entire suggestion
_zsh_autosuggest_accept() {
local -i max_cursor_pos=$#BUFFER
@@ -120,7 +142,7 @@ _zsh_autosuggest_partial_accept() {
return $retval
}
for action in clear modify accept partial_accept execute; do
for action in clear modify fetch suggest accept partial_accept execute; do
eval "_zsh_autosuggest_widget_$action() {
local -i retval
@@ -131,28 +153,14 @@ for action in clear modify accept partial_accept execute; do
_zsh_autosuggest_highlight_apply
zle -R
return \$retval
}"
done
zle -N autosuggest-fetch _zsh_autosuggest_widget_fetch
zle -N autosuggest-suggest _zsh_autosuggest_widget_suggest
zle -N autosuggest-accept _zsh_autosuggest_widget_accept
zle -N autosuggest-clear _zsh_autosuggest_widget_clear
zle -N autosuggest-execute _zsh_autosuggest_widget_execute
_zsh_autosuggest_show_suggestion() {
local suggestion="$1"
_zsh_autosuggest_highlight_reset
if [ -n "$suggestion" ]; then
POSTDISPLAY="${suggestion#$BUFFER}"
else
unset POSTDISPLAY
fi
_zsh_autosuggest_highlight_apply
zle -R
}
zle -N _autosuggest-show-suggestion _zsh_autosuggest_show_suggestion