The tooling needs detailed build configuration knowledge, which is relatively available to extract from the msbuild runtime. Makefiles are not any sort of fun to extract such knowledge from, and I'm not aware of standard tooling to hook into here.
dub should be simple, but that only works for simple D projects and small libraries, it all falls over at scale. Even DMD itself is too large a D project for Code-D to work well with.
There's also no sense of 'active configuration', which makes it impossible to apply the proper build configuration when navigating or highlighting code.
For example; VisualD not only *works*, but it can even do goto-definition between languages; if you extern(C++) some function, and then "go to definition" from your D code, it'll find it in the C++ code and navigate there because of the centralised code database engine.
Code-D often can't even go to the definition of D functions in D code reliably ;)
There is so much more work in VisualD than people can easily see at first glance.