zsh/.zsh/custom/256color.zsh
2024-09-12 19:50:05 +02:00

48 lines
1.4 KiB
Bash

# Copyright (c) 2014-2019, Christian Ludwig
#
# Set 256color terminal mode if available.
_zsh_256color_debug() {
[[ -n "${ZSH_256COLOR_DEBUG}" ]] && echo "zsh-256color: $@" >&2
}
_zsh_terminal_set_256color() {
if [[ "$TERM" =~ "-256color$" ]]; then
_zsh_256color_debug "256 color terminal already set."
return
fi
local TERM256="${TERM}-256color"
# Use (n-)curses binaries, if installed.
if [[ -x "$(which toe)" ]]; then
if toe -a | grep -E "^$TERM256" >/dev/null; then
_zsh_256color_debug "Found $TERM256 from (n-)curses binaries."
export TERM="$TERM256"
return
fi
fi
# Search through termcap descriptions, if binaries are not installed.
for termcaps in $TERMCAP "$HOME/.termcap" "/etc/termcap" "/etc/termcap.small"; do
if [[ -e "$termcaps" ]] && grep -E -q "(^$TERM256|\|$TERM256)\|" "$termcaps"; then
_zsh_256color_debug "Found $TERM256 from $termcaps."
export TERM="$TERM256"
return
fi
done
# Search through terminfo descriptions, if binaries are not installed.
for terminfos in $TERMINFO "$HOME/.terminfo" "/etc/terminfo" "/lib/terminfo" "/usr/share/terminfo"; do
if [[ -e "$terminfos"/$TERM[1]/"$TERM256" ||
-e "$terminfos"/"$TERM256" ]]; then
_zsh_256color_debug "Found $TERM256 from $terminfos."
export TERM="$TERM256"
return
fi
done
}
_zsh_terminal_set_256color
unset -f _zsh_terminal_set_256color
unset -f _zsh_256color_debug