Vishesh Handa's personal website

Emacs : A summary

I know I’ve been posting a lot of Emacs centric posts lately, but this is the last one. For now. I had always found Emacs to be this invigorating, powerful hacker tool, which one mastered would make me a billion times more efficient. And despite everything, I still think that way, but its just not for me.

My Emacs journey was rocky. That’s the best way to describe it. Initially I was irritated by the key bindings, then I gradually came to accept them, then I started to love them, and now I hate other applications for not having them. Even though it’s been a couple of weeks since I used Emacs. I still find myself reflexively typing C-a or C-e to get to start/end of a line. Damn useful!

I have a kind of love/hate relationship with Emacs. I love its key bindings. I hate its need for configurability. Most people are shudder when they read this. People usually say configurability is the best thing about Emacs. You can make it exactly how you want it to be. You don’t like the key-bindings, change them! You hate the interface, make it the way you want it, but at what cost? The cost is the need to learn a new programming language, and it’s not that much of a big deal, when you already know a couple of languages. Emacs Lisp isn’t that hard. I learnt the basics of it in a couple of days, but that’s not the point. The point is – You shouldn’t have to, to get simple things to work. I don’t want to have to spend a couple of hours/days/weeks configuring it to work. If I want to, yes, I should be able to, but I shouldn’t have to.

I dislike the fact that I have to configure everything. Why can’t normal things be configured by default, and then additional tweaking be allowed? Simple things like line-numbering, code completion aren’t enabled by default. And getting code completion to work, is a major pain in the ass. I posted previously a couple of simple things, that I had to spend a considerable amount of time configuring. That’s a minor indicator of the amount of tweaking required. The plus point is that once I have code completion working, I can tweak it to display the completions exactly how I like it. Do I want it to display to return type? Or maybe I want it to show only the parameter names, not types. This all can be done relatively easily, once you understand how exactly Emacs works, and you understand the obscene amount of parenthesis. (Emacs Lisp)

These days, I’ve been using Qt Creator. It has an excellent Qt help section, great debugging, nice auto-completion, and even has an integrated designer. Can I configure it to suit my specific needs? Probably not. But I can live with the default configurations. The case with Emacs is the exact opposite.

It’s a kind of short term/long term gain scenario. With usual editors, the investment period is relatively low, and so are the returns. With Emacs the investment period is gigantic, but the rewards are, apparently, monumental.

For now, I’ve stopped using Emacs for C++. For the kind of stuff I’m doing there are a lot better pain-free tools available, but I feel sad that the time I spent configuring Emacs has more or less gone waste. If I’ve learned anything from this experience, it would be this - Always include good defaults, and cater to those advanced users, who would like things to be their way.