The biggest offender is symbols.c where many things could just be moved into tag manager and hidden behind appropriate API. I think the best way to go forward would be introducing a LSP-like API to tag manager
Sounds plausible.
TMTag could be used for passing symbol data both by tag manager and LSP
Well, a struct called TMTag, but what it contains might be different :-)
I think we could also keep tag manager running even with LSP enabled
Well, the decision to use ctags/tm or LSP should be per document, IIUC not all languages have LSP available. What did you think would be the gain in still ctags parsing documents that are using LSP?