The tools interface is how you add functionality to UNA. For example, in our project for working on UNA using UNA, we have tools setup for running files, compiling them, building the project, running automated tests, and launching a debugger. All the results appear inside UNA. For example, the tool that runs the automated tests (for a given file or directory) produces a nicely formatted and color-coded table showing which tests are passing and which are failing.
How does UNA's tools interface differ from the facility available in IDEs to run external programs?
Take a look at the interface for running external programs in most IDEs. It's usually a tiny little dialog that lets you specify the program and the arguments you pass to the program. That's the extent of your options. Output is usually shown in a separate window.
UNA lets you completely control the environment of the program and nicely integrate the program with UNA. For example, UNA lets you determine where the standard input comes from—the active file, user input, the current line, etc. Similarly, you can specify where the output goes: whether it's shown inside UNA (as text or HTML), shown as a tooltip, used to replace the current document, discarded altogether, etc.
You can limit tools to operating on certain file types. For example, in a Java application, a compile tool might be setup to work only on Java files. In this case, when you right click on a Java file, 'compile' is shown as an option, and of course, you can also select the compile option from the tool menu or activate it by a keystroke.
You can also use a wide range of jokers when configuring a tool, which range from the current line, to the active file, to the projectspace location, to something the user types in, and so on.
It's a hacker's paradise, because with very little effort, you can achieve great integration with existing programs. It's very much in the spirit of TextMate's bundles.
OK, so, how does UNA compare to other source code editors that are not part of IDEs?
There are lots of great source code editors out there, and at some time or another, I've used most of them: vi, Emacs, TextMate, jEdit, SlickEdit, e, EditPlus, SubEthaEdit, Nedit, and many others. All serious code editors have incredible power, but in most cases it's not accessible to the average developer. You need a cheat sheet for all the hidden functionality, and a year or more to gain proficiency in the editor, and its bundled, often proprietary, scripting language.
UNA takes a different approach:
- First, virtually all functionality in UNA is accessible from menus, similar to Nedit. This means you don't need to memorize commands if you don't want to, since you can do everything with the mouse. This makes for some large menus, but it exposes the full power of UNA to the greenest of users. The commands are still there, and with time, you'll subconsciously memorize the ones you use most often. With the consistency of our keystrokes, we actually cut down on the number of keystrokes you'd ever need to memorize: a full two-thirds of commands can be guessed by following the three rules (shift = expanded scope, alt = interactive, caps lock = opposite).
- Second, instead of focusing on a large number of marginally useful features, we've tried to focus on a smaller number of killer features. For example, programmers spend more time navigating code than actually writing code. And the killer feature here is in-place incremental search. You can use the feature to instantly jump to some text, with the theoretical minimum number of keystrokes. Not just text, but you can actually use the same feature to jump forward by a word (simply search for whitespace), a newline (search for enter), a brace—whatever. In fact, I would go so far as to say the in-place incremental search replaces 20 or more individual commands, which goes a long way toward reducing mental overload. It's such a simple concept that changes the way you get around in a document.
- Third, we have the highest attention to usability that I know of. I've already talked about this somewhat, but I'd like to given an example in the context of an editor. TextMate is a fantastic editor, and if you work on the Mac, you owe it to yourself to purchase a copy. Since it gets so many things right, I don't mind picking on it a bit. Many of the bundle commands show results in a separate window. This window pops up, on top of my work, and forces me to pay attention to it immediately, at the expense of whatever else I'm doing. Commit a file, for example, and some number of seconds later, I'm rudely interrupted with a dialog telling me I've just committed a file. I don't want to know that an operation I expect to succeed actually does succeed—tell me if it doesn't work, and only then, in an unobtrusive way. UNA's tools and operations run in the background, with results appearing down below in a defined area; they never steal you away from your work, force you to wait for them to complete, or transfer your input focus from one area to another. UNA is the only tool that can make you that promise.
- Finally, even in the current 1.0 release, UNA has quickly approached the power of some IDEs. For example, take version control. If you have a project setup with version control, then until you decide to update or commit, you won't even know you're working with a repository. Create files, delete them, rename them, drag and drop them in the project tree to move them around—UNA keeps track of what you do and does the appropriate thing when you commit. This is IDE territory here. As far as I know, there's no text editor with this kind of functionality. Add to that file structure and object hierarchy views, go to declaration, parameter hinting, symbol renaming, and so forth, and you're well beyond the range of most text editors. From the screenshots, most people actually think UNA is an IDE—and with the proper tools added, it can actually function as one.
Now UNA isn't designed for editing single files. That's a definite weakness. So it's not going to replace most people's favorite code editor. It hasn't replaced TextMate for me. But for actual projects, UNA provides a shorter learning curve, some killer features you won't find anywhere else, a silky smooth experience that puts you first, and features you ordinarily find only in IDEs.
|Save search queries for later.png||13.17 KB|
|Quickly navigate UNA without using a mouse.png||15.91 KB|
|Quickly navigate documents with incremental search.png||5.45 KB|
|Quickly locate symbols, files, declarations of symbols.png||15.17 KB|
|One search and replace interface - unlimited power.png||5.61 KB|