I work in emacs mostly, but have given IDEA (and its varients like PyCharm) a fair shot on several occasions. I keep coming back to emacs. Why, well, in no particular order:
- extensibility, if I don't like something in emacs I can always change it, less so in IDEA.
- IDEA has problems with key shortcuts on the dvorak (and other non-querty) keyboard layout, and the devs have no intention of fixing them.
- plugins. In my experience, language-specific plugins in IDEA tend to either suck or not work so well. Emacs, by comparison has support for damn-near any language, and many of those packages include tasty features which make working in each language a joy. (see the various lisp modes, ensime, and so forth)
- speed, IDEA is slow, too slow.
- IDEA is too "mouse driven" for my liking. In emacs, absolutely everything can be controlled via keyboard shortcuts, less so with IDEA.
- emacs runs in a terminal as well as a gui.
- emacs has awesome productivity boosting packages like helm, god-mode, projectile and org-mode, which don't have equivalents in IDEA.
- With emacs I can mold the tool to fit my hand. When I use IDEA, it feels the opposite, like I'm having to change my hand to fit the tool and its way of doing things.
- ultimately, I don't think an IDE actually brings much to the table. I don't get any value from having the project build tied to a green triangle graphic, and I generally find the usual IDE workflow to be slow and clumsy. Emacs works perfectly, it does exactly what I ask of it and then gets out of the way.
It seems that you've aren't aware of many useful IntelliJ features.
extensibility, if I don't like something in emacs I can always change it, less so in IDEA.
IntelliJ has extensive plugin API.
IDEA has problems with key shortcuts on the dvorak (and other non-querty) keyboard layout, and the devs have no intention of fixing them.
You can tune keymap for you. For example, I don't use default shortcuts.
plugins. In my experience, language-specific plugins in IDEA tend to either suck or not work so well. Emacs, by comparison has support for damn-near any language, and many of those packages include tasty features which make working in each language a joy. (see the various lisp modes, ensime, and so forth)
In my experience, emacs works well only with basic language support. If you want something more advanced, for example, completion, error checking, you have much worse experience. In case of rarely used languages, for example, Idris, Agda, etc, they often just don't work.
speed, IDEA is slow, too slow.
If you don't need smart features, you can turn them off, and IntelliJ will be at least as fast as emacs (google power save mode).
IDEA is too "mouse driven" for my liking. In emacs, absolutely everything can be controlled via keyboard shortcuts, less so with IDEA.
It's definitely not mouse driven. AFAIK, everything can be done via keyboard.
ultimately, I don't think an IDE actually brings much to the table. I don't get any value from having the project build tied to a green triangle graphic, and I generally find the usual IDE workflow to be slow and clumsy. Emacs works perfectly, it does exactly what I ask of it and then gets out of the way.
I look at IntelliJ not as IDE but as a code navigation/refactoring tool. I can work in emacs if I have about 10s of KLOC, but after this, I need an effective tool to navigate code.
Really? My experience is that emacs had the only support for rarely used languages.
In my experience, everything except syntax highlighting often doesn't work. But, anyway these are esoteric languages.
What about selecting the android device to run an application on when you have multiple devices connected?
I don't use android, but you can create several run configurations, one for each device, and run them via shortcut. My configuration works like this: I set Ctrl+R to show popup menu with available options, then I type the name of the configuration and press enter.
Side note: Esoteric languages aren't usually languages that follow the dictionary definition of esoteric. That is to say, being uncommonly used doesn't make something an "esoteric language". The term is usually reserved for intentionally strange languages like Brainfuck, Whitespace, Shakespeare, etc.
Idris and Agda are serious languages built to do really amazing things. They're both still pretty young, but have incredible potential.
Comments
I work in emacs mostly, but have given IDEA (and its varients like PyCharm) a fair shot on several occasions. I keep coming back to emacs. Why, well, in no particular order:
- extensibility, if I don't like something in emacs I can always change it, less so in IDEA.
- IDEA has problems with key shortcuts on the dvorak (and other non-querty) keyboard layout, and the devs have no intention of fixing them.
- plugins. In my experience, language-specific plugins in IDEA tend to either suck or not work so well. Emacs, by comparison has support for damn-near any language, and many of those packages include tasty features which make working in each language a joy. (see the various lisp modes, ensime, and so forth)
- speed, IDEA is slow, too slow.
- IDEA is too "mouse driven" for my liking. In emacs, absolutely everything can be controlled via keyboard shortcuts, less so with IDEA.
- emacs runs in a terminal as well as a gui.
- emacs has awesome productivity boosting packages like helm, god-mode, projectile and org-mode, which don't have equivalents in IDEA.
- With emacs I can mold the tool to fit my hand. When I use IDEA, it feels the opposite, like I'm having to change my hand to fit the tool and its way of doing things.
- ultimately, I don't think an IDE actually brings much to the table. I don't get any value from having the project build tied to a green triangle graphic, and I generally find the usual IDE workflow to be slow and clumsy. Emacs works perfectly, it does exactly what I ask of it and then gets out of the way.
It seems that you've aren't aware of many useful IntelliJ features.
IntelliJ has extensive plugin API.
You can tune keymap for you. For example, I don't use default shortcuts.
In my experience, emacs works well only with basic language support. If you want something more advanced, for example, completion, error checking, you have much worse experience. In case of rarely used languages, for example, Idris, Agda, etc, they often just don't work.
If you don't need smart features, you can turn them off, and IntelliJ will be at least as fast as emacs (google power save mode).
It's definitely not mouse driven. AFAIK, everything can be done via keyboard.
I look at IntelliJ not as IDE but as a code navigation/refactoring tool. I can work in emacs if I have about 10s of KLOC, but after this, I need an effective tool to navigate code.
Does company-mode completion not work for you?
Really? My experience is that emacs had the only support for rarely used languages.
What about selecting the android device to run an application on when you have multiple devices connected?
What do you mean by this?
In my experience, everything except syntax highlighting often doesn't work. But, anyway these are esoteric languages.
I don't use android, but you can create several run configurations, one for each device, and run them via shortcut. My configuration works like this: I set Ctrl+R to show popup menu with available options, then I type the name of the configuration and press enter.
Another action you probably aren't aware of is Navigate to action. It works in a way similar to M-x in emacs. See more here: https://www.jetbrains.com/idea/help/navigating-to-action.htm...
Side note: Esoteric languages aren't usually languages that follow the dictionary definition of esoteric. That is to say, being uncommonly used doesn't make something an "esoteric language". The term is usually reserved for intentionally strange languages like Brainfuck, Whitespace, Shakespeare, etc.
Idris and Agda are serious languages built to do really amazing things. They're both still pretty young, but have incredible potential.