I agree, but I don't think TM is the right API at present for this purpose. I'm just worried we're boxing ourselves in a corner if we expose a lot of the API and then need to make massive sweeping changes to it in order to accommodate useful APIs for plugins to provide these kinds of features.
Yes, therefore this PR which aims to improve TM's interface so that it can be up to the task. We can freely change and improve TM, and do so in backward compatible ways, just as with the rest of Geany.
But, IMO, we definitely need something in Geany that can marshall tags, whether they come from ctags, some advanced llvm based system or some static file (GNU GLOBAL, anyone?). This way we can ensure that competing plugins pay nice and provide a consistent user interface. We can also change just Geany for new tag-related features and not touch every plugin.