From dbd92a62ce1fc25a6819ae6d0a29dc8b8ec9a7dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Cornell=C3=A0?= Date: Fri, 11 Feb 2022 10:01:48 +0100 Subject: [PATCH] fix(updater): do not swallow 1 character in check for user input Co-authored-by: Philippe Troin --- tools/check_for_upgrade.sh | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/tools/check_for_upgrade.sh b/tools/check_for_upgrade.sh index 4484df4fe..33f30c85a 100644 --- a/tools/check_for_upgrade.sh +++ b/tools/check_for_upgrade.sh @@ -89,6 +89,23 @@ function update_ohmyzsh() { fi } +function has_typed_input() { + # Created by Philippe Troin + # https://zsh.org/mla/users/2022/msg00062.html + emulate -L zsh + zmodload zsh/zselect + + { + local termios=$(stty --save) + stty -icanon + + zselect -t 0 -r 0 + return $? + } always { + stty $termios + } +} + () { emulate -L zsh @@ -159,7 +176,7 @@ function update_ohmyzsh() { fi # If user has typed input, show reminder and exit - if read -t -k 1; then + if has_typed_input; then echo echo "[oh-my-zsh] It's time to update! You can do that by running \`omz update\`" return 0