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.