Feedback Search Top Backward Forward

A Programmer's Editor Shootout

The SemWare Editor

Written by Andrew Pitonyak

Rev-1 Rev-2 Rev-3 Rev-4 Rev-5 Rev-6 Rev-7 Rev-8 Rev-9 Rev-10 Rev-11 Rev-12


The SemWare Editor TSE Junior/2 V4.00e for OS/2
The SemWare Editor TSE Junior V4.00e for DOS
The SemWare Editor TSE Professional V2.5 for DOS
The SemWare Editor TSE Professional/32 V2.8 for Windows


TSE is part of a family of mature multi-platform text mode editors with features for both general text and programming. You will not fill your hard drive by installing all versions of this editor, but you will certainly add a lot of utility.

Packaging and Installation

The packages consist of shrink wrapped professionally bound manuals which contain a letter, price list, product literature, software registration, order form, offer for Compuserve, and floppy disks. The Junior versions come on a single 720K floppy. I was surprised that the 32 bit Windows version requires only one high density floppy while the DOS version requires two.

The Junior Versions

The install program is a DOS executable. I forgot to check this and I blindly typed a:\install from an OS/2 command prompt. I was momentarily confused as my system started up a DOS prompt before running the install program. I chose to install the software on my FAT partition so that it would be easy to access from all of the operating systems installed on my computer. It is refreshing to find a program that uses so few resources yet does so much.

Some of the features found in the Junior version of the software include:

  • Small memory and disk foot print
  • Fast
  • Highly customizable
  • Mouse support
  • Multifile editing
  • Multiple windows
  • Line lengths of 2032
  • Synchronized scrolling of files in multiple windows
  • 99 scratch buffers
  • Direct copying and pasting between the editor and the native OS clipboard (OS/2 and Windows)
  • Delete buffer for later recall
  • Multi file load using file specs and specifying multiple files, both from the command line and from file load
  • Can define tab settings based on file extension for up to six extensions.
  • Line drawing capability
  • Supports enhanced keyboards (101-key)
  • Supports 43-line, 28-line, and 50-line mode with suitable video boards
  • Built in configurable sorting
  • Incremental text searching
  • Shift blocks of text left or right
  • Configurable cursor (good for laptops)
  • Popup ASCII chart with character insertion
  • Visual directory tree from within the editor
  • Variable, smart, and fixed tabs are supported
  • Integrated spell checker
  • Configurable CUA style block marking
  • Multiple keyboard personalities (brief, Norton's Editor, pe2, Word Perfect, and Word Star)
  • AutoIndent mode
  • C mode (for those C and C++ programmers)
  • Configurable word wrap
  • Limited Backup capability (change extension to .bak)
  • Macro Record mode
  • Enter Matching mode to automatically insert matching (), [], {}, and
  • Word wrap and paragraph reformatting capabilities
  • Case changing capabilities flip, upper, and lower
  • Center text
  • Printing with margins, line spacing, and line numbers

The Documentation

The documentation is professional and well written. It is also very complete. One of the first things that I do with documentation is to check the index. Over all, the index was significantly above average. Having played a part in the creation and maintenance of documentation I can say that this is no easy task. Besides the very good index, the documentation is excellent as a whole and contains the following sections:

  • Installation instructions and requirements
  • General user's guide
  • Customizing the editor
  • Macro reference
  • Command reference
  • Alphabetical list of commands
  • List of commands by function
  • List of configurable keys
  • Upgrading from prior versions
  • Supplemental information about the DOS memory resident version
  • Supplemental information about the OS/2 version

For the record, not only is the documentation well written, but it is full of good information and worth reading. Otherwise you would not know about the Ctrl-] feature which loads the file whose name is under the cursor. This is an easy way to load an include file, for example.

Files and Buffers

TSE supports my favorite method of starting, I simply type "q adp*.?pp myconfig.hpp" and I am editing ten of my favorite files. The interesting thing is that I can also type this from within the editor and load the same files quickly. TSE can also be configured to show a pick list when wild cards are used. I found this generally more useful than the standard file completion schemes that I have seen in some other products. They both have their pros and cons, but I found that the more I used this feature, the more I liked it. If you know the name of the file, but not where it is located, press ESC to bring up the primary menu and then choose locate from the file menu. You can use this to search an entire drive for a file.

After you have opened all of your favorite files, you can easily move between the open files. You can move forward (Alt+n), backwards (Ctrl+kp), or choose from a list (ESC FT). If the file BitString.hpp is loaded in a buffer and you try to reload BitString.hpp again using (Alt+E), it will refocus the buffer rather than opening the file twice. This is based on the entire path to the file rather than the file name. This means that loading "ts\thrd.hpp" and "ts\bak\thrd.hpp" loads two files, but "ts\bak\thrd.hpp" and "ts\bak\..\bak\thrd.hpp" will simply focus the buffer containing "ts\bak\thrd.hpp".

Using TSE Junior

TSE has very good mouse support, but if you want to make full use of this support, you must configure the editor to display a full border around each window on the screen. This will include scroll bars with the border. In OS/2, pressing the RMB (right mouse button) causes an OS/2 menu to be displayed. This can be disabled by clicking in the upper left corner of the display and turning off "Mouse Actions". After doing this, only the TSE Jr. RMB menu will open rather than both. Double clicking will select a word and triple clicking will select a line of text. Double clicking on the left border of a window will split the window. You can resize a window by clicking and holding in the status line of a window. It is all very easy with the mouse.

Text searching does not support regular expressions but it does support features such as start of line, end of line, and whole words. An incremental search is also supported. This means that the search starts before I finishing typing the text. I first saw the incremental search while using emacs on the Honeywell Multics units. I was very happy to find this here. There is also the ability to search for a matching brace such as (), [], {}, or <>. Alt+= is used to search for the word currently under the cursor.

TSE, just like vi, supports named scratch buffers. If you frequently try to cut and paste more than one item at a time, this is what you want.

I do not have much to say about the spell checker. It worked and did a good job. This is helpful for me since I write these reviews using the editor in question.

General editing was not a problem. It is obvious that the people at SemWare put a lot of effort into making this editor fast and small. In general, it did what I want in the way which I expected. Every now and then, this was not the case which brings me to a discussion of the extensive configurability of TSE Jr.


The configuration options with this editor need to be seen to be believed. Time and date formats are configurable, as is the fill character used in the status line, not to mention the location of the status line. Color attributes can be set as can the cursor that is used. If you use a monochrome display or a portable, it is easy to configure the editor for easy use and viewing. I counted 15 different items which can be individually set for color attributes.

I am familiar with both the Wordstar and the brief command set. I set up TSE to use the brief commands and immediately noticed some differences. I was surprised that I press the '+' key on the keypad to copy text to the clipboard and 'insert' to insert the text, as in brief. After copying a line of text to the clipboard, brief would paste the line before the current line. TSE pasted after the line. Off to the configuration program and TSE now pastes lines before the current line. Creating your own keyboard configuration is easy, so if you are unhappy with the supplied configuration files, make your own.


The easiest type of macro to use with TSE is a Keyboard Macro. You start by entering the record macro mode (Alt+M by default, or choose it from the macro menu). The first thing that you do is to assign the macro to a particular key, so that you can record as many macros as you have keys that you can assign. After entering the keys that you desire, you exit macro recording mode using the same method. These macros can be written to a file and then read back later. Talk about easy!

Macros can be embedded into the keyboard configuration file so if you have some favorite macros you can place them there. The standard key Ctrl+] is defined as follows in the keyboard configuration file:

  ^]               AltWordSet MarkWord False done: Copy EditFile Paste
                       Return done: DefaultWordSet

Remember that this loads the file currently highlighted by the cursor. Macro examples are included to do things such as invoke an external compiler for the file currently being edited, directing the errors to a file that is then edited in a split window with the source code. Pretty slick if you ask me.

Some more advanced macro commands are available such as "Pause" which pauses execution for keyboard input. Commands can be easily repeated multiple times by following the command with a number. There are also the following execution flow and conditional commands: Jump, JTrue, JFalse, MacroQuit, MacroQuitFalse, and MacroQuitTrue. There a many commands used to set various modes, the most interesting of which is SetScreenOff to turn off screen updates so that things can run faster. There are many conditionals to test things such as isBegLine, isCurrChar, isCursorInBlock, isEmptyLine, isLastLine, isWord, to name a few of them. This is very powerful even if it does not support variables in macros. You can also write a macro which is executed every time the editor is loaded.

TSE stores macros in a binary format for quick loading and saving. QMac translates the binary format to a human readable text format and back again. You can create your initial macro using keyboard recording, then save the macro, translate it, edit it, and translate it back. This allows for quick and easy creation and editing of macros.

The Professional Version

The installation of the professional versions is a little bit more involved than the junior versions. This is because the installation program allows you to choose which keyboard personality you desire along with a few other things such as a few predefined macros.

The Junior version is impressive, so what does the professional version for DOS and Windows add?

  • Configurable color syntax highlighting
  • Context sensitive help
  • Ability to save and restore editing sessions (I really like this one)
  • Popup history window
  • Much more powerful macro language complete with variables
  • Far more macro commands available
  • Many macro examples
  • Macro language debugger
  • Ability to customize your own menus
  • Programmable mouse
  • Option to print selected pages
  • Ability to sum columns of numbers
  • Filename completion
  • Edit files in hex and/or binary mode
  • Configurable line end terminator for DOS/Unix/Mac compatibility
  • Built in filemanager
  • Execute commands on tagged files
  • Sort by filename, extension, size, date/time, or attributes
  • Word count based on file or selected block
  • Template editing
  • Mark a program function as a block
  • List all functions in the current file
  • Go to the next or previous function
  • Search and replace across all open files
  • Regular expressions while searching
  • List all occurrence of a string
  • Count occurrences of a string
  • Book marks
  • Integer calculator
  • File compare

Specific to the windows version

  • Virtual memory for much larger file editing
  • Long filenames and network paths
  • Longer line lengths (8176 characters)
  • Larger macros
  • Greater flexibility in resizing the screen
  • Access to DLLs

The Professional Version includes two manuals rather than one, a User's Guide and the Macro Reference. Both manuals are well written.

I had but one problem while using the editor, a conflict between the brief editor command set and the CUI macros that I loaded, so I sent a quick e-mail off to technical support. I received an updated macro and brief configuration files with complete instructions on how to fix the problem the next day. In the unlikely event that you do experience difficulties, it is nice to know that they have responsive technical support.

I spend a lot of time moving between unix boxes and DOS boxes and a common problem is related to the carriage return line feed differences between these environments. I chose to set the "Line termination" option to "as loaded". The problem then went away. If the file started with both carriage returns and line feeds, then it was saved as such. End of problem. My co-workers were impressed!

I was impressed by the macro language that comes with the junior version, but when I started looking at the pro version, I remembered the phrase "You ain't seen nothing yet!" There are functions for lower level file I/O, peeking and poking memory locations, and many other esoteric things. My primary complaint about the editor is that it does not remember what files are open and the cursor positions inside of the file. I am quite certain that I can write a macro that will save this information and then open it again on startup. I was going to do this, but first I decided to take a look at their web site and all of the provided macros. The list is very impressive. There are macros for dealing with large projects in multiple directories. I was amazed at these macros. There were simply too many macros doing too many things for me to look at all of them.

So why do backups annoy me in both the professional and the junior version? The file extension is changed to .bak, or some other configurable string, and it is placed in the same directory as the file. If I am editing both comp.hpp and comp.cpp then I have but one backup. I prefer to be able to choose where the backup will be saved and whether the extension is saved, changed, or extended (OS/2 or Windows).


I find very little lacking in the TSE Jr. editor that I can not either reconfigure or change with a macro, at least this is what I thought until I used the PRO version for DOS and Windows. After having spent a lot of time using all of these editors, if you use all of these operating systems, then I recommend that you get all three versions. It is nice to be able to use the same editor regardless of the operating system in use. There is a discount available for multiple versions.


SemWare Corporation
4343 Shallowford Road, Suite C3A
Marietta, GA 30062-5022

Sales: 800-467-3692
Phone: 770-641-9002
Fax: 770-640-6213

$99 TSE Jr. for OS/2 with standard DOS version
$99 TSE Jr. memory resident with standard DOS version
$59 TSE Jr. standard DOS version
$109 TSE Pro for DOS
$119 TSE Pro/32 for Windows 95/NT

Note that quantity discounts and multi-user licenses are available.