From: Sam Roberts Date: 2005-03-25T03:59:14+09:00 Subject: Re: [ANN] Syntax 0.7.0 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: , 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: Vcard.to_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: Vp 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