Visual SlickEdit: A Commercial Editor for Programmers
SlickEdit is very customizable, rivaling Emacs and XEmacs in the scope and variety of ways the editor can be molded to a user's preferences. The main difference between the Emacs and the SlickEdit approaches is in the user interfaces. SlickEdit makes extensive use of dialog boxes, windows which allow a user to type in preferences or define macros and keybindings. The Emacs approach tends towards editing the various init files, such as ~/.emacs or ~/.xemacs-options, adding entries which load various packages, functions and keybindings. If it weren't for the large corpus of Emacs packages available, most provided with explicit instructions for installation and usage, the SlickEdit method would have a definite edge.
Open a source code file in SlickEdit and (with the default set-up) a variety of windows will appear along with the expected basic view of the file. A narrow vertical project window contains links to every procedure or class (in a C++ or Java file) and clicking on one will scroll the editing window to the corresponding location in the file. This window can also display a list of source files in a project; a file can be loaded into the editing window, then the project window can be toggled so that it will display all procedures or classes in the file. In effect this updated and graphical approach to the “tags” file functionality is familiar to Emacs and vi users. Another available window will display the output of child processes such as compilation.
In keeping with SlickEdit's tendency towards maximum configurability, all of these child windows can be easily customized or disabled via a menu-accessed dialog box. Entirely new toolbars and subwindows can be created and saved within this dialog box, and the visibility of any of the child windows or toolbars can be toggled to suit the user's current needs. These toolbars can be either free-floating or “docked” to a specified edge of the main window (see Figure 2).
The drawback I've found with customization of SlickEdit is that there aren't as many configuration packages available, so even though you have nice graphical windows in which to enter your information, in most cases you have to start from scratch. As an example, if you want to have a useful set of hot-keys for the various HTML tags, in Emacs you have a choice of several key-binding packages, such as HTML-Helper-Mode or HM-HTML-Menus. SlickEdit doesn't come with such bindings, so you have to set them up yourself. Version 3.0 does have a useful new feature for HTML-editing: the spell-checker is aware of HTML tags and will ignore them.
The editor can easily be set up to use any of several keyboard emulation packages, such as Emacs, VI or Brief. The default is SlickEdit's own CUA/Windows keymapping. Of course, any and all keys can be remapped to the user's preference. Keyboard macros are easily and conveniently set up via a dialog box and can be saved for subsequent reuse. A macro is automatically translated into the Slick-C language and compiled when it is saved, speeding its subsequent execution.
One of the most impressive features of this editor is the dialog box editing and creation facility (see Figures 3 and 4). The interface is reminiscent of Visual Basic and allows any of the existing dialog boxes to be changed to suit your preferences. On first exposure, it seemed that this was customization carried to an extreme. Is it really necessary to be able to shift a button or menu in a dialog box to another location in the box or change its font and color? After further experimentation the real value of this feature becomes apparent. The dialog boxes are written in the Slick-C language, and the dialog editor is in effect a visual development environment for the language, specialized for dialog-box creation. Any of the supplied dialogs can easily be edited into an interface for any editing function a user might desire.
This feature could be a time-saver in a development firm employing many programmers; dialog-boxes could be created specifically for the local language and type of project, then propagated to the individual developers' machines.
Any of these same Slick-C commands could be typed in the command-line entry field at the bottom of the editor window, which illustrates the hybrid nature of this editor. The concept of performing tasks via the mouse and dialogs is reminiscent of the Windows and Macintosh interfaces, both of which evolved as alternatives to the spare command-line environment of Unix or DOS. SlickEdit has a foot in each of these worlds, allowing a user either to intermingle the two approaches or ignore one while using the other.