893N/A# add to (+), delete from (-), set [=], or print (.) window title
3909N/A# arguments are eval'd before printing
893N/A# title text string exported in TITLE_TEXT
893N/A
893N/Afunction title # [ + | - | = | . ] title ...
893N/A{
893N/A typeset x t="$TITLE_TEXT"
893N/A
893N/A case $1 in
893N/A +) shift
893N/A case $# in
893N/A 0) ;;
893N/A *) for x
893N/A do case " $t " in
893N/A *" $x "*) ;;
893N/A " ") t=$x ;;
893N/A *) t="$t $x" ;;
893N/A esac
2362N/A done
2362N/A case $t in
2362N/A $TITLE_TEXT) return 1 ;;
893N/A esac
893N/A ;;
893N/A esac
893N/A ;;
5156N/A -) shift
893N/A case $# in
5156N/A 0) ;;
893N/A *) for x
893N/A do case " $t " in
893N/A *" $x "*) t="${t%?( )$x*}${t##*$x?( )}" ;;
4216N/A esac
893N/A done
893N/A case $t in
893N/A $TITLE_TEXT) return 1 ;;
893N/A esac
893N/A ;;
893N/A esac
893N/A ;;
893N/A .) print -r -- "$TITLE_TEXT"
893N/A return 0
893N/A ;;
893N/A =) shift
893N/A t="$*"
893N/A ;;
893N/A *) t="$*"
893N/A ;;
893N/A esac
893N/A export TITLE_TEXT="$t"
893N/A eval x=\"$t\"
893N/A case $TERM in
893N/A 630*) print -nr -- $'\E[?'"${#x}"$';0v'"${x}" ;;
893N/A uwin*|*vt100|xterm*) print -nr -- $'\E]0;'"${x}"$'\a' ;;
3471N/A *) return 1 ;;
893N/A esac
893N/A return 0
893N/A}
893N/A