ruby vim ctags

¿Conoces un generador alternativo de ctags para Ruby?



vim (5)

Agrega lo siguiente a tus ~ / .ctags

--regex-ruby=/(^|;)[ /t]*(class|module)[ /t]+([A-Z][[:alnum:]_]+(::[A-Z][[:alnum:]_]+)+)//3/c,class,constant/

Así que puedes:

  • tratar con: module A::B

Vea más aquí: https://github.com/bltavares/dot-files/blob/master/ctags

Extumante Ctags no funciona bien con Ruby, puedes ver que hay muchos hacks en el código ruby.c y, básicamente, no reconoce muchos casos. Uno de los más importantes es este bit:

class SomeModule::SomeClass end

Ctags genera:

SomeModule someclass.rb /^class SomeModule::SomeClass$/;" c

Cuál está mal. La entrada correcta y esperada es:

SomeClass someclass.rb /^class SomeModule::SomeClass$/;" c

Esto es muy limitante. Hay algunos parches disponibles para ctags que no funcionan, por ejemplo, https://github.com/xtao/overlay/blob/master/dev-util/ctags/files/ctags-5.5.4-ruby-classes.patch pero mirando en el código base de ctags ruby, esto realmente necesita una reescritura completa.

Así que he estado jugando con otra opción que es https://github.com/rdoc/rdoc-tags que funciona mejor, pero es lenta. Quiero decir realmente lento. La generación de etiquetas en mi proyecto es de 2 segundos con ctags pero una hora con esta herramienta. De Verdad.

Encontré un proyecto antiguo que estaba analizando a Ruby por su cuenta y generando etiquetas, pero era solo para Ruby 1.8. Era más lento que ctags, pero no tan malo.

Así que estoy buscando algunas alternativas. ¿Conoce algún otro generador de etiquetas de rubí que funcione y que le brinde un rendimiento adecuado y sea rápido?

¡Gracias!

Edición : Encontré un proyecto muy bueno que funciona con Ruby 1.9+ y es preciso y rápido. Lo recomiendo:

https://github.com/tmm1/ripper-tags


Ctags exuberantes fuera de la caja no hacen una serie de cosas útiles:

  • No se ocupa de:

    module A::B

  • No etiqueta (al menos algunos de) los métodos del "operador" como ''==''

  • No admite etiquetas calificadas, —type=+

  • No genera etiquetas para constantes o atributos.

Parche disponible, pero es solo para la versión 5.5 y ya no funciona.

Otros proyectos:

Source


El esfuerzo de Ripper-Tags resuelve todo lo descrito aquí. Se basa en el analizador oficial de Ruby, que también es bastante rápido. https://github.com/tmm1/ripper-tags

gem install ripper-tags cd your_project/ ripper-tags -R

También apoya a Emacs también.



Un parche está disponible a partir de 2013-02

El generador de etiquetas rspec no reconocerá correctamente los bloques de describe que comienzan con semicolor ( :some-method ), pero aparte de eso, es genial.