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$5M;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! ========================