From: CRDGW2::CRDGW2::MRGATE::"SMTP::AI.MIT.EDU::GNULISTS" 3-NOV-1990 04:54:17.72 To: MRGATE::"ARISIA::EVERHART" CC: Subj: Epoch 3.2 Received: by crdgw1.ge.com (5.57/GE 1.76) id AA05419; Sat, 3 Nov 90 03:48:21 EST Received: by life.ai.mit.edu (4.1/AI-4.10) id AA15267; Wed, 31 Oct 90 19:41:30 EST Return-Path: Received: from rice-chex (rice-chex.ai.mit.edu) by life.ai.mit.edu (4.1/AI-4.10) id AA15227; Wed, 31 Oct 90 19:39:30 EST Received: by rice-chex (4.1/AI-4.10) id AA14546; Wed, 31 Oct 90 19:39:21 EST Resent-Date: 27 Oct 90 17:09:47 GMT Resent-From: gnulists@ai.mit.edu Resent-Message-Id: <9011010039.AA14546@rice-chex> Received: from uunet.uu.net by life.ai.mit.edu (4.1/AI-4.10) id AA25917; Sat, 27 Oct 90 13:11:17 EDT Received: from UWM.EDU by uunet.uu.net (5.61/1.14) with SMTP id AA13388; Sat, 27 Oct 90 13:10:58 -0400 Received: by uwm.edu; id AA13589; Sat, 27 Oct 90 12:10:47 -0500 To: gnu-emacs-announce@uunet.uu.net Path: uwm.edu!ux1.cso.uiuc.edu!uiucdcs!carroll From: carroll@cs.uiuc.edu (Alan M. Carroll) Sender: gnulists@ai.mit.edu Newsgroups: comp.emacs,gnu.emacs.announce,comp.windows.x Subject: Epoch 3.2 Keywords: Epoch 3.2 GNU Emacs X windows Message-Id: <1990Oct27.170947.13388@ux1.cso.uiuc.edu> Date: 27 Oct 90 17:09:47 GMT Reply-To: carroll@cs.uiuc.edu (Alan M. Carroll) Organization: ConversationBuilder Project Resent-Via-Bcc-To: info-gnu-emacs@prep.ai.mit.edu Version 3.2 of Epoch, GNU Emacs for the X windowing system has been formally released. It is available by anonymous ftp from cs.uiuc.edu (128.174.252.1) in the directory pub/epoch-files/epoch either as a full distribution or as patches from either the Epoch 3.1 or Epoch 3.2 Beta distributions. There is also an epoch mailing list. To join the list or get more information about obtaining epoch, email epoch-request@cs.uiuc.edu, uunet!uiucdcs!epoch-request or (as a last resort) epoch-request%cs.uiuc.edu@uiucvmd.bitnet. Epoch is a modified version of GNU Emacs 18.55 with several major enhancements: o Multiple X-Window support o Marked and Attributed regions of text o Support for multiple fonts (fixed size), underlining, and stipple patterns. o Asynchronous communication with other X-Clients (usually the window manager) o Mouse-dragging with highlighting to support mouse-based cut-and- paste. o Access to raw X-Window objects README for Epoch version 3.2 Major changes: + Epoch elisp code is now dumped when Epoch is built. See loadup.el in lisp directory for which files are dumped. dot.emacs should load any elisp files which are not dumped. (Or if memory prohibits dumping files) + Epoch now relies on some of the standard lisp files being different from the standard distribution. These are @ version.el : Changed to have "Epoch" in messages @ startup.el : If running Epoch, forces screens 0,1 to be mapped (unless inhibit-initial-screen-mapping is non-nil) @ time.el : display-time-filter now supports hooks in variable display-time-hook. @ loadup.el : Dumps under the name "epoch" instead of "emacs" @ loaddefs.el : Changed to have "Epoch" in the mode line @ backquote.el : Fixed bug with '(@, )'. Only version.el, loaddefs.el, and loadup.el are incompatible with GNU-Emacs 18.55, and these only in that certain messages/displays will say "Epoch" instead of "Emacs". + epoch::create-screen no longer maps screens upon creation. This is a critical difference. This is necessary so that property manipulations can be performed on the screen before it is mapped. The changes in startup.el are primarily to make sure that the first edit screen is mapped if for some reason the init file gets an error. Notice also that for some of the advertised features to work, you must use create-screen, so that the correct properties are set (or take care of them yourself). + Event handling is completely different. Read the manual, look at the code. + Mouse handling is completely different. You can still use the standard Emacs code if you want, but the new version is really a _lot_ better. Read the manual. + Handling of attributes is completely different. The complete context for displaying text (i.e. foreground/background color, stipple pattern, font, underline color, etc.) is now specified in a "style" structure. Attribute tables are now references to styles. Read the manual for further details. + Buttons are completely different. Read the manual. There is code in fix3-2.el in the distribution to change (most of the) vector button code to the new format. The new style is based on Denys Duchier's version. Also, read-only buttons are supported now. + The Epoch manual is now in Info format. u + X Properties work better (more general). In particular, X resources can be used, and also properties can be set to lists/arrays of values (c.f. WM_PROTOCOLS). Minor changes: - A lot of bug fixes. Should be more stable. See the ChangeLogs for more detail. - Client messages work better. - New handlers for map, resize, and move events. - Multiple packages in different files, loaded by dot.emacs file. - Complete set of wrappers for epoch:: functions. - Standard files now load support for WM_DELETE_WINDOW client message from WM. (This means that a "quit" selection from window managers that obey the ICCCM delete-window protocol will cause that window to be deleted, rather than blowing away all of Epoch. A window manager that does this is Suns OLWM.) - Epoch 3.1 would "spin" if the X server died while epoch was running or if you killed epoch from a window-manager window. We have reduced this problem under 3.2. Now, if you delete epoch windows (or an entire epoch) from a window-manager, or if you terminate the X server normally, epoch will die. The only time this fix does not work is if the X server itself terminates abnormally (ie it core dumps). Since this is a very abnormal condition we dont know how to deal with it. - Under SunOs4.0.3, epoch 3.1 would sometimes coredump due to a bug in TZSETWALL causing Gnu Malloc to crash. This is protected against in epoch 3.2. - Alan's Epoch environment files are in the contrib/amc directory. These should be considered example, not official code. Other contributed code is located in the contrib directory also. It has been verified to run with Epoch 3.2, but is not considered official code. INSTALLING: The file `INSTALL' in this directory says how to bring up Epoch on Unix, once you have loaded the entire subtree of this directory. The files `build-install' and `Makefile' help automate the process of building and installing epoch. The former is a shell script. See `INSTALL' for more info. UPGRADING TO EPOCH 3.2: Several things are involved in upgrading code from 3.1 to 3.2. + Use of epoch:: functions - there should be wrappers for almost all of the epoch::functions, except a few special cases (noted in the manual). This is particularly important for create-screen, which has a lot of functionality beyond epoch::create-screen. + Use the "dot.emacs" included in ./epoch-lisp. If possible, simply load that file in your own .emacs. If not, you must update your .emacs to reflect the new files/ordering in the dot.emacs file. + Buttons are data types, so the old vector munging code won't work. Such references will have to be changed to use the button access functions. See the code in fix3-2.el. + Mouse handling is different. Epoch now supports "mouse-maps" which work a lot like key maps. Instead of munging the mouse dispatch stuff, you can just do (global-set-mouse mouse-left mouse-control 'my-mouse-function) to set control-left-button to execute 'my-mouse-function. Buffer local mouse maps can be installed with (use-local-mouse-map) and (local-set-mouse). Mouse functions are not called with coordinates, but with a list of (POINT BUFFER WINDOW SCREEN), which we think is a lot more convienient. When the function is called, the point (and current buffer/window/screen) has _NOT_ been changed from what they were before the mouse click. If you want them changed, you should do it yourself. On the other hand, if you don't want it changed, you're all set. + Property handling is different. To dispatch on a property change, use the (push-property) function to set up a handler. KNOWN BUGS: The standard Elisp files are in Alan's bizarro indentation style. To convert them to a readable format, use the code in uglify.el, which will convert a buffer to a (mostly) standard format. On the other hand, if you like that style, support for it is in contrib/amc/amc-lisp.el. There are two reported bugs which we have not been able to track down yet. It is reported that if Epoch is used as a server for extended periods, it will eventually crash. We have not observered this ourselves, but it has been reported by multiple other users, apparently mostly (or all) on Ultrix systems. Sometimes when switch files in the minibuffer and a garbage collect happens, Epoch will core dump. If either of these happen to you please report it, along with as much detail as you can, including the Epoch version, your OS version, X version, and hardware. Epoch, when made on certain machines using gcc 1-37 and gcc-gnulib, runs extremely slowly. This problem is known to manifest itself on Sun3, Sun386i and Encore Multimax (all bsd unices of various kinds) but NOT on intel 386i running 386/IX sysV Unix. It isnt clear if it happens on Sparc machines 'cuz they are so fast (but we *think* epoch is a little slower with gcc). So, if you make the system with GCC and it is SLOOOWW, then try the generic cc on your machine instead. If you can fix this problem please! let us know about it. Since epoch runs slowly with gcc compile and not with cc compile, we dont think it is an epoch problem.