@techee thanks for the explanation, can you explain more what is "cork" and what it provides? This is more for understanding than directly relevant to the PR.
The "cork" thing is something that helps constructing scope information by referencing the parent tag. You write something like:
``` parent_tag = makeTag(...); chlid_tag = makeTag(parent_tag, ...); ```
and arbitrary nesting of these and it automatically generates scope for you (you also have to statically specify scope separator before). Don't ask me why it's called cork though ;-).
You pointed out the concern, is there anything that is not needed in Geany, thats in that code because ctags needs it (like for instance the stuff that outputs ctags files). I know Geany abandoned the "small and lightweight" some time ago, but this is adding two extra editor.cs worth of code to the executable.
Binary-size wise libgeany.so size looks this way:
``` 17942824 before 18533832 after ```
which is 3.2% increase so nothing dramatic. While it brings more code, the point is we should have less code to maintain ourselves because we could rely on uctags maintaining the code.
I could probably use more ifdefs to strip more unnecessary code from the binary but first I'd like to do as little as possible and get some feedback both from Geany project and uctags (where I plan to publish the basic library support patches for further discussion which direction to take).
I don't suppose you could get uctags to provide a libctags like Geanys libmain?
That's the long-term plan but many things have to be resolved first - the diffs we need for Geany right now I mentioned in the first post, then probably ctags should be modularized a little because it doesn't expect that something like a library based on it could exist and you cannot easily remove code we don't care about right now.