e93 INSTALLATION INSTRUCTIONS:

NOTE: Before proceeding, please read "LICENSE.TXT".

Building e93:
-------- ---

First off, e93 uses Tcl (current version is 7.6) for its shell, so
libtcl76.a must exist on your system before attempting to compile e93.
You can get tcl from ftp.smli.com (/pub/tcl/).

If you would like to use an different version of Tcl, there should be
no problem as long as it is not too old (only tested above 7.3). You
will need to modify the makefile to point to the library file for the
version you are using. The current makefile looks for:
/usr/local/lib/libtcl76.a

The source for e93 is contained in 2 directories. The outermost
directory contains the machine independent side of the code, while the
"xgui" directory contains the X windows implementation of the GUI
code.

The outermost makefile will build both sections and create the
executable "e93".

To build e93 on most systems, (after Tcl is installed) all you need to
do is: "cd" to the outer directory, and issue: "make".

The makefiles are initially set up to expect the Tcl include file
(tcl.h) to be located in:
/usr/local/include
And the X11 include files to be located in:
/usr/include/X11

If these are not the paths to the include files on your system, you
will need to edit both "makefile", and "xgui/makefile" to point to
the correct paths.

On some systems, you may run into trouble compiling xgui/events.c
in the function:

void StartAlarmTimer()

The problem arises from this function's use of a "sigaction" structure
which is defined somewhat inconsistently across machines. If you have
trouble, you will need to look up the structure in your <signal.h>, or
<sys/signal.h> file, and modify the member names appearing in
StartAlarmTimer to suit whatever form your sigaction takes. This is
not very difficult to do, but in future versions of e93, I will
attempt to handle this in a better way. Suggestions are welcome.

Installing e93:
---------- ---

Once e93 has compiled successfully, issue a "make install" command,
and e93 will be copied to /usr/local/bin, along with the standard startup
script ".e93rc". NOTE: you may need to become root in order to write to
/usr/local/bin.

Some notes about .e93rc:
---- ----- ----- ------

The file ".e93rc" contains the Tcl script code that is initially run
by the editor to set up menus, keybindings, colors, etc... When it
starts, e93 looks for this file first in the $HOME directory of the
user running it. If it is not found, or not readable, e93 continues to
search through all paths specified in $PATH. It is intended that
serious users of the editor will have personalized versions of
".e93rc" located in their home directories. However, so casual users
can also use e93, a copy of the standard .e93rc is installed in
/usr/local/bin.

NOTE: e93 relies heavily on this file. No menus are defined by
default, so if this file is corrupt, e93 may start up in a somewhat
helpless state. If you plan on modifying the .e93rc file, it is a good
idea to copy the standard one to your home directory, and modify it
there. If you make a mistake, and corrupt the file, you then still
have a usable version in /usr/local/bin.

Problems, bugs, caveats:
--------  ----  -------

There is a user manual (README.e93) but it is still somewhat
incomplete. To get an idea of some of the Tcl commands in e93, and how
to use them, take a close look at the standard .e93rc file. Also, look
at the source file "shellcmd.c". It contains the implementations of
all of the Tcl commands that e93 supports.

Some users compiling e93 under SOLARIS have complained that the first
two characters of filenames do not show up in the file selection
dialog boxes properly. If this happens to you, it can be fixed by
replacing the line:
#include <dirent.h>
of xgui/includes.h with:
#include <dir.h>
After doing this, be sure to issue a "make clean" command in the outer
directory, and then make everything again. The problem stems from
differing definitions of the "dirent" structure across these two
files.

There is an update problem caused when the window manager is set to
move windows opaquely, the user is dragging a window over one of e93's
documents (causing expose events on the document), and e93 is
scrolling the contents of that document. As far as I can tell, this is
a problem inherent to X Windows. If XCopyArea is called (to do the
scroll) and an area of a window is invalid, but the expose event has
not yet been handled, when the application gets the expose event, it
will point to the original area, even though the place that was
invalid has now been scrolled to a new position. This problem rarely
shows itself, but is annoying none the less.

Menus and keybindings do not function within dialog windows.

The "active" field of menus is not implemented.

Using a keyboard focus model other than explicit may cause you to get
confused.

If all of virtual memory is used up, the editor may crash, due to code
within some external libraries that allocates memory, and then uses it
without first checking to see if the allocation succeeded. This
problem is minor, since typically you are not editing at anywhere near
the limit of virtual memory.

There is no "busy" cursor.

There are a few cases where sending the "Break" keycode will not cause
Tcl to stop processing.

I have never tested e93 on a Black & White display.

If a window manager is restarted while e93 is running, causing it to
reparent e93's windows again, or anything else causes e93's windows to
be reparented again, e93 will become confused about the windows it has
open.
