Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Channels ▼

Code Editors

Product Reviews: May 1998: Code Editors

If you develop in C++, Visual Basic, Java, HTML, and Perl--all on the same day--you should consider returning to a stand-alone programming editor.

In the beginning, operating systems were character-based. Compilers came with command-line interfaces, and editors were separate programs. When the world moved to GUIs, most compilers came with their own IDEs. Since these environments offered more advantages than the older, character-based editors, a lot of programmers started using them for their primary editing environment. And most of us were happy with the built-in editors, although some of us longed for the power of Brief or EMACS.

Today’s programmer, however, rarely uses only one language. He or she may need to use C++, Visual Basic, Java, HTML, and Perl—often all on the same day. Rather than attempt to master several development environments, many people are returning to the stand-alone programmers editor. The three editors I’m reviewing here—Premia’s Codewright 5.0, MicroEdge’s Visual SlickEdit 3.0, and American Cybernetics’ Multi-Edit for Windows 8.0—are rising to the task, working with most mainstream languages and providing features that no compiler environment can match.

When I first reviewed these editors (“Code Editors,” Product Review, Aug. 1995), I was looking for things like Brief emulation and compiler integration. They have all revved at least one major version since then, some even more, and have become much more sophisticated in the process. This time, I’ll be looking at them from a slightly different perspective and will take a hard look at language support and differencing.

Premia’s Codewright 5.0

Codewright’s interface was the first to include a panel on the side, letting you select files and avoid the standard File Open dialog. This interface proved so successful that other programs such as Allaire’s HomeSite and MicroEdge’s Visual SlickEdit also use it. Codewright also pioneered the concept of color coding source files, allowing a quick glance to show programming language keywords, strings, numbers, and comments.

While other editors include macro languages (some are rather complex), Codewright uses DLLs to provide extensibility. Much of Codewright’s magic is accomplished with these add-on DLLs, such as color-coding. Codewright uses DLLs with the assumption that users would rather use the language they know best than learn a new one. This concept worked well in the days when all Windows programs were written in C, but it doesn’t work quite as well for users of languages that cannot produce DLLs.

Codewright offers native support for C, C++, Pascal, HTML, and assembler. All other languages use extension DLLs. You can enable dBase/Clipper, Paradox PAL, COBOL, Visual Basic, and Java by loading additional DLLs, as well as further support for HTML that includes a split-window viewer. Codewright includes full source code for these DLLs, and you can either preload or load the DLLs only when needed. Other DLLs enable interactive toolbar editing, differencing, or turn Codewright into a DDE server so it can be controlled by other programs.

Codewright has all the features you’ve come to expect from a state-of-the-art editor, including unlimited Undo and Redo, autosave, hex mode, and a multiple document interface. It can emulate the command keys of CUA, Brief, Epsilon/EMACS, and vi editors, or you can design your own key map. Codewright includes the ability to mark columns of text and can also use drag and drop to move text around.

You can add a form of hyperlinks into your source code, which lets you call documents, diagrams, and to-do lists through an embedded button. Codewright can also integrate itself into a few compiler development environments. This feature only works with Borland’s C++ and Delphi, Microsoft’s Visual C++, and Watcom, leaving Visual Basic and Java users switching between Codewright and their language environment manually. In addition to the IDE integration, Codewright can interface with several version control systems. Support is included for PVCS, RCS, Source Integrity, and SourceSafe, as well as any system that uses Microsoft’s published version control interface. True to form, you can also create a DLL that will let you interface to any unsupported version control system.

The API Assistant helps you create accurate API calls and reduce the need to refer to help files by creating a dialog for each API call. The dialog contains the necessary text fields and check boxes for the required parameters—all you do is fill in the values and the API Assistant generates the correct API call text. The API Assistant supports the Windows API, MFC, the standard C library functions, and Codewright’s API.

Codewright supports several different types of class browsing. It can use the BISYNC files produced by Visual C++, but these are only available after you compile with that language. It can also create a tags database, but this mostly shows only routine names. However, the Outline/Symbols browser renders the other two superfluous by parsing your code in the background and generating a tree view of the functions and variables. Parsers are included for BASIC, C, C++, COBOL, HTML, Java, Pascal, and dBase.

Codewright has some odd limitations, however. For example, the line length, lines per buffer, and total file size are all the same number—approximately 536 million. Since there is the possibility of someone wanting to edit a file larger than 536MB, I’m not sure why this limit exists, especially since the standard C seek command allows files up to 2GB.

Codewright’s differencing stands out in one respect—printing the differences in color. However, you’ll have to change the default colors for added and deleted lines, as mine were set for yellow and white on black. When printing, Codewright doesn’t print the backgrounds, so some lines showed up as unreadable yellow and others (I assume) were printed in white.

Once I reset the colors so that added lines were in green and deleted lines in red, the printed differencing output became much more usable for code reviews. When you choose the side-by-side option, only the text differences are highlighted—not the entire line. You can show both the side-by-side and the inline differences at the same time in the main window, and you can also merge the changes in two branches of the same file. My main complaint about Codewright’s differencing is that, while it’s easy to use, the manual makes virtually no mention of it.

MicroEdge’s Visual SlickEdit 3.0

Visual SlickEdit is truly a cross-platform editor. In addition to a Windows version, you can also get GUI versions for OS/2 and several flavors of UNIX, as well as character-based versions for DOS and other operating systems. MicroEdge took an interesting approach with its editor—it wrote a language first, then used it to build most of the editor. You can use Slick-C to enhance the editor or modify the included source to change the editor’s behavior.

SlickEdit supports more languages than Codewright. Default languages include C, C++, Delphi, Java, HTML, Pascal, assembly, and Slick-C. However, to enable support for other languages, you only need to open a file with the correct extension, which makes them as easy to use as the default languages. The additional supported languages are AWK, Perl, Modula-2, dBase, COBOL, FORTRAN, REXX, and Ada. SlickEdit also offers support for languages embedded within other languages. The only instance of this I know of is JavaScript or VBScript embedded within HTML, but you could set other languages up to behave this way as well.

SlickEdit’s interface has taken a cue from Codewright’s sidebar—it now includes a tabbed panel on the left side that lets you load files, jump to routines, browse classes, or manage projects. If you prefer the older style of a multiple document interface, you can turn off the tabbed panel. While I might turn off the panel on a system with limited screen real estate, I didn’t need to on higher resolution displays.

Actually, the feature lists for both editors are quite similar. SlickEdit supports hex editing, drag and drop, autosave, multiple clipboards, and a multiple document interface. The API Apprentice is similar to Codewright’s API Assistant, but supports OS/2, Java, Motif, and Xlib in addition to the Windows API, MFC, and C library calls. Supported version control systems include PVCS, RCS, SCCS, TLIB, ClearCase, and SourceSafe.

Rest assured that SlickEdit has features that set it apart from the other editors. One is a C, C++, and Java code beautifier, which can make all your begin/end braces match one of several styles, standardize all indenting, or make all conditional expressions have the correct spacing. Another useful feature is Smart Paste, which intelligently indents pasted code to match the indent level of where it’s pasted.

SlickEdit’s differencing is versatile. You can view the two files side-by-side with synchronized scrolling, or you can view them merged together with color-coded added and deleted lines. If you print on a color printer, the lines are color-coded according to syntax, with added lines preceded by a plus sign and deleted lines preceded by a minus sign. It’s not the best use of color, but it’s usable in code reviews. SlickEdit also has a merge feature that starts with a baseline file, plus two files with changes that are merged into the base file. Individual changes get merged, while conflicting changes let you choose which file’s changes to use. All in all, SlickEdit’s differencing feature is similar to Codewright’s, except that the side-by-side view is shown in its own window rather than the main edit window.

American Cybernetics’ Multi-Edit for Windows 8.0

Multi-Edit offers support for the most languages of the products I’ve reviewed in this article. Its list of available languages includes the standard Ada, assembly, BASIC, batch, COBOL, dBase, Delphi, FORTRAN, HTML, Java, Modula-2, Pascal, Perl, REXX, JavaScript, SQL, VBScript, and some I’ve no experience with like Aspect, CIUL, CMAC (Multi-Edit’s macro language), DataFlex, and TCA. It also supports the most version control systems, including PAN/LCM, PVCS, RCS (several flavors), Source Integrity, Sourcerer’s Apprentice, SourceSafe, TLIB, and VERS.

Multi-Edit offers the most support for HTML but the view is a bit confusing. When you open an HTML file, several toolbars are added, allowing quick and easy access to HTML commands. Each command includes its own parameters dialog, letting you make sure you get all the command’s options filled in correctly. The HTML view was a little confusing until I found out how to turn off the “enhanced view,” at which point it looked more like a normal HTML editor. Since Multi-Edit offers full FTP support, it’s worth considering if one of your jobs involves maintaining your company’s web site.

Like Codewright, Multi-Edit offers the ability to become a drop-in replacement for Borland’s C++ and Delphi editors, but offers no support for the Visual C++ IDE. Other features it shares with Codewright and Visual SlickEdit include drag-and-drop editing, a multiple document interface, code completion using template expansion, hex editing, Undo and Redo (limited to 65,000 changes), brace matching, and its own clipboard with an entire session’s worth of cutting and copying. Multi-Edit does not offer a class browser but can collapse your code, showing you only the routine names. You can also expand individual routines for editing or viewing. The Multi-Edit macro language, a C derivative, did not seem as powerful as Slick-C but was definitely easier to use than trying to create a DLL would be in Codewright.

Multi-Edit’s file differencing is not as intuitive as Visual SlickEdit’s or Codewright’s, but is almost as powerful. You can set it up to work either inline or side-by-side, and the side-by-side view uses two multiple document interface windows to show the two files, with synchronized scrolling. What’s more, you can move the two windows around in the main window and still keep them synchronized—very useful when comparing files while needing other files visible. You can also show both side-by-side and inline views simultaneously, and prepare a detailed report showing just the differences between the two files. Multi-Edit, however, cannot merge two change branches back into a base file.

The only real problems I saw in Multi-Edit involved its help files. The HTML help file was not found when triggered from the HTML toolbars, and I got a “topic not found” error when triggering it from the main help file. Multi-Edit was the only editor that would not print in color, which would be a drawback if you own a color printer.

The Envelope, Please

Picking one editor proved to be even tougher than it was in 1995. All of them have a usable interface, offer support for a number of languages and editor emulations, and are stable. The feature sets are evenly matched as well, with Multi-Edit coming in on the sparse side but offering the best support for editing web pages. Both Visual SlickEdit and Codewright had better menu organization than Multi-Edit, and SlickEdit supported more languages out of the box than Codewright but less than Multi-Edit. If I had to choose one, I’d pick Visual SlickEdit for use at home, simply because it would be easier for me to extend, but Codewright would probably get the nod for work due to its color differencing printouts.

Dana Cline has been writing code in a variety of languages for more than 20 years and is still trying to find the elusive perfect set of tools. You can reach him through Software Development magazine.

Codewright 5.0

Premia Corp.

1075 N.W. Murray Blvd., Suite 268

Portland, Ore. 97229

Tel: (503) 641-6000

Fax: (503) 641-6001

Online: http://www.premia.com

Price: $269

Hardware and Software Requirements: 486 processor, 8MB RAM, 10MB disk space; Windows 3.1, Windows 95, Windows NT

Technical Support: Toll-free via phone, e-mail, fax, or CompuServe.

RATING: ****

The Rate Sheet


1. The color printouts of differencing are useful in code reviews.

2. It is extensible through custom DLLs.

3. The API Assistant removes the tedium of looking up API parameters.


1. It can only be extended through custom DLLs.

2. It doesn’t offer support for Perl or other alternative languages.

3. Some important features aren’t mentioned in the printed documentation.

Visual SlickEdit 3.0

MicroEdge Inc.

P.O. Box 988

Apex, N.C. 27502-0988

Tel: (919) 303-7400

Fax: (919) 303-8400

Online: http://www.slickedit.com

Price: $295

Hardware and Software Requirements: 486 processor, 16MB RAM, 13MB-20MB disk space; Windows 3.1, Windows 95, Windows NT

Technical Support: Free via e-mail, fax, phone, or CompuServe

RATING: ****

The Rate Sheet


1. It is easily extensible through Slick-C language.

2. It offers support for most useful languages.

3. Support for additional languages is easy to add.


1. It could offer better color differencing printout support.

2. Some features may be slower due to being written in Slick-C.

3. The side-by-side differencing shows changes by line only.

Multi-Edit for Windows 8.0

American Cybernetics Inc.

1830 W. University Dr., Suite 112

Tempe, Ariz. 85281-3248

Tel: (602) 968-1945

Fax: (602) 966-1654

Online: http://www.amcyber.com

Price: $99 for download-only special; otherwise $199

Hardware and Software Requirements: 486 processor, 1MB RAM, 10MB disk space; Windows 95, Windows NT

Technical Support: 90-days free via e-mail, fax, phone, or CompuServe

RATING: *** 1/2

The Rate Sheet


1. 1. Of the three products reviewed, it has the best support for HTML.

2. Of the three products reviewed, it supports the most languages.

3. There is built-in support for FTP.


1. The menus lack organization.

2. The Help files need better testing.

3. Color printing isn’t supported.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.