Scripting in UltraEdit is based upon JavaScript that has been extended with several properties and methods unique to UltraEdit / UEStudio. The scripting engine supports the core functionality of JavaScript 1.7. Further information on JavaScript may be found at the Mozilla developer site.
For information on the workflow of creating and adding scripts in UltraEdit / UEStudio, please see the Create and edit scripts topic. This topic is an exhaustive reference of the properties and methods that are unique and specific to UltraEdit / UEStudio and enable much of the scripting functionality within the editor.
Demo scripts are available in the UltraEdit / UEStudio installation directory in the "scripts" subdirectory. The UltraEdit site also contains several scripting tutorials as well as many user-submitted scripts.
Keep in mind that scripts are executed as soon as the inclusion is processed, and inclusions are processed prior to the active script. If an include is inserted into the middle of a script file, it will actually execute prior to the script in which it is included. When building complex scripts in a modular fashion from smaller scripts, the best practice is to create a master script file that calls the included scripts, i.e.:
The var_dump() function is a special feature to scripting in UltraEdit / UEStudio that works only with objects unique to UltraEdit / UEStudio. Running var_dump() on an object will output structured information about the object's members including type and value. Arrays and objects are explored recursively with values indented to show structure. Example:
For both UltraEdit and UEStudio, UltraEdit is the application object that contains all scripting operations unique to the editor. The following commands act on the editor itself rather than the active document. Unless other parameters are noted, all application object commands must be invoked using the following format:
For both UltraEdit and UEStudio, document[] is a JavaScript array object which is a child of the UltraEdit application object. document[] is an array containing all open files, and each item in the document[] array is a separate document object which can be acted upon via the properties and methods documented in the below table. You can access specific documents by index based on file tab order (e.g., document[0], ... document[8]).
For both UltraEdit and UEStudio, outputWindow is a JavaScript child object of the UltraEdit application object.Unless other parameters are noted, all output window object commands must be invoked using the following format:
Embarcadero's parent company, Idera, recently acquired UltraEdit which includes the company's namesake product, UltraEdit, a long-standing favorite text editor among many programmers, and some accompanying tools that have grown up around the main product, namely UltraCompare, UltraFTP, and UltraFinder. I decided to go through the feature set and compare this suite of tools with EditPad Pro the text editor I've used for several years from Just Great Software.
This review doesn't cover every feature of the two editors nor does it go into great depth as there are tutorials and videos on each of the respective sites. It also concentrates on just the task of editing files, mostly ignoring file comparison, FTP, and file-finding features of UltraEdit's companion tools. This review is the personal conclusion I came to based on my experience, interest, and needs--your view may be different. The bulk of my time is spent in the full-featured Delphi IDE; nevertheless, I do have need for a good-quality text editor in many circumstances and having several time-saving features built-in are well worth learning about and using.
First, I'll list the two products, their prices and licensing structure, and what machines I'm using them on, then go down through the list of features and compare as many as I can. At the end, I'll give a summary of the aspects of each that struck me as being unique or particularly positive for each editor.
UltraEdit has two different packages, or grouping of their products, and two different licensing models, perpetual or subscription. Perpetual is a one-time purchase with free updates for a year after which you can keep using the product without paying more for it--although you'll need to pay if you want further updates. Subscription is lower cost but the product stops working after a year if you let the subscription lapse.
EditPad is a Windows-only product and has FTP and comparison features built-in. It has a free version, EditPad Lite, with a limited feature set that is a fine choice as a Notepad replacement. EditPad Pro is only sold with a perpetual license that provides free minor updates for as long as they're made; after that, discounts for major upgrades are available.
I mainly work on a Windows 10 desktop computer but have several virtual machines running Windows 10 and one running Windows 8.1; I also use a Mac Mini and installed UltraEdit/UltraCompare on it. When I'm out of the office, I use a Windows 11 laptop. These machines have varying amounts of RAM from the smallest VM with 3 GB to my desktop machine with 32 GB; the amount of memory in the computers never affected the speed or operation of the applications.
One thing I've often heard as a selling point of UltraEdit is that it can edit huge files without any problem. So one of the first things I tried was opening a fairly large CSV file I have that is 2.4 GB. Both UltraEdit and EditPad opened the file instantaneously. Just to satisfy my curiosity, I tried opening the same file with a few other editors:
Both products have local help files installed. I found EditPad's to be a little more thorough when explaining features and how to use them; UltraEdit seemed quite terse in some instances but they have several tutorial videos that help a lot.
UltraEdit has tips and language-based IntelliTips that pop up in various contexts with helpful suggestions that could save time for an action you just took. These are sometimes based on editor actions, and sometimes based on the coding language you're working with in the editor itself. They can be turned off but are incredibly useful for the newbie who is trying to wrap his/her head around the plethora of features.
EditPad has a random tip-of-the-day that displays when you start it up but can be disabled. It also has a built-in forum tool that allows you to login, view, and participate in online EditPad forums all within an EditPad window--no need to switch to a web browser!
Both editors support multiple edit tabs that can be moved, shown above or below the edit area, and provide a right+click menu for additional operations including copy the file and path to clipboard, save as a different file, show in explorer, etc. UltraEdit's menu has more options including some shortcuts to menu items or changing how to manage more tabs than will fit in the window (e.g. multi-line or scrolling); you can also customize its right+click menu with any commands available in UltraEdit.
In EditPad, each tab's width fits the filename very tightly to allow the maximum visible tabs horizontally. Tab icons indicate the file type and correspond to the default application used to open that file if it wasn't being edited (e.g. your default browser for HTML files). The background color of the tab indicates whether the file is the active tab, is read-only, or has been modified (these colors can be configured in Preferences).
EditPad comes default with a light theme and the interface colors are fixed but there's a checkbox to enable the dark theme. That's all the customization you have for colorizing the menus and operation of the editor itself; however, color syntax highlighting for each file type is completely customizable and very advanced with a nice interface. For each file type (there are over 35 built in, including separate ones for Delphi .PAS and .DFM files, and more you can download or create), you select a color palette, whether it applies to a light or dark theme, and can see an example of highlighted code as you change colors.
UltraEdit comes with 13 themes built-in, 10 of them dark, all customizable; each theme allows coloring of all aspects of the interface and editor and defines the syntax color highlighting for all supported languages. There are 21 initially but many more (including Delphi .PAS/.DPR files) can be added. Once enabled, the color themes are configured in the Theme Manager where you select the theme and language, then select the named element you want to change, and click the colored rectangle to change it's color which is reflected immediately in the editor.
I've used Visual Studio Code at times for editing CSV (Comma-Separated Values) files because it has a nifty plugin that highlights each CSV column in a different color making it really easy to spot fields that will be parsed to the the same columns in files with variable-width values. In looking for the similar functionality in these editors, I found neither of them have support for syntax color highlighting of CSV files by default. However, you can download a couple for EditPad right from within the Configure File Types dialog; one supports line-wrapped strings, the other doesn't but is recommended for large files. I downloaded and installed it in EditPad but was surprised by the bright background colors applied which clashed with my dark mode. I temporarily switched dark mode off and could see how this color scheme would be quite helpful with a light background.
UltraEdit provides an XML Manager as a side-bar window to parse XML and list the nodes found, allowing you to double+click on one which jumps you to that spot in the XML. If the XML is poorly formatted or has no line breaks, you can click the button to format the XML into a beautifully indented list of nodes.
EditPad detects XML and if there are no line-breaks, prompts to add them for you and nicely indents it as well--nice! But if the XML file already has line breaks, it doesn't do the indenting and just displays the file as is--which is normally every line left-justified.
c80f0f1006