I’m looking for tagging of constants, classes, modules, and methods,
and particularly for qualified tags (so MyClass#to_s and YourClass#to_s
are different tags).
I know about the rtags reference in the Pickaxe books, that program has
vanished from the net.
I also know about exhuberant ctags, it only tags classes, module, and
methods, and doesn’t have qualified tags, which is a killer in any
project with more than a few classes.
Does anybody have a copy of the pre-merged-with-ruby irb-tools project
hanging around? I’d really, really like to get a hold of that rtags.rb
mentioned in the pickaxe, if I had a copy I might be able to get tags
working!
Cheers,
Sam
For those not familiar with how tags works with languages that are
supported really well, like C++, here is an example.
module Foo
class Aclass
ACONST = 1
def to_s
end
end
end
module Bar
class Aclass
ACONST = 1
def to_s
end
end
end
Exhuberant ctags generates this for the above example:
— tags —
…
!_TAG_PROGRAM_VERSION 5.5.4 //
Aclass ex.rb /^ class Aclass$/;" c
Bar ex.rb /^module Bar$/;" m
Foo ex.rb /^module Foo$/;" m
to_s ex.rb /^ def to_s$/;" f
I want all the tags:
— tags —
Aclass …
Aclass.to_s
ACONST
Bar …
Bar.Aclass …
Bar.Aclass.to_s …
Bar.ACONST
Foo …
Foo.Aclass …
Foo.Aclass.to_s …
Foo.ACONST
to_s …
So I can do a tag jump to Aclass.to_s and go the right one.
In case you wonder, you can get the above for C++ and Java using “ctags
–extra=+q”, but not for ruby.