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