Hi Lex,
Or you can load tags files instead, so long as the symbols are in memory, and I am told (I don't use them myself) that the project plugins (there are two with slightly differing behaviour) will arrange for this to happen for you, rather like the msvc system.
Ok, that makes more sense!
(As an aside, for myself, I'm managed to hack something up that uses libClang to lookup references, that doesn't need know about the
whole set of
project files in order to work. It actually just executes the
corresponding
compile command within libClang each time you click 'lookup
reference', and
so fits in quite nicely with the 'no list of files in project'
paradigm..)
That sounds interesting, are you going to make a plugin from it?
I made a plugin. It turns out it doesn't actually require a lot of code, once you have libClang.
The key source files are attached, for reference. (Will need a bit hacking to build, sorry, I have a fairly non standard build setup, but the key stuff is there. Note that this refers to custom vector and string headers but it should be straightforward to replace these with stl containers.)
Some notes:
* For source files, the plugin needs to know the compile command to use. In this case this is hardcoded, and is essentially just some include paths.
* For header files, we need to generate a source file in memory that includes the header. In the build setup I am using the paradigm is that there is one standard base header required at the top of each .cpp, and apart from that each header should make sure that it includes anything else that it needs. The path to the base header is then hardcoded here.
For a plugin to be useful more generally (i.e. not depending on my specific build setup), I guess it could maybe take compile info from the project compile command setup, and allow to edit some kind of template for generating cpp for headers.
Maybe you could load the symbols info into Geany and then not have to run clang again and again. Matthew was also looking at something similar I think.
Well I just built a new machine, and Clang is pretty fast (much faster than Visual Studio compiler for example), so it turns out that this is just not an issue for me in practice. ;-)
Note that we only have to compile one single source file to do this, no other objects need to be compiled or referenced.
Caching symbols would obviously make things more complicated, and would also require to do some kind of dependency check for changes for everything that is included by the source file..
Best regards,
Thomas