josh's WebLog

Visual C++ IDE from the trenches

good grief

i can't believe it's been over nine months since i've blogged anything. i guess i shouldn't be surprised, last time i blogged we had just finished work on beta 2 and now we're getting to that point for RTM ("release to manufacturing", otherwise known as the whole taco). i guess i shouldn't say "finished", but my part in it is pretty much wrapped up, so it's done to me.

lately i've been trying to use the VS text editor, mostly on C++ code and a little C#, and i have to say: could this thing be any more useless? i'll admit it now, i'm a vi user (vim, actually), and i find trying to use a non-vi editor extremely trying. but on top of that it seems to be missing the most basic functionality for a programmer's editor. intellisense, autocompletion, all that stuff is great, but what good is it when i can't do basic text editing chores without getting RSI?

i set about trying to write some VS macros to alleviate some of my pain. (of course writing VB code causes an entirely different kind of pain, and i'm not sure it's entirely worthwhile enduring it, but, well... time will tell anyway). some of the shortcomings of the editor that i wanted to 'fix' include:

1) no "go to next function"/"go to previous function" navigation
2) no functionality to quickly drop/goto "named" bookmarks (ala vi, brief, emacs, just about any decent programmers editor ever)
3) no "center display to cursor" function
4) no ability to cut/copy/paste to and from "named" buffers (again ala almost any decent editor ever created)
5) no functionality to go to the start or end of a function
6) 5) no functionality to go to the start or end of an #if/#ifdef block

these are operations i constantly perform while navigating through code, and the lack of them is painful to my productivity. perhaps if i could replicate them in the VS text editor then using said editor wouldn't be quite so painful...? that remains to be seen.

i wrote macros to cover these six "missing features", and found that the macro for #3 is actually not needed, as there is a command, "Edit.ScrollLineCenter" that does this, I just needed to map it to a key. in writing these macros I was unable to discover any programmatic access to the breakpoints collection or the clipboard "ring" that VS maintains. because of this I had to write the second and fourth items "from scratch" and they don't really work all that well. (the bookmarks aren't real VS bookmarks with icons etc, and after using my "paste from named buffer" macro undo/redo don't work exactly the way you'd want). c'est la vie.

i also found out that trying to figure out what keystrokes are already in use and map commands to new ones is a very frustrating and RSI-inducing experience. the dialog for doing these operations (tools->options->keyboard) is completely inadequate. it provides no way to see what keystrokes are used for what in one central list, no way to quickly unset a keystroke that is already in use and when you need to set a lot of keystrokes it just about kills you. (I had to set (26 * 5) + 7 keystrokes for my new macros and let me tell you, my wrists are killing me right now).

in all, the VS editor doesn't seem designed to actually draw customers. it seems more like it was written to be just "good enough" to pass muster. the idea being, I guess, that all the "cool" features and "integration" that VS provides would be enough to actually get people to use the product. the problem with this, from my perspective as a developer, is that the text editor itself is the most important aspect of the IDE. when actually writing code my productivity is largely gated on how efficiently I can use the text editor. now, i'm the first to admit that most of my job no longer consists of writing code (were that it wasn't so!), but nonetheless, expecting developers to use this sub-standard offering seems ludicrous.

but perhaps i'm overreacting? how do other developers find the VS text editor? am i alone in my assessment? opinions anyone?
Published Tuesday, September 20, 2005 4:11 PM by josh_

Comments

 

tlmii said:

I must admit, i don't think i would perform any of the tasks you mentioned in that list in my daily programming chores. I can't even think of a reason to do some of them (not saying there aren't any reasons - i'm sure you have good ones - just that i don't see the use in what i do).
very interesting to me to see the way other people use things.
September 20, 2005 11:16 PM
Anonymous comments are disabled

© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Microsoft
Page view tracker