For verbose languages, you can't beat auto-completion and auto-import.
For verbose languages, you can't beat auto-completion and auto-import.
And you can get both in vim, emacs, etc. The lines between those and full IDEs are blurry with the right (or wrong) amount of plugins.
It's clang-based, so suffers from none of the tags-type issues: it's context-sensitive, and can see straight through gnarly stuff such as identifiers generated by token pasting.
Good points:
- Only mildly fiddly to set up
- Code browsing works well
- Code completion works well when it works
- Cute gcc/g++/etc. wrapper trick means you don't have to change any build settings
Bad points:
- Making it work with code you haven't built yourself on your local system (e.g., 3rd party stuff that's not complete, code for another platform) is less straightforward
- Code completion sometimes doesn't work with certain files (and for no reason that I've ever been able to figure out)
- It's probably my own limitations but I found it extremely inconvenient to debug (internally it's surprisingly complicated: separate client and server, lots of lengthy command lines, client code writes elisp code to stdout and elisp in emacs eats it up, the actual completion popup is a separate package, etc.)
There are many other advantages like out of the box support for a lot of common use cases like refactoring, navigation, build tool support, reuse common shortcuts like Control-C Control-V for copy-paste etc.
I would definitely advice new engineers coming into languages like Java to pick up an IDE like Intellij instead of vim.
I like how you can use command keys to quickly toggle on and off the project file and current-file's-components browsers, leaving the "distraction free" * editor window for much of your work.
* yeah, there's a mode with this name that auto-wacks ALL the supplemental panels, AND the window frame. I don't usually go that far, but it does show that they "get it" as far as what many of us IDE resisters disliked.