geany/tagmanager
Jiří Techet 5d9376ea80 Add explicit mapping of ctags tag types to Geany tag types
At the moment tag types are changed in ctags to match the types Geany
uses internally. This introduces differences between the parsers used
in ctags and the ones used in Geany.

Instead, perform the "ctags tag type"->"geany tag type" mapping explicitly
in TM and leave the tag types in individual parsers identical to ctags.
For parsers which are present in ctags (and which don't seem to be
completely different from the parsers used in Geany) revert the tag type
change in the parsers so the parser tag definitions match universal-ctags.
This patch doesn't do anything with the tag types of parsers not present
in universal-ctags and leaves them as they are.

Parsers which previously had a mapping to an non-existent Geany type have
now the mapping explicitly set to tm_tag_undef_t. Since the mapping is now
made through the one-letter type, some of the parsers had to be adjusted
because they used single letter for multiple tag types (probably by
mistake).

Because the whole mapping process might be a bit fragile and error-prone
to changes in ctags parsers, the patch also performs some consistency
checks:

* whether the parser number in ctags/TM matches
* whether for the given language the tag type number is identical in TM
  mapping and ctags definition
* whether all tag types defined in ctags parser are mapped in TM and in
  reverse, whether all mapped tags in TM are defined in ctags parser
* whether there aren't duplicate tag types

Unfortunately the checks are possible only for parsers not using regex
because regex definitions are not exposed by ctags (TODO).

A bonus side effect of the changes is we can now use real tag types defined
for each languages in ctags when parsing ctags tag files instead of
using the hard-coded static values which mostly work just for C/C++.
2016-03-22 17:03:16 +01:00
..
2012-05-08 23:01:23 +02:00