}
alias isutfenv=axzsh_is_utf_terminal
+# Check if terminal supports "wide" characters.
+# <https://unix.stackexchange.com/questions/184345/detect-how-much-of-unicode-my-terminal-supports-even-through-screen>
+function axzsh_is_widechar_terminal {
+ [[ -t 1 ]] || return 1
+ axzsh_is_utf_terminal || return 1
+ echo -ne "🍀\033[6n\033[1K\r"
+ read -s -d\[ garbage
+ read -s -d R pos
+ [[ "${pos#*;}" -eq 2 ]] || return 1
+ return 0
+}
+
# Test for "modern" terminal
function axzsh_is_modern_terminal {
[[ "$TERM" = screen* ]] && return 0
PS1="$(ax_logname_prompt_yn)$(ax_hostname_prompt_yn)%B%2~%b"'$(ax_vcs_prompt)'"$(ax_prompt)"
# Prompt on right side
-axzsh_is_utf_terminal \
+axzsh_is_widechar_terminal \
&& RPS1="%(?..%{$fg_no_bold[red]%}%? ↵%{$reset_color%})" \
|| RPS1="%(?..%{$fg_no_bold[red]%}<%?>%{$reset_color%})"
ZSH_THEME_PROMPT_PREFIX_SPACING=" "
ZSH_THEME_PROMPT_SUFFIX_SPACING=" "
-enable_emoji=1
-
-[[ "$TERM_PROGRAM" = "Hyper" ]] && unset enable_emoji
-
-if [[ -n "$enable_emoji" ]] && axzsh_is_utf_terminal; then
+if axzsh_is_widechar_terminal; then
# UTF8 capable terminal:
if [[ -r "$HOME/.system_emoji-$SHORT_HOST" ]]; then
system_emoji=$(<"$HOME/.system_emoji-$SHORT_HOST")
PS1="${system_emoji}${emoji_spacing} $(ax_logname_prompt_yn)$(ax_hostname_prompt_yn)%B%2~%b"'$(ax_vcs_prompt)'"$(ax_prompt)"
-unset enable_emoji system_emoji emoji_spacing
+unset system_emoji emoji_spacing