I spend somewhere between 97 and 99 percent of my programming time in Visual Studio. Hey, I write C# almost exclusively here. What do you expect? I tend to use Scite for any tiny editing that needs doing, like config files, or whatever.
I'm willing to admit that Visual Studio bites a big one. Almost all software does. It's fairly limited in flexibility, compared to other editors. But my dirty little secret is that I don't need it to be flexible. I use it to write, build, and debug C# code, and for those purposes, I don't know that I could ask for anything better. Part of that is the amount of time I've got behind it, but part of it is that it's pretty clear about the functionality it offers, and anything else you need is going to have to come from somewhere else. In other words, it does well the things it was designed to do, and is phenomenally bad at anything else.
The biggest thing that I see people laud about Emacs is the ability to extend the editor. Okay, that's cool in theory. If there's some reason why you can't do a thing, or can't do it without more work than you'd like to do, you can splice in the functionality you want without going through all of the agony that an editor like Visual Studio would require. I'm totally down with that concept.
I've tried Emacs in the past, and I've always been frustrated by its apparent inability to act sanely. I started teaching myself Python recently, and I decided last week that I was going to grit my teeth and only use Emacs for writing Python. I wasn't going to let myself break down and go back to use IDLE, Scite, or nano. I decided this after about two weeks of looking for a decent Python IDE that didn't leave me with the impression that it was half-built.
One of the major philosophical problems that I have with Emacs is that the ability to rewrite or extend every part of the editor makes brain surgery out of the process of modifying any part of the editor. It's like the difference between buying a couple of computer components and plugging them together, and being handed a fabrication plant, schematics, and a vast quantity of hazardous materials and told, "You can make this computer do anything you want!" The ability to change anything makes the entire interface unpredictable, and The Interface Is The Machine. I've heard Emacs described as "transparent", and I would point out that completely transparent objects cannot be seen.
A perfect example is python-mode, which I found and got running without slitting my wrists (despite having to find some inexplicable sequence of elisp to make Emacs actually use python-mode). I got it running, then started editing a file and noticed a few of the nice things it was doing for me, such as auto-indenting and keeping track of the current block in the minibuffer. Then I go to run my little pygame test app, and all seems to be fine. I close the pygame window, and a blank buffer immediately cuts my screen in half. Interfaces are a big deal to me, and trying to figure out what was happening (because it's useful in scenarios other than mine) and how I could fix it (I still haven't worked that out) has taken up most of my afternoon. I tried going hunting through python-mode.el, but I'm not familiar enough with the way Emacs does anything to be able to tell if the file is a major mode for editing Python or the poorly-punctuated diaries of Ted Bundy.
Steve Yegge is a very clearly in favor of Emacs, to say the least. He has more than one post extolling the virtues of Emacs, and providing tips on streamlining the normal Emacs workflow. One of the first tips he gives is to remap the M-x sequence, which is used about as often in the course of an Emacs editing session as the hand-washing stations at a colo-rectal clinic. In other words, it's one of the most important keystrokes in the entire program, and the first words out of his mouth are to rebind it. If the binding is so bad, why isn't it bound to something more friendly to begin with? Because there are people who have been using Emacs for decades that are completely habituated? Isn't the point of software to get better at doing something? Keeping a detrimental keybinding for the sake of backwards compatible muscle memory is analogous to a car manufacturer only making manual transmissions because older drivers can't drive without using both feet.
A lot of people love Emacs. I get it. I've heard the same reasons over and over. But hearing that someone has spent ten years getting Emacs customized to his liking makes me think that
- This person is insane.
- This person is a control freak on a level not encountered by psychological medicine.
- Customizing Emacs is akin to finding a warm place to sleep by tunneling down to the Earth's core.