Ensure we always destroy the zpty

If running in sync mode and a completion takes a long time, the user can
^C out of it. Without this patch, the pty will not be destroyed in this
case and the next time we go to create it, it will fail, making the
shell unusable.
This commit is contained in:
Eric Freese 2018-07-01 20:55:53 -06:00
parent 6a3e310d4b
commit 156ae5ea69
2 changed files with 22 additions and 18 deletions

View file

@ -86,6 +86,7 @@ _zsh_autosuggest_strategy_completion() {
zpty -w $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME $'\t' zpty -w $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME $'\t'
fi fi
{
# The completion result is surrounded by null bytes, so read the # The completion result is surrounded by null bytes, so read the
# content between the first two null bytes. # content between the first two null bytes.
zpty -r $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME line '*'$'\0''*'$'\0' zpty -r $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME line '*'$'\0''*'$'\0'
@ -93,7 +94,8 @@ _zsh_autosuggest_strategy_completion() {
# On older versions of zsh, we sometimes get extra bytes after the # On older versions of zsh, we sometimes get extra bytes after the
# second null byte, so trim those off the end # second null byte, so trim those off the end
suggestion="${${${(M)line:#*$'\0'*$'\0'*}#*$'\0'}%%$'\0'*}" suggestion="${${${(M)line:#*$'\0'*$'\0'*}#*$'\0'}%%$'\0'*}"
} always {
# Destroy the pty # Destroy the pty
zpty -d $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME zpty -d $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME
}
} }

View file

@ -556,6 +556,7 @@ _zsh_autosuggest_strategy_completion() {
zpty -w $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME $'\t' zpty -w $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME $'\t'
fi fi
{
# The completion result is surrounded by null bytes, so read the # The completion result is surrounded by null bytes, so read the
# content between the first two null bytes. # content between the first two null bytes.
zpty -r $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME line '*'$'\0''*'$'\0' zpty -r $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME line '*'$'\0''*'$'\0'
@ -563,9 +564,10 @@ _zsh_autosuggest_strategy_completion() {
# On older versions of zsh, we sometimes get extra bytes after the # On older versions of zsh, we sometimes get extra bytes after the
# second null byte, so trim those off the end # second null byte, so trim those off the end
suggestion="${${${(M)line:#*$'\0'*$'\0'*}#*$'\0'}%%$'\0'*}" suggestion="${${${(M)line:#*$'\0'*$'\0'*}#*$'\0'}%%$'\0'*}"
} always {
# Destroy the pty # Destroy the pty
zpty -d $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME zpty -d $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME
}
} }
#--------------------------------------------------------------------# #--------------------------------------------------------------------#