#!/bin/sh # $XTermId: tab0.sh,v 1.2 2019/06/01 16:03:03 tom Exp $ # ----------------------------------------------------------------------------- # Copyright 2019 by Thomas E. Dickey # # All Rights Reserved # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name(s) of the above copyright # holders shall not be used in advertising or otherwise to promote the # sale, use or other dealings in this Software without prior written # authorization. # ----------------------------------------------------------------------------- # Demonstrate hard-tabs. : ${TABS:=tabs} : ${TPUT:=tput} show() { printf "Tabs $1:" read ignore p=0 while [ $p -lt $wide ] do printf "%s+----%d" "----" `expr 1 + \( $p / 10 \)` p=`expr $p + 10` done printf "\n" p=1 printf " " while [ $p -lt $wide ] do printf "%*s" $1 "*" p=`expr $p + $1` done printf "\n" p=0 while [ $p -lt $wide ] do printf "\t+" p=`expr $p + $1` done printf "\n" printf "...done" read ignore } # enable hard tabs, disable autowrap. initialize() { $TPUT $1 clear stty tabs printf "\033[?7l" } setup() { initialize reset } # Turn hard tabs off, reenable autowrap. restore() { stty -tabs printf "\033[?7h" } wide=`$TPUT cols` # If the terminal honors VT100 RIS, try that as a "hard reset" to get the # power-on behavior. for name in rs1 rs2 do value=`$TPUT $name | sed -e 's//ESC:/g'` case "$value" in *ESC:c*) ;; *) value= ;; esac if [ -n "$value" ] then initialize $name printf "Testing after tput $name\r\n" show 8 break fi done # The following tests use the normal "reset" behavior. setup $TABS -8 show 8 $TABS -4 show 4 # Some terminal emulators are known to be buggy, and "reset" does not get them # to reset the tab-stops. setup show 8 restore