Can you elaborate on how you handle the project thing? I really miss having the concept of "solution" and "project" in Vim from VS. Not just to have my files grouped logically in a $Project/{source,include}/blah.{h,cpp} tree, but also to be able to apply per-project settings like clang-complete options, etc. Right now I don't see a way to have e.g. three different projects that all build from the same files, but use different build options (mainly third-party sdk versions) and thus should give me different completions and code navigation.
Part of why I switched to emacs was something called helm: https://tuhdo.github.io/helm-intro.html
It fuzzy matches almost anything: files, function names, or commands