This is a showcase review for our sponsors at CodeProject. These reviews are intended to provide you with information on products and services that we consider useful and of value to developers.
by Kevin Sikes
When I started my current job as a senior product developer, one of the first things my new co-workers asked as I met each of them was, "Have you installed Visual Assist X yet?" After the fourth or fifth developer hit me up, I figured they were all involved in a network marketing scheme and soon I too would be recruiting friends and family to Buy Software from Themselves to Achieve Financial Independence. Why else would everyone be so adamant about installing an IDE plug-in?
Read on to learn the real reason my co-workers virtually dragged me to our purchasing agent to get my very own license for Visual Assist X!
So Many Features; So Little Time
Visual Assist X is the flagship product of Whole Tomato Software. The software is an impressive toolbox of Intellisense upgrades, syntax highlighting, and other cool extensions to the Microsoft line of IDEs, from Visual C++ 6.0 through Visual Studio 2005. Visual Assist X supports C#, C++ and VB.NET.
If I reviewed every one of the 40 features in Visual Assist X, you'd be reading for an hour, so I'll just give you the goodies in this article.
Enhanced Syntax Coloring
To compare the look and feel of Visual Studio with and without Visual Assist X, consider this screen shot from Visual Studio .NET 2003:
Now look at the same snippet of code after installing Visual Assist X:
As you can tell from from the screen shots, Visual Assist X offers a more visually stimulating look at your code. Visual Assist X allows you to work more efficiently by distinguishing functions/methods (brown), variables (gray), and types (blue). Of particular interest to me is the ability to color macros (purple), which the IDE still can't do as of Visual Studio 2005.
You can even apply the syntax coloring to tooltips!
Since the authors of Visual Assist X understand different developers work in different ways, they make the syntax coloring highly customizable. You pick the colors that make sense to you, and choose what you want and don't want colored.
What's useful to one developer might simply be noise to another, so Visual Assist X allows you to enable only those features you find helpful. For instance, my code screen shots also show local symbols in bold and "stable symbols" in italics, but I prefer not to use these features and have not enabled them on my production machine.
This was the feature that got me hooked on Visual Assist X. Place the caret on a symbol and press Alt+G, or click the button. You are taken to the definition of the variable or type, or the prototype or implementation of the method. In the latter case, Visual Assist X gives you the choice of the header or implementation file.
This feature does not rely on the browser files generated by Visual Studio, so you don't have to compile your code first. Instead, Visual Assist X parses your code and library/SDK headers in the background. This process is throttled so it doesn't kill the IDE's performance.
Visual Assist X even knows the value of C/C++ macros and where they're defined, and will display the value in a tooltip and allow you to go to the definition of the macro. In my opinion, this alone was worth the price of the software!
Visual Assist X offers suggestions to complete partial symbol names as you type. This incredible feature allows you to concentrate on your development task rather than the drudgery of remembering hundreds of variable and method names. As you type, Visual Assist X matches your keystrokes against symbols that are currently in scope, and displays a list so you can accept a suggestion. The more characters you type, the more refined the suggestions become:
Enhanced Member Listboxes
Here's another feature you'll wonder how you lived without. After pressing "." or "->" following a class instance, Visual Assist X presents you with a powerful member listbox. You can configure Visual Assist X to display non-inherited methods in bold and to place them first in the list, giving you quick access to the class members that are most needed. Visual Assist X also allows you to filter the list on public, private, and protected methods, variables, operators, constants, and enums.
Shorthand and Acronyms
If you remember part of a method's name, you can utilize Shorthand to type as much as you know, and Visual Assist X
filters the list based on the partial text you've entered. In the following example, the list is reduced to all members containing "fill."
Acronyms save typing by matching your keystrokes to members that may have other characters interspersed. For instance, a variable named
nSomeVeryLongIntegerName may be accessed by typing the characters n-s-v-l-i-n one at a time until a match is found. In my example, I find the entry I want with "
Shorthand and Acronyms work with both suggestion lists and enhanced member listboxes.
Open File in Workspace (OFIW)
Another area where Visual Assist X is extremely helpful is when working with many source files, whether in a single project or distributed among multiple projects in a large solution. Although Visual Studio allows you to be organized by grouping your files together under logical folders in the Solution Explorer, this makes it hard to find a particular file when you don't know to which group it belongs.
With Visual Assist X, quickly locate a file residing under any project in your solution by opening the OFIW dialog and entering a portion of the file name. In my example, I've found all headers containing "util."
Find Symbol in Workspace (FSIW)
In the same vein as OFIW, the Find Symbol in Workspace dialog allows you to enter part of a symbol name, whether it be a variable, method, macro, or constant, and the list is populated with matching symbols defined anywhere within the solution. Double-click a row to be taken to that symbol definition.
I can't even begin to tell you how much more productive this is than Find in Files, and you can find symbols anywhere on your include path by clearing the "Show only symbols defined in current workspace" check box. For instance, uncheck the box and type SendMessage to find it in the Windows headers.
I could write a book about this feature alone. Basically, Autotext is a set of templates used to stamp out common code constructs. The templates may contain literal strings or placeholders that are replaced with predefined Visual Assist X variables, user input, environment variables, the current text selection, or clipboard contents. Consider this example, where the key shortcut is "
//-" and the code is "
// $end$ [$MONTH$/$DAY$/$YEAR$ %USERNAME%]":
You can guess what's going on here by the intuitive Autotext language.
Visual Assist X watches for keystrokes that match shortcuts you've set up, and offers you a suggestion list upon a match. If you accept the suggestion, the replaceable parameters are stuffed in, and the cursor is placed at the $end$ tag for further typing. You may also insert Autotext without keying in a shortcut combination.
Autotext may be used to spit out a few characters or to create an entire application framework. You're in control with the easy-to-use Autotext editor and plenty of sample templates.
Here are just a few of my other favorite features:
- Quickly switch between source and corresponding header files with a single keystroke or mouse click.
- Find previous or next by context. For instance, if you have a hundred methods in a file and each of them contains a local variable named
nCount, restrict your search for
nCount to the current method (or even within an
while loop). Visual Assist X ignores the instances of
nCount that do not belong to the current scope.
- Automatically convert
-> when you erroneously use the dot operator with a pointer.
- Automatically rePaIR CAse of mistyped symbols.
- Quickly get information for string resources. Look at this handy tooltip:
I'm upgrading to Visual Studio 2005, so I don't need Visual Assist X, right?
Wrong. Despite the welcome improvements to Intellisense in VS 2005, there are still features that only Visual Assist X brings to the table, such as better syntax coloring and improved member listboxes. Basically, Visual Assist X works in conjunction with features of VS 2005.
For instance, you can take advantage of VS 2005's new ability to parse conditionally compiled code while maintaining Visual Assist X enhanced listboxes. In the first example below, a macro that determines the presence of additional members in a class is defined. The VS 2005 Intellisense parser detects this macro and grays out the
In the second example, the macro has been commented out; VS 2005 has restored the source code, and Visual Assist X shows the additional members, with the ability to apply a filter in the listbox using the filtering toolbar. In both examples, enhanced syntax coloring is provided by Visual Assist X.
The ability to parse symbols for conditionally compiled code in VS 2005 comes at a cost, since the code is essentially being compiled constantly as you type. For many developers who work with large solutions, this has made VS 2005 unusable.
Some of these developers have disabled VS 2005 Intellisense altogether and employ Visual Assist X as their sole symbol parser to get back on their feet with VS 2005.
I promised I'd tell you why my co-workers insisted I get my own license for Visual Assist X. It's simple, really. They were loath to slog through a code review or type so much as an if statement on my machine without the advantages that Visual Assist X brings to Visual Studio. Yeah, it's that good.
Try Visual Assist X free for 30 days, and I guarantee you'll gladly pony up the modest purchase price for this excellent tool.
Whole Tomato Software, Inc. was founded in 1997 with a mission to improve developer productivity. We make progress on our goal by creating simple yet powerful improvements to existing development environments.
Since its founding, the company has improved every Microsoft IDE since Microsoft Visual C++ 5.0. In that early IDE, the company introduced features that form the foundation of what is now called IntelliSense.