What about the VS editor do you find confusion and painful? Not counting project-related issues (e.g. knowing what project settings to twiddle and how to do so can be difficult to figure out).
Personally, the god-awful slow file switching, frequently-incorrect highlighting, almost totally worthless JavaScript, ASP, and ASP server-side code support, XML comments with no built-in documentation builder nor viewer, text-column editing that's a total joke, and the always-helpful "too many warnings" error are my most recent peeves.
I hate VS. With a passion. I cannot believe that such a painful-to-use program is held up as the pinnacle of programming experiences.
So why do I use it? Because .NET defies logic; framework-wide intellisense is the only way to do anything in it. Give me almost any other language/framework and in a few days I can get by almost entirely with a programming text editor and occasional official-documentation browsing. Several months into .NET code, I still Google more than I MSDN, StackOverflow more than .NET-developer-blog, and the massive style inconsistencies between different sections of the library mean I cannot go into any new area without Visual Studio to hold my hand and kick me in the nuts.
It sounds like your most of your complaints are with the .Net platform, library layout, and the compiler.
For what it's worth, I've always found Microsoft APIs to vary profoundly in terms of usability and (especially) documentation. And MSDN hasn't been directly useful to me since the VS 6.0 days.
Can you give me an example of an editor with better text column editing? I'm not entirely sure what you mean.
>It sounds like your most of your complaints are with the .Net platform, library layout, and the compiler.
Only about half-so. The first paragraph was all about VS exclusively, minus "too many warnings". But due to the issues in .NET, you essentially must use Visual Studio, which makes it at least bearable due to intellisense. But I crash VS fairly often, it eats up a half-gig or more of memory fairly often, it thrashes my hard drive to bits all the time so everything else crawls, and at one job the visual designer started executing code. Those database-filled combo boxes started querying the database right in the designer. This happened 3 or 4 times over a couple months, and could have been catastrophic if any of the times it happened occurred on deleting fields. I will never hook a database directly up to VS, I'll guarantee you that; this was executing our bound events. Imagine if we actually had direct connections to the DB.
So, one that's more specific to VS: the idiotic Web Site "projects" that have zero capabilities, and not even before / after build events to hot-wire your own in. And I dare you to try compiling documentation on a Web Site project. People have been asking for it and attempting to hot-wire their own for years, and they use gigabytes of memory to parse small projects and choke after an hour and give up without anything more helpful than "MSBuild.exe encountered an unexpected error". I suspect very much that the slowness of the only decent help builders is due to the horrendous reflection side of .NET, but that's not VS's fault. Except that VS wants VS-style documentation and won't accept anything else, but nobody can use it.
And, because it's particularly bad, I'll point to the JavaScript support again (2008. I hear 2010 is a bit better). It throws fits and doesn't always even index global functions you just declared (it's entirely broken on the site I'm working on, it simply refuses to parse anything not in assemblies), Intellisense tries to change "$()" to "$addEventHandler()" as you type, and it has the absolute worst indentation of any code editor in existence. None would be better, but it occasionally decides you're not neat enough and imposes "order" on your nicely readable function.
edit: Ooh! Another one! It's such fun to use VS in a multiple-monitor setup. Either you use the annoying "Multiple Document" layout (inner-windows that waste tons of space and fall behind things when the docked windows change), or you use tabs and can't spread to a second screen effectively. Or you launch two versions, and have them throw fits when you build in one, and the other sees things changing. And there is no higher joy than editing web.config while two instances of the same project are running, and watching the Visual Studio hit the fan.
--- </rant> I feel better. Thanks :)
Nearly any other programming editor, really. Notepad++ is a good example though, and doesn't require install, so I'd suggest experimenting with that.
In VS: hold alt and select a box of text. Note that you can't select less than a single space wide. You can copy, paste, and delete it. Now try hitting space, or typing something: the whole set is erased, and you start entering text at the top-left corner of what you had selected.
In nearly any other editor: hold alt and select a box. Note that you can select a column "0" wide. Copy, paste, and delete work as expected. But start typing; the vast majority I've used will fill the entire column as you type with what you're typing. Backspace removes line by line after the initial replacement. You edit the column, and everything you do is duplicated to the other lines you had the selection in.
It'd be especially useful for .NET as damn near every useful method returns void: want to populate a list with a few items? Select a few columns, type "list.Add(" and you're most of the way there. Plenty of times the refactoring tools (as good as they are in non-VB languages) don't work if you're not changing everything, and having a column editor would make things a lot faster. Besides, they have half a solution working; why did they stop at the nearly-useless step?
Another handy thing many programming text editors will do, but VS does not: soft-tabs go away with a back-space to the next tab-stop (if you start at one). In VS: keep hitting until you reach what might be another tab stop, there are no indicators for such things. Happy counting!
FWIW I'm the author of the Zeus programmer's editor and it can import VS solutions files and once imported you can build and compile all from inside the editor.
Zeus also does a limited amount of intellisensing, but naturally the intellisensing is nowhere near good as that found in VS. But the code navigation is not too back.
Zeus also has full MSDN integration and it can actually do context sensitive queries of the MSDN much faster than VS:
I'll be happy to give it a shot. I'm using a Web Site + solution for my current job though, know if it handles that? They're a bit weird. I'll certainly give it a try for more "normal" .NET coding, there's a lot of utility code to be written :)
Tried it a little bit, and I'll experiment more as I get time. Importing the solution which contained the web site only loaded the other "actual" project in the solution, unfortunately. I can poke at it a bit more and see if I can get more into it.
One of the first things I noticed: apparently a couple of your regexes are off in C#, for VS2008 at least. Typed interfaces come up as "T" instead of the interface, and it would be immensely more useful to have the class browser have information about the parameters of functions. I've got a ton of overloads, and they're note even in any useful order, as far as I can tell.
> Importing the solution which contained the web site only loaded the other "actual" project in the solution, unfortunately.
That is what I had feared. It looks like Zeus will need to be tweaked to understand this type of solution file.
> I can poke at it a bit more and see if I can get more into it.
One thing you could try is opening an explorer window and then just drag and drop one of your source code folders onto the Zeus workspace panel.
Zeus will parse the structure of the folder that was dropped and add all files that if finds to the project/workspace.
> One of the first things I noticed: apparently a couple of your regexes are off in C#, for VS2008 at least.
The use of a regexp to identify functions is a Zeus feature that dates back to one of the very early versions and is no longer the primary method of identifying functions.
What should have happened is for Zeus to create a tags database for all the files in the project/workspace and it then uses that tags information to display the function list.
But in this case since the solution was not imported correctly, the workspace is empty of files. As such Zeus reverted back to the older regep approach to identify the functions.
And as you suggest, the regexp that it used is almost certain to be out of date since, it was probably written even before the time of C#.
> it would be immensely more useful to have the class browser have information about the parameters of functions.
Adding the current file (or all the project files) to the workspace should result in a lot more information being seen in the class browser.
The class browser shows the contents of the tags database and if it is not full then it means the tagger is not understanding the code, but for C# that should not be the case.
That's all very interesting. I'm primarily a desktop C++ developer, so I don't run into the headaches of things like VS's database connectivity.
I recommend giving 2010 a go. If I recall correctly, 2010 was the version where they drastically reworked Intellisense. In previous versions, even my moderately-sized projects would break Intellisense upon reaching x lines of code. I don't think the multi-monitor support is any better, though. You can drag documents to their own window on any screen, but I can't seem to group them into sets of tabs.
I'd like to give 2010 a try, and I may at some point here, but everyone else is in 2008 and I'm not sure it'll translate entirely (code has to compile everywhere, and saying ASP is a second-class citizen is insulting to second-class citizens everywhere. I have zero faith it'll work the same way in both versions). I have heard a lot is better in 2010, but in general it's still a Microsoft product; huge, inconsistent, and so tightly bound into everything that they have no proper competition.
Oddly, Intellisense is generally keeping up with me, despite the site being at least a few hundred thousand lines of code (light on the abstraction, though, so it's mostly flat .NET code. Probably not too taxing on intellisense). There are times I just break out Notepad++ and finish up stuff VS was breaking, but it generally catches up any time I build the relevant projects.
And I should be clearer, because it's so weird: the designer-view was actually instantiating the entire window control, as it's init contained the database connecting code, and firing events on the combo box controls that queried the database. At no point was the database actually connected to VS, which you can do; and I'll never even consider trying it, after seeing that happen.
If the intellisense is the complaint, nothing beats the Visual Assist plugin. VS10's intellisense is better than what it used to be but still nowhere near VA.
Also, VS10's WPF-based UI is a nightmare, but that's another discussion...
Finally took a look at Visual Assist, as I've heard about it but never looked at it. That's very impressive. How much does it affect VS's speed on a fairly normal system?
I'd say 'It doesn't', which is objectively impossible but does represent my perception. In 7 or 8 years of using it, I have never found it to be a problem. This is with working on C++ projects with a total size (including third party libraries like boost) of around 400 megabytes of source code. The parsing of code happens behind the scenes; sometimes (when starting VS after a major update from source control or something) you see in the status bar 'Visual Assist: updating databases' or something like that, and sometimes the syntax highlighting takes a few seconds to kick in, but again I've never been annoyed or irritated with delays for which I had any reason to believe that they had anything to do with Visual Assist.
Of course Visual Studio still does its own parsing in the background, for example for the class browser. VA provides something similar, maybe I should use that one and see if there's a way to turn off the Visual Studio Intellisense. It is my subjective impression that this one does sometimes slow down the IDE itself.
My only complaints are the recent price hikes: 249$ -_- ? Those are getting above discretionary purchasing power and although I guess there is some effective productivity gain, it's very hard to quantify and therefore justify... Especially when other people don't want it, because then if you do want it, you look like a wuss who can't hold his own without having his hand held by pretty colors (simplifying of course but let's face it, this is what it looks like from the outside).