Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/18/84 SMI; site sun.uucp
Path: utzoo!watmath!clyde!bonnie!akgua!whuxlm!harpo!decvax!decwrl!sun!wmb
From: wmb@sun.uucp (Mitch Bradley)
Newsgroups: net.emacs
Subject: Redisplay on Suns
Message-ID: <2822@sun.uucp>
Date: Tue, 24-Sep-85 22:59:56 EDT
Article-I.D.: sun.2822
Posted: Tue Sep 24 22:59:56 1985
Date-Received: Sat, 28-Sep-85 06:52:47 EDT
Organization: Sun Microsystems, Inc.
Lines: 79

In response to my earlier message about using a termcap
entry for Suns which omits the insert line capability,
a couple of people suggested that the right thing to do is
to add the multiple insert/delete lines/characters
capabilities, instead of removing the insert capabilities
altogether.

I tried this, and I still prefer the termcap without the
inserts, assuming that emacs is running on the machine
which owns the bitmap.

To me, the visual effect of scrolling the upper window
is ugly with the insert/delete, because the lower half
of the screen jumps up briefly in the midst of
the process.

Here's why I don't think the multiple insert/delete is such
a big win over just repainting:

Assume that you have two Emacs windows, and you wish to scroll
the top window by (for example) 4 lines.  If you have multiple
insert/delete, here's the sequence of operations:
(when I say "screen" here, I really mean the Sun window that
emacs is running in)

delete 4 lines from the top of the screen
insert 4 lines just before the top mode stripe
paint new lines into the space just inserted.

Here's what has to happen:

delete 4 lines:  this requires touching the entire bitmap;
  first you copy the bottom of the screen up four lines, then
  clear the bottom four lines on the screen

insert 4 lines:
   copy the bottom half of the screen down four lines, then
   clear the 4 lines just before the mode line

paint 4 lines:
   obvious.


This is roughly 6 times the amount of memory traffic to the frame
buffer as results from a simple repaint of the top half of the
screen.  However, it does require less software overhead, because
passing a character through the terminal emulator is not real
cheap, due to the necessity to check for escape sequences and
stuff like that.

I recommend that you try it for yourself and see which you prefer;
different people may have different preferences.  Be sure to try
scrollong the top window of two.  Here are two alternative termcap entries:

With multiple insert/delete (with thanks to John P. Nelson)

Mu|sun|Sun Microsystems Workstation console:\
	:li#34:co#80:cl=^L:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\
	:ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:rs=\E[s:am:bs:km:ms:pt:\
	:kd=\E[B:kl=\E[D:ku=\E[A:kr=\E[C:kh=\E[H:\
	:al=\E[L:dl=\E[M:im=:ei=:ic=\E[@:dc=\E[P:\
	:AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:

Without any insert/delete:

Mu|sun|Sun Microsystems Workstation console:\
	:li#34:co#80:cl=^L:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\
	:am:bs:km:mi:ms:pt:\
	:ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:\
	:kd=\E[B:kl=\E[D:ku=\E[A:kr=\E[C:kh=\E[H:\
	:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
	:dl=\E[M:dc=\E[P:\
	:rs=\E[s:

Of course, the ultimate "right thing" is to have some way of
specifying a scrolling region.  Perhaps this is possible; I don't know.

Cheers,
Mitch