2011-11-20 7 views
20

Cómo generar archivo de etiquetas para la fuente de Irbase de datos de CTAG para Go

En Mac, he instalado exuberantes ctags, y trató el siguiente comando en el directorio de origen

ctags -f gosource.tags -R `pwd` 

embargo, no se considera * .go archivos. ¿Debo usar la opción -h? Pero, ¿no es solo para archivos de encabezado, según el manual?

Por favor, dame el comando correcto para que pueda usar el archivo de etiquetas con vim. También prefiero la ruta absoluta para que pueda guardar el archivo en cualquier lugar

Gracias.

Edit: Supuse que los ctags actuales admiten Go, viendo http://groups.google.com/group/golang-nuts/browse_thread/thread/3a4848db231b02c9.

pero, http://ctags.sourceforge.net/languages.html desn't have go listed.

Respuesta

34

Añadir lo siguiente a ~/.ctags

--langdef=Go 
--langmap=Go:.go 
--regex-Go=/func([ \t]+\([^)]+\))?[ \t]+([a-zA-Z0-9_]+)/\2/d,func/ 
--regex-Go=/var[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,var/ 
--regex-Go=/type[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,type/ 

(De http://go-wise.blogspot.com/2011/09/using-ctags-with-go.html)

+0

Gracias por la ayuda. ¿Puede decirme dónde encontró la versión 5.9 o cómo instalarla? ¿Recibiste directamente de svn? http://ctags.svn.sourceforge.net/viewvc/ctags/trunk/ .. gracias de nuevo – bsr

+0

Tengo el que viene con Ubuntu 11.10 – lazy1

+2

En este momento, el último lanzamiento ctags exuberante en SourceForge es 5.8, y el SVN el tronco no tiene soporte para ir.Independientemente de la versión que estés utilizando, definitivamente no es la base de código oficial. –

0

Compruebe Go Dashborad/Projects, sección "Generadores de etiquetas". El estado de esas herramientas no lo conozco.

Editar 2011-11-22: Últimas egotags tenedor anunció hoy (referencia cíclica posible ;-)

+0

Intenté las 3, pero no se actualizan durante un tiempo. Puedo intentar que funcionen si no hay otra opción. Gracias. – bsr

16
--langdef=Go 
--langmap=Go:.go 
--regex-Go=/func([ \t]+\([^)]+\))?[ \t]+([a-zA-Z0-9_]+)/\2/f,func/ 
--regex-Go=/var[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/v,var/ 
--regex-Go=/type[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/t,type/ 

De hecho funciona con ctags 5.8. Un pequeño cambio con respecto al póster anterior, ctags requiere tipos únicos de 1 char en los extremos de las líneas de expresión regular. Por lo tanto, /d,func/ debe leer /f,func/ intuitivamente. Esto permite que los ctags distingan e identifiquen tipos, permitiendo ctags --go-types=fvt es decir

3

Vi su publicación, tropecé un poco tratando de encontrar una buena herramienta para el trabajo, intenté ctags, y al final quedé insatisfecho. Escribí un programa 'gotas' en Go que genera un archivo ctags para código Go. Es mejor que el soporte actual de ctags porque, por ejemplo, etiqueta los nombres de los campos struct así como el nombre de la propia estructura. Puede obtenerlo aquí: https://github.com/necro351/gotags.

Es un buen programa Go corto y sencillo porque usa el analizador de biblioteca estándar y no tiene características adicionales aparte de un buen análisis y etiquetado de Go. Solo compruébalo (o ve por él) y haz una instalación en marcha. Además, si tiene alguna sugerencia o idea sobre cómo mejorarla, hágamelo saber.

Editar: Soy un Gopher activo y por lo tanto actualizaré esta herramienta con el tiempo y mientras la utilizo.

Editar: No estoy desarrollando activamente Go more. Pero mi herramienta es muy corto y funciona bastante bien, así que debería "funcionar" :)

Cuestiones relacionadas