[gnu.emacs.bug] emacs not scrolling short lines

tom@ssd.harris.com (Tom Horsley) (08/15/89)

You (RMS) sent me mail asking me to submit an official bug report against
the problem of emacs re-drawing short lines rather than scrolling, so here
it is. There were several files involved, so I packaged everything up as a
shar file.

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 1)."
# Contents:  bug kr100.td long.data long.term.uue short.data
#   short.term.uue
# Wrapped by tom@hcx2 on Tue Aug 15 11:37:26 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'bug' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bug'\"
else
echo shar: Extracting \"'bug'\" \(2366 characters\)
sed "s/^X//" >'bug' <<'END_OF_FILE'
XOK. You asked me to submit an official bug report, so here it is:
X
XThe problem: Emacs tends to redraw the screen rather than scrolling it even
Xthough scrolling would be much faster. This happens when the screen is full
Xof short lines.
X
XI am running emacs version:
X
XGNU Emacs 18.52.3 of Sun Feb 26 1989 on hcx1 (usg-unix-v)
X
XThis is a Harris HCX system running CX/UX which is a merge of SystemV and
XBSD features. The most import fact is that we use terminfo, NOT termcap (in
Xfact it may be the key to the whole problem).
X
XThe files:
X
X   short.data     -  A file to display in a window to demonstrate the bug.
X
X   long.data      -  A file to display to demonstrate proper operation.
X
X   short.term.uue - A uuencoded termscript file generated by hitting return
X                    while at the end of the last line in a full screen width
X                    window of 22 lines length.
X
X   long.term.uue -  A uuencoded termscript file generated by hitting return
X                    while at the end of the last line in a full screen width
X                    window of 22 lines.
X
X   kr100.td      -  My personal terminfo file I use for my PC compatible
X                    which runs the VT100 emulator in kermit. (I have
X                    re-produced the problem on beehives and wyse-50s or
X                    wyse-95s as well though, so it is not unique to kermit).
X
XHow to see the problem:
X
XEnter emacs
X
XDo a find file on short.data in a full screen width window that is 22 lines
Xlong (the normal size of the largest window available on my terminal).
X
XMove the cursor to the end of the last line currently displayed. For
Xshort.data this means that the cursor should be sitting right at the end of
XWXYZ and the next line should be the status line.
X
XHit the return key.
X
XOn every terminal available here at Harris and with every baud rate this will
Xalways cause emacs to redraw the entire screen.
X
XTo see it work properly, re-do the same sequence, but use long.data.
X
XAs the termscript files show, about twice as much data was sent to the
Xterminal to scroll the screen with the short lines than was sent to scroll
Xthe screen with the long lines.
X
XPossibly the -lcurses termcap emulation invents padding out of the blue, but
Xmy termdef file does not specify any padding for anything, and as the
Xtermscript shows, it could have scrolled much faster than it re-draws.
END_OF_FILE
if test 2366 -ne `wc -c <'bug'`; then
    echo shar: \"'bug'\" unpacked with wrong size!
fi
# end of 'bug'
fi
if test -f 'kr100.td' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'kr100.td'\"
else
echo shar: Extracting \"'kr100.td'\" \(2037 characters\)
sed "s/^X//" >'kr100.td' <<'END_OF_FILE'
X# This terminal description is for a PC running kermit version 2.29C
X# emulating a DEC VT102 with a keyboard definition that emulates the
X# Procomm keyboard layout. A very strange combination I will admit.
X#
X# This used to be the reset string. I removed everything but \E>
X#   rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
X#
Xkr100|dec vt100 kermit emulation,
X    am,xon,pt,xenl,putblank,
X    it#8,cols#80,lines#24,
X    cr=^M,nel=^J,bel=^G,
X    clear=\E[2J\E[H,
X    smir=\E[4h,rmir=\E[4l,kich1=\EOP,krmir=\EOP,
X    kil1=\E[L,kdch1=\E[d,kdl1=\E[M,kel=\E[K,
X    cup=\E[%i%p1%d;%p2%dH,
X    cuu1=\E[A,cud1=\E[B,cuf1=\E[C,cub1=\E[D,
X    cuu=\E[%p1%dA,cud=\E[%p1%dB,cuf=\E[%p1%dC,cub=\E[%p1%dD,
X    home=\E[H,el=\E[K,ed=\E[J,
X    smso=\E[1;7m,rmso=\E[m,smul=\E[4m,rmul=\E[m,
X    rev=\E[7m,blink=\E[5m,bold=\E[1m,
X    sgr0=\E[m,
X    sgr=%?%p1%t\E[0;1m
X        %e%p2%t%?%p3%t%?%p4%t%?%p5%t\E[0;4;5;7m
X                             %e\E[1;4;5;7m%;
X                      %e%p5%t\E[0;4;7m
X                      %e\E[1;4;7m%;
X               %e%p4%t%?%p5%t\E[0;4;5m
X                      %e\E[1;4;5m%;
X               %e%p5%t\E[0;4m
X               %e\E[1;4m%;
X        %e%p3%t%?%p4%t%?%p5%t\E[0;7;5m
X                      %e\E[1;7;5m%;
X               %e%p5%t\E[0;7m
X               %e\E[1;7m%;
X        %e%p4%t%?%p5%t\E[0;5m
X               %e\E[1;5m%;
X        %e%p5%t\E[m
X        %e\E[0;1m%;,
X    .ich1=\E[@,il1=\E[L,dch1=\E[P,dl1=\E[M,
X    is1=\E[?7h\E=\E[1;24r,
X    rs1=\E>,
X    .smkx=\E[?1h\E=,.rmkx=\E[?1l\E>,
X    ht=^I,hts=\EH,tbc=\E[3g,
X    ri=\EM,ind=\ED,sc=\E7,rc=\E8,
X    csr=\E[%i%p1%d;%p2%dr,
X    tx_blank=\E(0\144\E(B,
X    cent=\E(0\175\E(B,bar=|,not=\136,
X    kcuu1=\E[A,kcud1=\E[B,kcuf1=\E[C,kcub1=\E[D,kbs=^H,
X    kreset=^V,khome=\E[H,
X    kdup=^T^D,kfmark=^T^F,kcent=^T^C,kbar=^T^V,knot=^T^N,
X    khost=^Th,kattrib=^Ta,kstats=^Ts,ktrace=^Tt,kform=^Tf,
X    kterminate=^Z,
X    kf15=\EOQ,kf5=\EOw,kf6=\EOx,kf7=\EOt,kf8=\EOu,kf9=\EOq,
X    kf10=\EOr,kf13=\EOp,kf1=\EOR,kf16=\EOS,kf2=\EOy,kf3=\EOm,
X    kf4=\EOv,kf11=\EOl,kf12=\EOs,kf17=\EOM,kf14=\EOn,
END_OF_FILE
if test 2037 -ne `wc -c <'kr100.td'`; then
    echo shar: \"'kr100.td'\" unpacked with wrong size!
fi
# end of 'kr100.td'
fi
if test -f 'long.data' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'long.data'\"
else
echo shar: Extracting \"'long.data'\" \(977 characters\)
sed "s/^X//" >'long.data' <<'END_OF_FILE'
XThis is a screen full of long lines (at least fairly long) which have
Xenough unique about them that emacs will not try anything fancy
Xabcdefghijklmnopqrstuvwxyz
XABCDEFGHIJKLMNOPQRSTUVWXYZ
X0123456789!@#$%^&*()_+-=
Xqwertyuiop[]`][poiuytrewq
Xasdfghjkl;'';lkjhgfdsa\zxcvbnm,.//.,mnbvcxz\
XFour score and seven years ago OUR FORFATHERS INVENTED THE
Xlegendary tubesteak at which point in time it became necessary
Xfor baseball to declare itself independent,
Xbut unfortunately attila the bun came along and messed up
Xthe plan that was working so well.
XIn any event the plasmoid gribble zook zoom sport
Xratisia tasitita gimbob reglushish
Xjdfbgkdjhgoubierubiwhbgmnbjdhgiuerggihbgkjbgieugeiugbrei
X389047569037569038769urhidbfmxbmxxjchsio7uy85e76
Xiodrsgjashbgur89075ey983hiufdkdjkjiout
Xkufdguioeyg8iq7giubdfiubiue9hgiujf
Xidurt82347658y7gjhdjfbkvcjbie785e7t8iutkgjb
Xdifuesiy23907yidfjblkdburty90857y9uibkjdn
Xkdjfgoie8uy9-8yijdskud-9548y49htljndoutry9t48
Xidstuh958y9rihoino8u985hotihnlri8905
END_OF_FILE
if test 977 -ne `wc -c <'long.data'`; then
    echo shar: \"'long.data'\" unpacked with wrong size!
fi
# end of 'long.data'
fi
if test -f 'long.term.uue' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'long.term.uue'\"
else
echo shar: Extracting \"'long.term.uue'\" \(226 characters\)
sed "s/^X//" >'long.term.uue' <<'END_OF_FILE'
Xbegin 666 long.term
XM;FEL&UM+&ULR,CLS-T@;6S$[,C1R&ULQ.S%(&UM-&ULR,CLQ2!M;3!M;,3LR
XM-'(;6S(T.S%(&UM+&ULR,SLS2!M;,3LW;2HJ&UMM&ULR,SLV-4@;6S$[-VU"
XM;W0;6VT-&UM!&UM"&UM"179A;#H;6T,H;W!E;BUT97)M<V-R:7!T(&YI;"D;
X'6S(T.S=(#5M!
X`
Xend
END_OF_FILE
if test 226 -ne `wc -c <'long.term.uue'`; then
    echo shar: \"'long.term.uue'\" unpacked with wrong size!
fi
# end of 'long.term.uue'
fi
if test -f 'short.data' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'short.data'\"
else
echo shar: Extracting \"'short.data'\" \(110 characters\)
sed "s/^X//" >'short.data' <<'END_OF_FILE'
Xabcd
Xefgh
Xijkl
Xmnop
Xqrst
Xuvwx
Xyzab
Xcdef
Xghij
Xklmn
Xopqr
Xstuv
Xwxyz
X0123
X4567
X89AB
XCDEF
XGHIJ
XKLMN
XOPQR
XSTUV
XWXYZ
END_OF_FILE
if test 110 -ne `wc -c <'short.data'`; then
    echo shar: \"'short.data'\" unpacked with wrong size!
fi
# end of 'short.data'
fi
if test -f 'short.term.uue' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'short.term.uue'\"
else
echo shar: Extracting \"'short.term.uue'\" \(417 characters\)
sed "s/^X//" >'short.term.uue' <<'END_OF_FILE'
Xbegin 666 short.term
XM;FEL&UM+&ULR,CLU2!M;,C0[,4@;6TL;6TAE9F=H#1M;0FEJ:VP-&UM";6YO
XM<`T;6T)Q<G-T#1M;0G5V=W@-&UM">7IA8@T;6T)C9&5F#1M;0F=H:6H-&UM"
XM:VQM;@T;6T)O<'%R#1M;0G-T=78-&UM"=WAY>@T;6T(P,3(S#1M;0C0U-C<-
XM&UM".#E!0@T;6T)#1$5&#1M;0D=(24H-&UM"2TQ-3@T;6T)/4%%2#1M;0E-4
XM558-&UM"5UA96@T;6T(;6TL;6S(S.S-(&ULQ.S=M*BH;6VT;6S(S.S8U2!M;
XM,3LW;4)O=!M;;0T;6T$;6T(;6T)%=F%L.AM;0RAO<&5N+71E<FUS8W)I<'0@
X,;FEL*1M;,C0[-T@-
X`
Xend
END_OF_FILE
if test 417 -ne `wc -c <'short.term.uue'`; then
    echo shar: \"'short.term.uue'\" unpacked with wrong size!
fi
# end of 'short.term.uue'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have the archive.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0

=====================================================================
    usenet: tahorsley@ssd.harris.com  USMail: Tom Horsley
compuserve: 76505,364                         511 Kingbird Circle
     genie: T.HORSLEY                         Delray Beach, FL  33444
======================== Aging: Just say no! ========================