I haven&#x27;t had to java in a long time, but for C++ I find ymcd (based off vim&#x27;s YouCompleteMe) well worth a little effort to set up. Get the daemon at <a href="https:&#x2F;&#x2F;github.com&#x2F;Valloric&#x2F;ycmd" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;Valloric&#x2F;ycmd</a> and emacs package at <a href="https:&#x2F;&#x2F;github.com&#x2F;abingham&#x2F;emacs-ycmd" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;abingham&#x2F;emacs-ycmd</a> It gives &quot;intelligent&quot; completion and code navigation, just like you&#x27;d expect from IDE&#x27;s. For the per-project setup, I typically just copy-paste the config file from another project and perhaps tweak some include paths in it.<p>Apparantly ycmd can do C#, Rust, Go, JS etc. as well now. I like this way of putting such &quot;IDE features&quot; (meaning the programming language-specific features) into editor-agnostic deamons; that way good completion&#x2F;navigation is available to <i>all</i> editors. The same idea is behind eclim (as you mentioned) for Java and merlin for OCaml.