FTE Version 0.46b5

A Programmer's Editor Shootout

Written by Andy Pitonyak

Introduction
FTE is a program with versions for OS/2 PM, text mode OS/2, DOS, Windows, Linux, and X11. I have only looked at the OS/2 versions. FTE was first released in 1995 at version 0.09 and it is now up to version 0.46.

Packaging and Installation
The packaging consists of a single zip file. The copy I used contained both the text mode and the PM mode executable.

Although the package contains HTML documentation, uncompiled configuration files, and scripts, installing the software is as easy as copying the executables and the configuration files into the search path. One precompiled configuration file is included. A partial list of features follows:
 * PM and Text mode operation
 * Colour syntax highlighting
 * C mode indenting
 * Binary editing
 * Edit multiple files simultaneously
 * Undo and Redo
 * Cut and copy append to clipboard
 * Column, Line, and Stream Paste
 * Special line commands such as delete, join, duplicate
 * Line commands to change case and transform text
 * Ability to quickly insert a literal character
 * ASCII table
 * Block modes for columns, streams, and lines
 * User definable character translation
 * Indent / unindent
 * Detab / entab
 * Sort
 * Flexible searching with regular expressions
 * Search forward or backward for the word under the cursor
 * Paren matching
 * Tags
 * Bookmarks
 * Folds are supported
 * Automatic creation of tags based on regular expressions or functions
 * Compilation
 * Shortcut to Grep
 * Shell command
 * Execute external programs
 * Ability to move through errors
 * Quick listing of routines and then quick jumping to routines
 * Quick directory listing
 * Quick buffer listing
 * Multiple modes such as C, IPF, Make, Binary, Text, Plane, Email, HTML, IPF, ADA, REXX, FTE, Resource, DIFF, Merge, HPF, Perl, Pascal, Java, TeX, Bin

After starting the text and PM mode applications, I was struck by how similar the two were. The text mode version was missing the toolbar of course. The toolbar icons were clear and mostly self-explanatory, but I sure wish that the they had hints.

The keyboard mappings are not what I am used to, being a long time Brief and Wordstar user. There is built in support for the standard FTE keyboard mappings, Wordstar, the Norton classic editor, Brief, and a few more (I think that I saw vi). These configurations are not limited to keyboard commands but can also change menus. The configurability is incredibly impressive. There is even the ability for the editor to choose between CUA controls (Common User Interface where you can access the menu commands with Alt keys) and the brief mappings where the commands may interfere with the CUA controls. The DEL key deletes only a single character with the brief mapping. I needed to use Ctrl+DEL to delete a highlighted block.

The software supports not only colour highlighting, but matching braces are automatically colour highlighted. The automatic indenting is done using keyboard event mapping. For example, while I am in C mode and I press the { key, the following key event is used:

This causes the { to be inserted and when the enter key is pressed, the line is indented. The } key evokes the following key event:

Pressing the } key causes the } to be entered and to be outdented to match the opening {, which is highlighted. This flexibility should allow you to customize the indentation to match your preferences to some extent.

I had difficulty creating my own colour highlighting scheme for DOS batch files. The primary problem was lack of included documentation, not a lack of examples because there are many examples. I created the file [M_BAT.FTE m_bat.fte] and placed it in the config directory under the primary program directory. I then edited main.fte and added the line include 'm_bat.fte' after the line include 'm_rexx.fte' This includes the colour scheme for batch files. Please see the file [M_BAT.FTE m_bat.fte]. I chose to use the SIMPLE syntax highlighter as dictated by the line: SyntaxParser = 'SIMPLE'; A problem with the SIMPLE colorizer is that you need to indicate what causes state changes from one mode to another. This also makes FTE very powerful and configurable. Each mode is identified (such as string or normal mode) and what causes the colorizer to change from one mode to another. I never did figure out how to convince the colorizer to highlight the entire comment line in one colour but I believe this to be possible because it is done with C++.

After creating my own colour scheme, I simply recompiled the configuration file with the command: cfte.exe config\main.fte ftepm.cnf cfte Next time I ran ftepm, I had my new bat colour mode and behaviour when I edited a file with the bat extension.

If I want to edit a particular file, I can either choose file open and use the standard file dialogue, or I can choose to open the directory and use a directory browser in an entire window. I found I used this more than I would have expected. I did not have any need to edit a binary file while testing FTE, but this is supported. If I simply need to enter a particular character, I can choose to either insert a literal character (disable all command keys and insert the next typed character), or choose a character from a character table.

All of the standard block commands exist and a few extra as well. There are commands for copying based on lines, columns, or even a stream mode. If I do a line paste then the text is pasted as its own line. The stream mode will simply insert the text at the cursor. I can also paste text as columns of data. I have had times when I desired all of these different options so they are welcome. There are block commands to perform upper case, lower case, change case, ROT13, and a user defined translation of characters. These commands also exist as line oriented commands.

Searching is nicely done. You can search forward, backward, globally, a selected block, using regular expressions, and a few other ways which I did not explore. One thing that stood out was the ability to have all occurrences of particular words highlighted in red in the entire document while editing. Helpful if you simply want to page through the document looking at your pleasure. The ability to simply search forward and backward for the text under the cursor without specifically starting the find dialogue is also a nice touch.

Folding has been very conveniently implemented in FTE. I loaded a C++ source file and issued the command "Create Folds At Routines" and I immediately had folds at all of my routines. The command "Close All Folds" left me viewing all of my routines. It was then a simple matter to immediately move to and edit any particular routine. The folds are stored in the source file with a simple comment at the end of a line as in the following line: void usage /*fold00*/ This easy creation of folds means that I am more likely to use them. If I simply want to quickly move between routines in a file, I can simply open a routine window which will show me all of the routines in a particular file. I can then double click on the routine I want to see and I will immediately jump to it.

Access to your favourite compiler is supported by FTE. There is also a command to run GREP directly and send the output to a buffer. This was an easy way to integrate external file searching into the product.

Wrapup for FTE
My primary complaint with FTE is the lack of documentation. I found FTE to be very useful and full of features which I have not touched upon. I was impressed at the breadth of features that I have not seen anywhere else. This may be what it takes to get you hooked on a folding editor. Even if you have no interest in folds, this is only one of the commands hidden away waiting to be found.

Information
FTE is Copyright 1994-1998 by Marko Macek, and carries the GNU General Public License as published by the Free Software Foundation

Email: Marko.Macek@snet.fri.uni-lj.si or mark@hermes.si WWW: http://ixtas.fri.uni-lj.si/~markom/fte/