Enhanced Editor

The Enhanced Editor, also known as EPM or "Enhanced E" is a fully programmable all-purpose editor that was introduced with OS/2 Version 2.0. It is a bit unusual in the PC world in that it is not a plain text editor application per se, but rather a text editing engine to which you add scripts to make it behave like you want, note that this is different from programmable text editors such as Emacs or even the closely related Visual SlickEdit in that normal extensible editors have a core functionality that can be added to but cannot be stripped away or modified except by changing the executable itself. In EPM almost all of what would be the "core functionality" is actually scripts that can be modified or stripped away as needed.

So as not to confuse people, it should be noted that there is another OS/2 editor from the company PillarSoft that is also known as Enhanced E (freeware version of their Enhanced EE) and although that is a much later release than this product it is best advised to not use the "Enhanced E" for this product but stick to calling it EPM or the full "Enhanced Editor".

Features
This flexible architecture means that in practice with relatively little work you can configure and extend the editor to suit you and the tools you use, it is for instance popular to use it as a "workframe" or IDE front end for compilers and related tool chains, but it has also been used as the back end for editing structured publications such as language dictionaries and so on. You are not confined to using the EPM engine and the REXX scripting capabilities, you can also use GUI's and external programs and libraries and you can control the program via Dynamic Data Exchange which is how the IBM WorkFrame/2 and Watcom integrated it.

OS/2 versions up to 6.0 are ports of the old DOS E editor with a PM front end, i.e. they are 16-bit software, version 6.0 however was re-written from scratch and is fully 32-bit. This means that if you are for some reason stuck with version 5.51 there are some limitations for instance it only allows up to 256 characters per line while 6.0 has an infinite line length, if they are longer than 1600 bytes they are simply split up in memory and reassembled on file saves. Similarly macro space on version 5.5 was only 64k etc.
 * Limitations

The last releases of the package in the form of 5.51 for the 16-bit code and 6.03b for 32-bit code are both stable with the 5.51 in particular being rock solid after about a decade of fixes. Apart from the aforementioned limitations relating to the "16-bit-ness" of the older versions the only real issues are really due to the passage of time, with concepts that were emerging at the time version 6 was introduced such as Unicode missing in action, although if you hook up the REXX Unicode libraries, you can make it automatically import and export Unicode text with a little work but it will never be a Unicode editor internally.

There has also not been an official update on any of the filters, so language support for Java, C++ and other languages that have seen a lot of updates are all getting a bit stale, but as these are just scripts and not part of the core functionality, you can update the scripts for those languages yourself and some of the add on packages offer updated files for those languages.

History
EPM traces its history to the Personal Editor released in 1982, but that product offered limited programmability via the use of GML configuration files, as that product had a number of problems a re-written version was released in 1984 called simply E and a year later a version of E was released that used REXX as a scripting language. That version of the language was so flexible that IBM used it internally to create and model all text mode interfaces over the next few years.

J. Clark Maurer, one of the main programmers of E left IBM in 1988 to publish SlickEdit but that software package is based on many of the ideas found in E but has a less flexible engine than the 32-bit version of EPM in many respects.

Versions

 * 5.50 - included with OS/2 Version 2.0
 * 5.51 - included with OS/2 2.1, OS/2 Warp
 * 5.51a (Aug 1993) - update, last 16 bit version
 * 6.03a
 * 6.03b (Jun 1996) - also included with OS/2 Warp 4 and later releases


 * Prerequisites
 * OS/2 2.0 or later for version 6.0x, a number of add ons may require OS/2 version 3 or higher.
 * OS/2 1.3 or higher for 5.xx (16 bit) versions. Some add on packages may require OS/2 version 2 or even version 3.

Add-ons
Macros
 * CustEPM
 * EPM Gismo/kHTepm macro launcher - Utility and toolbar to launch Gismo, Netscape and kenHTepm
 * EPMTeX
 * KenMMepm - Allows you to quickly select and launch a multimedia or URL file from a text.
 * KenHTepm - HTML editing macro
 * MLEPM
 * Netlabs EPM Distribution

Syntax colouring
 * List of available EPM syntax highlighting files

Dictionaries
 * List of available EPM dictionary files

Text editors with EPM Emulation

 * BOXER - EPM keyboard mappings - OS/2 & DOS version discontinued, Win32 version still available
 * LPEX - keyboard mapping
 * Preditor/2 - EPM keyboard mappings + some window layout emulation and more

Publications

 * Tutorials
 * Jörg Schwieder: Customizing the Enhanced Editor
 * Paul Floyd: Adding syntax highlighting to EPM


 * Hints & tips
 * Alex Taylor: EPM Syntax Highlighting
 * Brian Proffit: Making EPM the default editor in OS/2 - From PC Magazine 1996


 * Reviews and overviews
 * Paul Floyd: A Look at EPM 6.0x

Language Support
and more Note version 6.0x may not be available in all the above languages, also note that IBM only supplied a limited set of dictionaries for the Enhanced Editor 6.0x which in turn is not compatible with dictionaries for 16 versions of EPM (5.51 and older), officially only the US English versions were made available although some local offices did supply alternatives. However IBM internally used standardised format for spell checking libraries so you can use other spell checking libraries from that era with the package, including those that came with IBM Works.
 * UK English
 * US English
 * German (de_de)
 * French
 * Russian
 * Spanish
 * Brazilian Portuguese
 * Dutch
 * Danish
 * Swedish
 * Japanese
 * Simplified Chinese
 * Older 16 bit OS/2 releases also contained support for
 * Icelandic

Syntax assist and highlighting
Standard EPM includes "syntax assist", which consists of syntax highlighting, semi-automatic formatting and automatic code summary generation. EPM has support for the E macro language used by itself in addition to C, Modula-2, Pascal and REXX. On top of that third party packages are available that add support for C++ and Oberon (See here) although the support may not be as.

Syntax highlighting is known in EPM terminology as "Syntax Colouring" and unusually enough the editor only handles that on a line by line basis rather than page by page or file by file. Included are colouring files for C, C++, FORTRAN 90, HTML, IBM Bookmaster, IPF, Java (outdated, based on the C filter), Makefiles, Resource files (RC), REXX, Perl and TeX.

Some of the syntax colouring filters have additional features, the C highlighting filter for instance contains support for most of the OS/2 2.1 API.

Links

 * IBM's official EPM 6.03b repository
 * Hobbes EPM directory - Has lots of add-ons and scripts.
 * Jörg Tiemann's EPM page - Contains lots of info and tips

License and availability

 * Commercial software, development stopped but is shipped with all versions of OS/2 2.0 and later. It was internal use only software for OS/2 1.x.

Authors and publisher

 * J. Clark Maurer
 * IBM