As an old fashion C/C++ programmer I have never relied on an IDE with code completion. I have since the early days of doing software development relied on Emacs as my default IDE. It provide the perfect set of elisp packages and code highlighting. Indentation of code is also done correctly and beautifully when you use smart-tabs-mode. Now finally I have decided to enable code completion in Emacs and it took a little bit of trial and error since many of the guides I found were either outdated or I couldn't find the right packages in MELPA. First step is to enable MELPA: Add the following to you .emacs (require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/")) (package-initialize) For code completion I finally managed to get Irony and company to play well together.