Quoting guslist / free.fr, on Fri, Mar 25, 2005 at 03:11:15AM +0900:
> On Fri, 2005-03-25 at 02:21 +0900, Sam Roberts wrote:
> 
> > I'm totally open to suggestions. I NEED tags to read code effectively.
> > 
> > I'm faster writing in ruby than in C, but I read C code way, way, way
> > faster due to the tool support I have (vim+tags) (I debug C faster, too,
> > because I have a great debugger - gdb.) I'm not happy about this
> > situation.
> 
> Maybe I don't understand what you need exactly, but exuberant ctags
> supports both ruby and vi:

> $ ctags --version
> Exuberant Ctags 5.5.4, Copyright (C) 1996-2003 Darren Hiebert
>   Compiled: May 12 2004, 14:32:50
>   Addresses: <dhiebert / users.sourceforge.net>, http://ctags.sourceforge.net
>   Optional compiled features: +wildcards, +regex

> $ ctags --list-languages | grep -i ruby
> Ruby

"Support", and "supports well" aren't the same thing.

> It works for me with emacs...

Pico supports editing text, but it doesn't really compare to emacs, does
it? :-)

> Tell me if I am completely off base.

Half on, half off.

I think you've internalized the limitations, or don't realize how good
it could be.

It doesn't tag constants, and it doesn't support qualified tags.

Tags are downright useless (IMNSHO) if they aren't qualified in an OO
language. C only has one function per name (ignoring static functions).

Tag a large code-base, now jump to tag "new" (trick question, exctags
doesn't understand that "initialize" is called as "new").

Ok, now jump to "each", is it the right tag? No way, you've got one for
almost every class, because its the Ruby Way, and you've even more
definitions of #to_s. How much fun do you have walking them all to find
the one you wanted?

In well-supported languages, you would use --extra=+q, and get qualified
tags, so you could do:

  <tag-cmd>Vc<TAB-complete name>ard.t<TAB-complete>o_s

And in about 5 keystrokes, you'd be at the definition of the method you
wanted, Vcard.to_s

It's also a cheap and fast class browser:

  <tag-cmd>Vp<TAB><TAB>

would give you a list of all methods, classes, modules, and constants in
the module Vpim, and you can keep drilling down, exploring whats there.
Ah... heaven.

Doesn't work with exuberant ctags. I looked at adding it, but it's
awful. You need to maintain a stack of class module names so you know
where you are. How bad can that be, you ask? Terrible. You don't know
where they end. An "end" means all kind of things in ruby. Maybe I'll
give it another shot, but it looked hard to me.

It also has minor bugs, like it doesn't grok this:

  class SomeModule::Foo
  end


Maybe if you think exctags is OK, you've never felt the intoxicating
power of a fully operational Battle Star^w^w tagging system...

Cheers,
Sam