[comp.emacs] epoch 2.0 now available

kaplan@m.cs.uiuc.edu (12/25/89)

I realize the following will be a duplication for some people who also read
comp.windows.x, and I apologize:  However, several people tried to send me
email about getting epoch and/or joining the epoch mailing list, and I have
been unable to reply to the addresses they gave me.  If you are one such
person, please try get hold of me again, but give specific return addresses
in the body of your message (several if possible).

thanks,
Simon Kaplan
kaplan@cs.uiuc.edu
uunet!uiucdcs!kaplan
kaplan%cs.uiuc.edu@uiucvmd.bitnet

Message follows:

Epoch 2.0 is now available from cs.uiuc.edu by anonymous ftp.

This is a major extension of epoch-beta-1.0.  We have tried to incorporate
all the changes and suggestions made by users of the beta version.  We believe
this new version is significantly more robust and has much improved features.

User-visible changes include:

1.  Screen title reflects current buffer name, and this is changed as
    buffers change.

2.  New improved event handlers, deal with focus events properly.

3.  More ICCCM compatible.

4.  Reliance on GWM removed  (we still prefer gwm though :-)

5.  Updated documentation

6.  save/restore problem fixed.  Can now switch screens robustly when in
    minibuffer.

7.  epoch-mode-alist allows you to set defaults for screens based on
    file mode.  This in turn means that you can do things like have
    all C-mode screens with one set of configurations (color, size etc),
    TeX-mode screens with another, etc.

8.  When used as an emacsclient, epoch will pop a new screen for the server
    tasks.

9.  Screen titles optionally include name of machine epoch is running on.
    Useful if you run epoch on multiple machines.

10. Multiple-screen updating now works.  You can control the granularity
    of this for efficiency reasons:  Anything from all screens update to
    only selected screens update to only current screen updates.  Useful
    if you have shells, LaTeX jobs, etc running in disjoint screens and 
    you want to watch them while working in another screen.

11. ... and lots more... see the changes documentation below.

As before, you get it by ftp'ing to cs.uiuc.edu and then cd to 
pub/epoch-files/epoch.

 
The files in the release directory are as follows:

README.release-2.0	mostly this message
epoch-2.0.tar.Z:	144-bit compressed entire release (code+manual)
epoch-2.0-lisp.tar.Z:	144-bit compressed epoch-lisp-files.
epoch-2.0-man.tar.Z:	144-bit compressed epoch manual
epoch-1.0-2.0-src.tar.Z:144-bit compressed diffs and new files for src
			subdirectory *only*.

To make the whole thing, just get epoch-2.0.tar.Z.  

Otherwise get the other 3 tar files.  The first replaces the old 
epoch-lisp-files subdirectory, the second the old epoch-man subdirectory and
the third is diffs for the src directory, and some new files.  The diffs
assume you have installed the earlier patch for focus-in events.  (in the file
epoch-beta-1.0-diffs.tar.Z;  the old epoch.tar.Z holding 1.0 has been 
renamed epoch-beta-1.0.tar.Z)

SINCE THIS RELEASE IS A MAJOR REVISION, WE STRONGLY ENCOURAGE YOU TO GET THE
WHOLE THING AND START FROM A FRESH BASE.  

The following summarizes the changes to epoch since release 1.0.  We hope that
most of the points you have all raised have been addressed here.  Release 3.0
will be out in a while:  3.0 will upgrade epoch to be 18.55 compatible, and 
make any other fixes necessary..

Changes / Fixes installed :

(12/23/89)

+	Removed the dreaded screenX.h preprocessor problem.

+	Installed the Mips-required code from beldar@mips.com 

+	Made new version of server.el that will pop a new screen 
	when using emacsclient with epoch.  Made this conditional,
	so you can use this code with regular ol gnuemacs also.

+	Installed new version of epoch.el and maintain-titled-screen.el
	The default is now that a screen's title is <buffer-name> @ 
	<system-name>.  The @ System-name part can be turned off
	by setting the variable include-system-name to nil (default t).
	Minibuffer is now named minibuffer@system-name, default screen
	is also renamed to be buffer-name@machine.  The std ^X keybindings
	are rebound in the file maintain-titled-screen to keep all this
	consistent.  To inhibit this, dont load the file.  To inhibit
	minibuffer and first screen getting the @system-name stuff, set
	include-system-name to nil.

+	variable auto-raise-screen.  nil ==> dont autoraise screens on
	focus in.

+	Rewrite event handler code in epoch.el to work with new event
	handling scheme.  (see below and manual)

+	updated manual to include newest stuff.



(12/22/89)

+	More fixes to save/restore. Fixed stability problems. A clear and
	definite bug was found and mashed out of its slimy existence.

+	New style event handling. "coed" references removed. New system
	works like this:
	Property changes are no longer special. The Q is now a variety
	of X events. The old primitives are gone. The new primitives are
	(*x-get-event*) return the next X event in the Q. Events are
	returned as a 3-vector. 0 is the type (a symbol), 1 is the value,
	and 2 is the screen, e.g. [ key-symbol value screen ].
	Property change events are now returned as
	[ x-property-change ( "Property-name" . "New Value" ) <screen> ]
	Focus in and out are no longer cause property changes. They are
	returned as distinct events, in the form
	[ x-focus state <screen> ] where state is t if it was a focus in,
	and nil if it was a focus out. You can install a handler for
	these events by setting the variable x-event-handler to have a
	function. This function is called whenever Epoch is waiting for
	input and there are events in the Q. There is another variable
	x-event-handler-abort, which controls what happens when there
	is an error in the event handler function. If not nil, x-event-handler
	is set to nil, to avoid error runaway. If nil, then just the current
	call is aborted, and if there are more events, the handler is called
	again. The default is t, so default is to cancel the handler in
	event of error.
	IF YOU SET x-event-handler-abort TO nil EPOCH MAY WELL GO 
	BEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEP CONTINOUSLY.


+	Property name changes: COED_ROOTBLOCK is now EPOCH_SCREEN_ID.
	COED_CURRENT is now EPOCH_CURRENT.

+	WM_SIZE_HINTS property changes are now expanded by *x-get-event*.
	I don't know why I did this - they don't seem to show up anyway.


(12/21/89)

+	Save/restore window configuration problems hopefully fixed. Very
	gnarly bit of coding. If you select a different screen while in a
	recursive edit, the selection is kept, and the window structure of
	the old screen is restored. Updates should be better - the dangling
	completion window problem should be fixed.

+	Command line options now actually override .Xdefaults.
	The WM_COMMAND property is now correctly set on the minibuffer
	window. The command-line-args variable does not have any of the
	X options in it. If you really need them, do a
	(*x-get-property* "WM_COMMAND" (*x-minibuf-screen*))
	This also fixes the "editing X options" problem. A new option -R
	is available to set reverse off. If you want to mess with options,
	look in xdefault.c, there's a table of options for the command line.

+	The (void *) problem is fixed. All (void *) references are now
	(VOID *), with a #define VOID void in config.h. If your compiler
	doesn't handle void pointers, change the #define to
	#define VOID char.

+	Icon name added. .Xdefault string is epoch.screen.icon.name.
	Alist key is 'x-icon-name. To set or change an icon name,
	use the function (x-icon-name [value ] [screen])
	If [value] is nil, the current icon name is returned. Otherwise,
	it is set to value.


(12/20/89)

+	New variable "epoch-version", which gives information on the Epoch
	version. Useful for having conditional checks in a .emacs.

+	Minibuffer size changes recognized now. They used to be ignored.

+	Mouse events are now a triplet, ( X Y SCREEN ). The Turing-awful
	malloc()'s in the SIGIO handler are gone.

+	The initial hints for screens are more thorough. This fixes some
	problems with UWM and screens starting at 0x0.

+	A new primitive *x-mapraised-screen* is available that does a
	MapRaised on a screen.

+	Some internal stuff was cleaned up. A bug with having the same buffer
	in two different screens causing incorrect displays was fixed.

+	Multi-screen updates: this is installed, and alledgedly works, although
	it has not been throroughly tested.
	To enable the feature, set x-global-update to non-nil (e.g., t).
	For each screen, there is a flag to say if it gets globally updated.
	This is set by (x-set-update t), which returns the previous value.
	(x-update-p) returns the current state. The property symbol
	'x-update can be used in screen property alists for setting a new
	screen. So, to have this on all screens, do
	(setq x-global-update t)
	(setq x-screen-properties
		(cons (cons 'x-update t) x-screen-properties))
	(x-set-update t)	; do first edit screen
	This has no meaning for the minibuffer, since it is always udpated.