Le 06/09/2012 20:58, Colomban Wendling a écrit :
Hi guys,
I saw that the ruby parser don't properly generate tags declarations like:
class Foo::Bar end
which should generate a tag "Bar" with the scope "Foo"; but it generates a tag "Foo" and simply ignores "Bar". This seems to apply to modules, classes and methods at least -- almost everything.
So I wanted to fix that. Unfortunately the scoping code in CTags don't really support to easily put several scopes at the same "level", e.g. if you want to push several scope you gotta handle the popping yourself. And since there is one single block end, it's tricky to do.
Since I was way too lazy (and didn't even found a good implementation) to fix that, I just did it the dirty way: reading the whole "Foo::Bar" as a single tag name ("Foo.Bar") and tuning the code registering the tag to split this on the last ".", putting the left part (if any) in the scope. Patch attached.
Ah, I forgot to mention that it'd be awesome if some true Ruby users could test the patch and check whether it breaks anything I didn't see :)