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.
Introduction
By Colin Dearing
My introduction to Microsoft Visual Studio .NET was rather unpleasant. Having spent six years mastering VIM under UNIX, migrating to Visual Studio .NET was something of a culture shock.
My first complaint about my new IDE was the serious lack of syntax highlighting. Speaking as someone who tweaked the C syntax highlighting rules of VIM, and likes syntax highlighting in data files, the syntax highlighting in Visual Studio .NET was rather lacking, to put it mildly.
Working on the theory that IntelliSense would make up for poor syntax highlighting, I persevered with the new IDE. By the end of my ordeal, I concluded programming in Visual Studio .NET required far more typing than VIM, making my new IDE much less efficient.
I suppose I really missed the suggest a word feature from VIM. This feature allowed me to type two or three letters of any word already in my C file and get VIM to guess what word I was typing. I learned later you can get Visual Studio .NET to do something like this, but it never seemed as fast or seamless as it was in VIM.
So, being the stubborn person I am, (what do you expect? I am a programmer!) I edited all of my Windows code in VIM and compiled it in Visual Studio .NET.
Meeting Visual Assist X
Coding in VIM went on for about two months until I discovered Visual Assist X. The product wasn't that expensive and the feature list sounded interesting, so I decided to have a look.
A few minutes later, I had the software downloaded and installed. So far so good. No difficult questions during the install process. It just found Visual Studio .NET and did its thing without input from me.
All right, let's be brave and load my code into Visual Studio .NET. I waited a few minutes while Visual Assist X parsed the entire project -- over 1,200 cpp files in total! Not all mine; the other programmers had been working under Windows for a while already.
I opened my current cpp file. Suddenly the screen was full of colours! This was even better than VIM. Suddenly things were looking up.
To give you an idea of what I mean, here is the best I could do with Visual Studio .NET. Though colouring of operators helps slightly, the code still seems to run together:

In contrast, I can do considerably better with Visual Assist X. Not only does colour distinguish macros, methods and variables, I have told Visual Assist X to show local symbols in bold and stable symbols in italic. Both are options I use all the time. See the difference:

Hanging Out at the Navigation Bar
The next thing that caught my attention was that the navigation bar looked different. The Visual Studio .NET navigation bar was always helpful, if rather plain:

With Visual Assist X running, I get a lot more information, all nicely syntax highlighted as well:

In fact, Visual Assist X has replaced the normal Visual Studio .NET navigation bar with its own wizard bar which provides the same basic functionality, while displaying additional information and offering more functionality.
As you can see from the last image, the syntax highlighting in the wizard bar isn't quite perfect -- the characters and operators aren't highlighted. Still, being told at a glance which for
, while
or if
block of code I'm editing, and how these nest, can be a very useful thing.
True, for very small functions knowing the details of my context doesn't matter. Still, not all of my functions are three lines long. For more complex code, current context can be very helpful since it means I have one less variable to track.
What Are My Options?
All right, what options do I get? I love to fiddle with options and settings, and I hate programs that think they know how I am going to work.
It didn't take me long to find Convert dot to ->, Shrink member listboxes and Repair case.
There were loads of other options but these three really caught my attention. For one, I can't begin to quantify the time I've wasted compiling because I accidentally used dot when I really wanted ->
in my code.
Shrink member listboxes -- did they really mean what I hoped they meant? This was one of my biggest complaints about default IntelliSense. After I typed a couple of characters, I was still looking at a list full of items clearly irrelevant. This was definitely the first option to test.
So, let's add a string to some code. I want to know if Visual Assist X lives up to the promise of these options.

I read comments about this on the website, and now I am seeing it in action. It is suggest a word from VIM, in Visual Studio .NET! All I did was type the b
from buffer
, and Visual Assist X produced a list of suggestions, trying to second-guess what I want.
All right, let's see how good this is.

Cool! From experience I know both Tab and Enter will accept this suggestion, completing the word
buffer
for me.
What is so impressive about this feature is that it just happens, without any action on my part. Suddenly, I have the power of suggest a word from VIM, without any effort.
Intellisense Worth More Cents
So, what can Visual Assist X do for IntelliSense? First, let's loook at a familiar offering from Visual Studio .NET.

Again, but this time with Visual Assist X.

Not only does Visual Assist X shrink the list, as asked, it also adds far more informative comments. Hey! Syntax colouring in the tooltips as well!
Already Visual Assist X has addressed my two main complaints about Visual Studio .NET, yet the IDE is as responsive as ever on my 1.6 GHz AMD workstation. True, Visual Studio .NET simply stops responding several times a day, but it did that without Visual Assist X. (Sigh.) If Visual Assist X could just fix everything, then perhaps I would be prepared to admit that Visual Studio .NET is an acceptable replacement for VIM... Just kidding.
Living with Visual Assist X
It was the attention grabbing features of Visual Assist X that first drew my interest, specifically improved syntax highlighting and better IntelliSense.
After several months working full time in Visual Studio .NET, with the occasional session in VIM when I need to do something particularly complex, I have found that some of the minor features in Visual Assist X are really valuable to me.
Assigning Alt+O to switch between a .ccp
and matching .h
file is hardly worth mentioning, until you stop and think how many times you do this in the average day. Instead of retrieving my mouse from under a pile of paper and selecting the appropriate tab, I issue a single key combo and I am there.
What else?
Visual Assist X has the useful ability to spell check my comments and my variable names, and it even uses the familiar red squiggly lines to point them out.

While this is very useful for spell checking of comments, I hardly ever misspell my variable names these days. Visual Assist X isn't fixing my spelling, which would be a major achievement, it is simply that I use its suggest a word feature as much as possible, saving me from having to spell anything in the first place.
More Filtering than Water
Do you ever edit .cpp files with loads of functions? How about trying to find a certain file or class in a large project? In the same way that Visual Assist X shrinks member listboxes, I can filter a pulldown list of methods in the current file. I click an icon or press Alt+M and start with a list of all methods in my current file:

I type a few characters I recall from the name of a method and the list shrinks. Press Enter to jump.

There is another shrinking list for files in my workspace. Press Alt+Shift+O and this one appears. Type part of a filename and simply select the file you want to open:

Yet another list exists for all symbols in my workspace:

These lists don't look as impressive as spell checking or improved syntax highlighting, and I don't use them every day. However, when I need to find some rarely opened file or function, these lists makes my life a lot easier. Ultimately, this is what Visual Assist X is all about -- making it easier for me to do what I want, how I want. Visual Assist X is no silver bullet but it does contain a large number of well thought and useful tools. More importantly, it is seamlessly integrated into the IDE and easy to use. I could use find in files, or Windows find, or even grep to find a function but I don't. I use Visual Assist X because it is there, and it is easy.
The Catch
If you have read this far, you are probably asking, "What's the catch?" I know I would be.
Firstly, Visual Assist X has to parse your code, all of it, before it can help. It also has to parse any new variables you add to your code before it helps you with them. As a result it can take a couple of extra minutes in the morning before my IDE is ready to use. Not bad when you consider that Visual Assist X has just parsed the source code for our entire Windows product.
Secondly, Visual Assist X parses your current code whenever you stop typing, so that you won't notice any CPU hit from its activities. A very good solution, but this does mean you have stop now and then to give the product a chance to catch up with your latest changes. Or, if you are the impatient sort, you can tell Visual Assist X to reparse the current file immediately.
You don't get all of this for free, but the price is very minor when you consider how much time you spend just on failed compiles due to misspelled variables, and using dot rather than ->
in your code.
What about bugs in Visual Assist X? Surely any product this complex must have a few.
Visual Assist X is one of those rare programs where new builds emerge on a very regular basis. Combine that with excellent support available via a forum and if you are unlucky enough to discover a genuine bug in the product, you shouldn't have to wait to long for a fix.
If you hold views similar to the programmer who refuses to use VIM under UNIX because VIM has (gasp) syntax highlighting, then Visual Assist X is unlikely to offer anything you want. For the rest of us who don't mind a little help, I can honestly recommend you download a trial copy. After all, you can uninstall the product if you don't like it.
Cheers,
Colin Dearing
Software Engineer
United Kingdom