A couple of years ago, Drew Werner gave a nice talk to the New York Emacs Meetup group on An Intelligent Python IDE with Emacs, Projectile, and Jedi. I came across a reference to it today and watched the video of it. It's well worth the 47 and half minutes even if you're not a Python user.
Werner's idea is that you can take his basic method of setting up a Python IDE and use it to set up an IDE for any language. Indeed, the first two components are pretty much language independent. He first sets up Projectile to handle your workflow at the project level. Then he installs auto-complete to provide context sensitive completion. The problem is that auto-complete doesn't understand Python so its completion is rudimentary.
He solves that problem by adding EPC and Jedi, which provide Python language parsing and enable auto-complete to provide much better completions. Auto-complete has engines for other languages so with a little work you can build an IDE for many environments. See my post on Átila Neves' talk on setting up Emacs as a C++ IDE as an example.
If you're a Python user you should definitely watch the video. If you're not, you may still find the ideas that Werner talks about useful for enhancing your own workflow.