lynx-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Lynx-dev] What blanks the blank spaces at the beginning of a line?


From: Bela Lubkin
Subject: Re: [Lynx-dev] What blanks the blank spaces at the beginning of a line?
Date: Mon, 29 Oct 2018 01:07:59 -0700

russell bell wrote:

>       Yeah, what?

Your symptoms sound potentially like what happens when one output layer
believes that the TAB character overwrites the columns it passes over
with spaces, while the actual output hardware just moves the cursor.

Try:

(1) note current 'tab' setting:

    $ stty -a | grep tab[0-9]

(2) test with `stty tab0; lynx -whatever-reproduces-it`

(3) test with `stty tab3; lynx -whatever-reproduces-it`

If those differ, the problem might relate to tabs.  (Another possibly
useful way to test is to run under GNU `screen` and see if the behavior
goes away.)

Linux termios(3) says (and any other POSIX OS should agree):

" c_oflag flag constants defined in POSIX.1:
" ...
" 
" TABDLY Horizontal tab delay mask.  Values are TAB0, TAB1, TAB2,
" TAB3 (or XTABS).  A value of TAB3, that is, XTABS, expands tabs
" to spaces (with tab stops every eight columns).

====

You can also have similar problems if your terminal has been programmed
to unexpected tab stops.  This is a tab stop fixing script I wrote a few
years ago which lives in my path as ~/bin/vt100; requires any shell with
"echo -e" and "let", i.e. bash / ksh / zsh, but not dash or true Bourne
shell:

========================================================================
#!/bin/bash
#
# "vt100" -- correct messed up tab stops on VT100 / ANSI terminals
#

row_of()
{
   col=1
   while [ $col -le $columns ]; do
      echo -e "$1\c"
      let col+=8
   done
   echo -e "$CR"
}

columns=${1:-${COLUMNS:-$(stty -a </dev/tty | sed -n 's/.*columns[
=]*\([0-9]*\).*/\1/p')}}
ESC=$(echo -e "\033\c")
CR=$(echo -e "\r\c")

echo -e "BEFORE:$CR";           row_of "T\t"
echo -e "${ESC}[=3L${ESC}[3g$CR\c"; row_of "${ESC}H        "
echo -e "AFTER:$CR";            row_of "T\t"
========================================================================

Operation looks like:

$ vt100
BEFORE:
T     T     T T T         T       T                   T       T     T
AFTER:
T       T       T       T       T       T       T       T       T       T

>Bela<



reply via email to

[Prev in Thread] Current Thread [Next in Thread]