mirror of
https://github.com/zsh-users/zsh-autosuggestions.git
synced 2024-11-18 09:51:06 +01:00
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:
parent
302bd7c059
commit
4869a757c8
2 changed files with 22 additions and 18 deletions
|
@ -86,14 +86,16 @@ _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
|
{
|
||||||
# content between the first two null bytes.
|
# The completion result is surrounded by null bytes, so read the
|
||||||
zpty -r $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME line '*'$'\0''*'$'\0'
|
# content between the first two null bytes.
|
||||||
|
zpty -r $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME line '*'$'\0''*'$'\0'
|
||||||
|
|
||||||
# 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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -556,16 +556,18 @@ _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
|
{
|
||||||
# content between the first two null bytes.
|
# The completion result is surrounded by null bytes, so read the
|
||||||
zpty -r $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME line '*'$'\0''*'$'\0'
|
# content between the first two null bytes.
|
||||||
|
zpty -r $ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME line '*'$'\0''*'$'\0'
|
||||||
|
|
||||||
# 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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#--------------------------------------------------------------------#
|
#--------------------------------------------------------------------#
|
||||||
|
|
Loading…
Reference in a new issue