[net.emacs] Changes for CCA Emacs

martillo@mit-athena.ARPA (Joaquim Martillo) (11/06/84)

The latest version of CCA Emacs (162.45z) which we received at MIT did
not run properly unless stty tabs was first executed.  This requirement
is a pain in the neck and is eliminated by adding a line in e_io.c in
the function  uncook().

After

	nsgb.flags |= RAW;

add

	nsgb.flags &= ~XTABS;

If you are running Berkeley 4.2BSD in a networked environment and wish
to have both Start/Stop processing when not running emacs and also whish
to use ^S (incremental search) and ^Q (quote character) when running
emacs over the network, changes must be made in uncook() and cook(0 in
e_io.c.

In uncook() change

	#if SUN
		ztch.t_startc = ztch.t_stopc = '\237';
		ioctl(1, TIOCSETC, &ztch);
	#end

to

	#if SUN
		ztch.t_startc = ztch.t_stopc = '\237';
		ioctl(1, TIOCSETC, &ztch);
	#else
		
		ztch.t_startc = ztch.t_stopc = -1;

		ioctl(1, TIOCSETC, &ztch);

	#end
.

When the start/stop characters are set to -1, the slave part of the
pseudoterminal driver informs the master, and rlogind reads a control
byte which says start/stop processing has been turned off.  rlogind then
sends an out of band message back to the local rlogin process to turn
off start/stop processsing.

To turn start/stop processing back on on leaving emacs, the following
change in cook() in e_io.c should be made.

Change the conditional execution of ioctl(1, TIOCSETC, &tch) for the RAW
mode case for SUN to an uncondition execution in RAW mode for all
systems.

The code should read:

	if(cbreak && (strncmp(TERM, "aaa", 3) || sgb.sg_ospeed != EXTA)){
		ioctl(1, TIOCSETC, &tch);
		ioctl(1, TIOCSLTC, &ltch);
	}

	else

	{

		ioctl(1, TIOCSETC, &tch);

	}
.

This again causes the out of band message to be sent back to the local
rlogin -- this time to turn back on start/stop processing.

z@masscomp.UUCP (Steve Zimmerman) (11/08/84)

> The latest version of CCA Emacs (162.45z) which we received at MIT did
> not run properly unless stty tabs was first executed.  This requirement
> is a pain in the neck and is eliminated by adding a line in e_io.c in
> the function  uncook().

CCA EMACS already does look at the current tab setting to see whether it
should use tabs in its output; see the reference to XTABS in termcap()
in e_disp.c for how it does this.  Futhermore, I just tested it once
again and verified that CCA EMACS does not output tabs if you have set
"stty -tabs", and that it works properly for either setting of "tabs".

According to the 4.2BSD manual, in RAW mode "no output processing is
done."  Yet the posted fix clears the XTABS bit in RAW mode, which
according to the manual should not affect anything.  If there is a
problem, and if the posted fix cures it, then my guess is that this
problem occurs only over network connections, and that the network
software is doing something funny with tabs in RAW mode that it
shouldn't.  If the posted fix cures this, then it's reasonable to put it
in, as it should have no effect on sessions not conducted over the
network.

	Steve Zimmerman

chris@umcp-cs.UUCP (Chris Torek) (11/09/84)

By the way, be careful where you set and reset the start/stop chars
for 4.2BSD -- when rlogind receives the OOB signal about ^S/^Q on
PTYs, it flushes any input data.  I found this out the hard way when
I put the ``set ^S/^Q'' changes into our local Gosling Emacs, but
put them after the ``uninitialze terminal'' calls.  All the strings
sent to fix up the terminal were flushed by rlogin!
-- 
(This mind accidently left blank.)

In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (301) 454-7690
UUCP:	{seismo,allegra,brl-bmd}!umcp-cs!chris
CSNet:	chris@umcp-cs		ARPA:	chris@maryland

mp@allegra.UUCP (Mark Plotnick) (11/09/84)

By the way, does anyone besides MIT actually have CCA EMACS with
Elisp?  Someone here ordered it with the proviso that we get the
version with Elisp, and he's been waiting several months.
	Mark

z@masscomp.UUCP (Steve Zimmerman) (11/11/84)

> By the way, does anyone besides MIT actually have CCA EMACS with
> Elisp?  Someone here ordered it with the proviso that we get the
> version with Elisp, and he's been waiting several months.
> 	Mark

All the Unix versions of CCA EMACS with Elisp went out in September;
this was some large number of orders.  The version referred to in a
previous message, 162.45z, contains Elisp.  There were delays in getting
out the VMS version of CCA EMACS with Elisp, and that's probably what
you heard about.  I don't know if they've got it out yet.

	Steve Zimmerman

chris@umcp-cs.UUCP (Chris Torek) (11/11/84)

Aha!  This sounds familiar.  I believe rlogin attempts to expand tabs
for you, if you didn't have ``stty tabs'' set when you started it.  This
is not a problem with CCA Emacs, nor vnews, but with rlogin, which is
trying too hard to be smart.
-- 
(This line accidently left nonblank.)

In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (301) 454-7690
UUCP:	{seismo,allegra,brl-bmd}!umcp-cs!chris
CSNet:	chris@umcp-cs		ARPA:	chris@maryland