So here it is, the first test result in my quest for the best text editor. I started with UltraEdit because I had recently downloaded the trial version of it, and because the web site makes full-bodied promises about it: UltraEdit the #1 selling, most powerful, value priced text editor available! The ideal text, HEX, HTML, PHP, Java, Perl, Javascript, and programmer’s editor!

ultraedit32.png

UltraEdit-32 is a commercial product by IDM Computer Solutions, Inc. and has its homepage at http://www.ultraedit.com. The version I tested was v11.10a (5/10/05) with a hotfix dated 07/07/05 installed.

First impression

The first impression I got was that the installer didn’t work correctly. The download I got was a zip file and I ran the setup from there directly, which apparently didn’t extract two additional files correctly. During installation, I also elected to install a German dictionary in addition to the standard English one, and the setup program wasn’t able to deal with that. A dialog told me that a file would have to be downloaded from somewhere, but this didn’t seem to work. After a while, the dialog switched to another file, and back again after another while. I recognized that one of the files was the standard English dictionary that was really in the zip file — I killed the setup process, extracted the two files alongside the setup executable, went without the German dictionary and finally the setup was able to complete its job.

General features

The program startup is fast enough. Although the evaluation period is a generous 45 days, a nag screen appears on program startup from day 1, which is not so nice because it hangs around in the way for a while. It’s actually possible to work with that dialog in the foreground, but I would have thought it should suffice to show that dialog when the evaluation period is nearing its end.

The document model is a mixture of MDI and a tabbed interface, the tabs are implemented in a docking window which can be closed. Anyhow, UltraEdit needs only to be started up once for any number of documents.

Regular expressions are supported, and the online help even lists a two variants, namely the “old UltraEdit syntax” and the “Unix-compatible” syntax. I was going for the Unix syntax and this proved to be a bit of a problem because I failed to see the sentence in the help file where it says that I have to switch UltraEdit to use that syntax in the Options dialog. After I finally found out about this I was able to search for the expression ([^s]+) ([^s]+) and replace by 2 1, although I didn’t find in the help that there was any support for regular expression replacements at all. So, at a glance, very good!

UltraEdit’s memory consumption is a peculiar thing. Right after startup it was at only 4.3 MB, which went up to 7.5 after my first use of the file select dialog. Then, after playing around with the regular expression tests, with three small files open, I noticed that memory was now up to 23.6MB. I’ll keep an eye on this while I continue the tests. (Update: During the course of the tests, memory usage went up to about 30MB, but no more than that, even with a lot more files loaded and the editor running for two days.)

The button to toggle line-wrapping is right there in the default toolbar. Toolbar configuration is very flexible, although the user interface for it is not very intuitive. A nicer configuration dialog, like Office has had since 1997 at least, would do no harm here.

The next not-so-nice thing is scrolling and redrawing. Scrolling is sluggish — I have my keyboard set to the highest possible repeat rate, but I can’t scroll very fast by holding down the cursor key. I tried timing things, and I came to about 20 lines a second, merely 2/3 of the keyboard repeat rate. UltraEdit takes close to 100% CPU while the down key is being held. Even worse is redrawing: the complete editor surface is being redrawn all the time while the window is being resized, or while the splitter of the “File tree view” is being dragged (which also results in a resize of the editor pane). This redraw seems to be very slow, so that I can more or less watch it happening, regardless of the screen I’m running the editor window on. Both redrawing and scrolling get much worse when the editor pane is actually covered with text (long lines from top to bottom), resulting in bad flickering when scrolling up or down. Although it wasn’t reliably reproducible, I saw a scrolling bug a few times when using Page up or down, where only part of the editor pane would be redrawn after the key press.

In general, navigating large files can be quite painful. I have a test XML file with all its content (3.5MB) on one line and it’s not really possible to comfortably work in this file. The single line is wrapped at what looks like 4096 characters, for no apparent reason, but even moving the cursor left or right within any line is painfully slow, while up and down is even slower than in the test with the “normal” file.

Hex editing is supported, together with searching and replacing values. Regular expressions even work with hex edit search, but they are restricted to the ASCII text — would be nice if they also worked for the hex representation. Why not search for DEAD....?

UltraEdit is a disk-based editor which doesn’t load edited files into memory completely (there’s an option to use memory buffers instead, which I haven’t tested extensively). Editing extremely large files without performance issues becomes possible this way. To approach the programmers have chosen is to make use of temporary files — for every file that’s opened in UltraEdit, a temporary file is created first. There are a few options to control this behaviour, but only to a certain extent. For example it doesn’t seem to be possible to automatically have memory buffers used for files up to a certain size… but maybe that’s just a weird idea of mine, wanting to reduce hard disk traffic.

The editor is completely usable with mouse or keyboard. All menus and toolbars are configurable, as are the keyboard shortcuts. Very good!

There are a few simple text formatting options, but nothing too fancy. All formatting takes place after text entry and has to be invoked manually. It’s possible to define the layout of a paragraph (left, right, center, fill), but apart from that only indented paragraphs and line wraps at specific columns are supported.

UltraEdit supports all the various line endings as well as Unicode in UTF-8 and UTF-16, with and without BOM. All these types can be converted from one to the other. In addition, there’s ASCII to EBCDIC conversion. For non-Unicode files, the codepage and even the locale can be switched. Great! UltraEdit can save its settings either in an INI file (stored in the proper path under Documents and Settings) or in the registry. In both cases, this should be transportable fairly easily.

System integration

UltraEdit does certainly look like a modern Windows application, but the UI could do with a workover in several places. For example, the Options dialog is enormously overloaded and the layout of many dialogs is inconsistent and unprofessional. Throughout the application, there are at least five different layout variants for standard buttons like Ok, Cancel or Help. Many dialogs should also simply be larger. Guys, read some UI guidelines!

Once again I can’t help but wonder how a program goes through eleven (11!) major versions without anybody bothering about the UI. It’s the business card of an application, the first and most immediately impressive part of an application that a user sees. With UltraEdit, at least the main window doesn’t have any archaic elements, but the dialogs… oh well.

The installer integrated an entry for UltraEdit in the Explorer context menu, and file type registration and configuration is available directly from the Options dialog.

My use of ClearType was a problem at first, because fonts weren’t anti-aliased at all. I changed the font to Consolas and the result was even more horrible. An option in the long list on the General page helped: “Setting this may improve display issues with ClearType fonts on Windows XP”. Yes, that’s the name of the option. Fine that it works, but I can’t help but wonder if these guys really know what they are doing. What funny development language/environment are they using that allowed them to break ClearType support in the first place?

Handling files in virtual directories (namespace extensions) and UNC paths was no problem for UltraEdit.

Syntax highlighting

The syntax highlighting supports C#, Perl, HTML and XML (from my list of wanted formats) out of the box. Support for languages can be extended, but the means to do it are quite… hm… ridiculous, really. UltraEdit has a so-called wordlist, which is a text file in which a list of at most 20 blocks of highlighting configurations is stored. To extend the system, you have to edit that file manually and restart UltraEdit afterwards. The blocks in the file are numbered, and it’s up to the user to make sure that there are no duplicate numbers. In a download area on the UltraEdit web server there’s a long list of add-on wordlist entries that need to be downloaded and manually fiddled into a wordlist file locally ss as long as there aren’t twenty entries already in that list (11 are used by the default installation). I was able to find a Delphi highlighting there, but I didn’t find any for diff or e-mail formats.

Extensibility

UltraEdit can be automated by its macro system, which also supports a recording function. The macro editor didn’t look particularly comfortable to me, it could probably benefit from a UI workover as much as any other part of the application. For example, it would be extremely helpful if there was some hinting system that would show information about the syntax and parameters of the various commands. The macro system itself looked quite capable and there are a few macros in the download area on the web site — together with the recording function that should be enough to get started. Although the program comes with a few functional modules that look like they might be extensions (a colour selector, HTML tidy, …), I couldn’t find any information on an extensibility API. It’s possible to configure external tools to call from the editor, but these don’t integrate with the editor in any way.

Networking

UltraEdit is able to access files on FTP servers (my god, the UI!) and it was able to open a file from a WebDAV location that was previously configured in My Network Places. It didn’t have any support for WebDAV of its own, though.

Support and community

There’s an active community forum for UltraEdit and a support e-mail address at support@idmcomp.com. I haven’t had reason to contact the support team, but I generally like the fact that they want to hear about bugs and feature requests in this direct way, because I haven’t had many good experiences with companies who supposedly handle their support solely via forums (apart from the fact that forums are far more difficult to use for me than my own mailer, you usually have to register first (yeah, yet another password!) and so on… but I digress).

Price

The price for a single, non-concurrent, user license is $39.95 at the current time, which seems a little on the high side, as shareware prices go. It’s nevertheless a reasonable price to ask, given the largely mature functionality that UltraEdit offers.

Other miscellaneous impressions

Why the *#**! can’t I resize the Options dialog? The options list on the General page is long and even too wide to fit without scrolling, yet I can’t resize the dialog.

Results in numbers

As announced, I assign points for each of my categories, from 1 (worst) to 100 (best). As this is the first in a sequence of tests, I won’t assign extremely high nor extremely low numbers right now, apart from places where the asked functionality is simply absent. So the real range is 20 to 80 for this first test.

General features System integration
Startup 80 Modern application/UI 50
Regex support 70 Explorer context menu 80
Quick access 70 ClearType/Fonts 60
Scrolling/redrawing 30 File access 70
Memory footprint 70 Syntax highlighting
Hex editing 70 File types 40
Large files 75 Extensibility 20
Keyboard support 80 File recognition 0
Text formatting 30 Package completeness 20
File formats 80 Extensibility
Preferences 70 Macros 60
Networking 60 External extensions 0
Support/community 70 Price 70
Sum: 1325 Average: 55