2011-02-09 16 views
10

Estoy desarrollando C en Emacs. Si tengo un archivo fuente abierto con múltiples funciones y "el marcador" está en una llamada de función, p. int n = get_number(arg); ¿hay alguna forma en que pueda "saltar a" la implementación de esa función? p.ej. a int get_number(int *arg) { ... }¿Cómo puedo saltar a la función cuando hago el desarrollo C en Emacs?

He hecho algo de desarrollo de Java en Eclipse y me falta esta funcionalidad, porque no estoy acostumbrado a Emacs pero me gustaría aprender.

+0

¿Cuál es su sistema operativo? –

+0

@ ring0: Es Mac OS X. – Jonas

Respuesta

10

Tienes que crear un archivo de .
En Unix, que tiene el programa etags que entiende la sintaxis de C, C++, Java ... y que cree un archivo tag que puede ser usado por Emacs.

Esto más bien old page (2004) proporciona más información.

Para saltar a una función use M-. (eso es Meta-Period) y escribe el nombre de la función. Si simplemente presiona enter Emacs saltará a la declaración de función que coincida con la palabra bajo el cursor.

+0

No, no son saltos a una declaración, sino a una implementación. –

3

Existen varios sistemas de "etiquetas" que permiten que (hay uno incluido con emacs, existe GNU global que no está incluido con emacs pero se integra bien con él y tiene algunas ventajas). Comparado con Eclipse, necesitarás construir el archivo de etiquetas.

Luego está la semántica/EDE que ahora se incluye con emacs que debería proporcionar una solución sin necesidad de construir una base de datos explícitamente. No he intentado usarlo recientemente. Cuando lo hice, tiene un problema de rendimiento y descubrí que la configuración fue dolorosa. (Ambos posiblemente debido al hecho de que estoy trabajando en un proyecto grande -muchas decenas de millones- y viejo, algunas cosas datan de mediados de los años 80, sin la posibilidad de reorganizarlo).

+0

guau, ese debería ser un lugar para Emacs .. Me gusta la forma en que Emacs nos permite codificar. Muy intrigante ...:) – swdev

0

me gusta mucho cscope para esto, pero probablemente eTags funciona tan bien.

3

Creo que el modo semántico debería hacer el mismo resultado. Aunque no he intentado saltar a otro archivo, pero en un archivo es excelente. Vaya a una variable, presione la tecla C-c,j, saltará a la definición de la variable. Regrese a la línea anterior usando C-uC-space. Para visualizar referencia al símbolo, el uso de teclas C-c,g

Realmente me ayuda. No he intentado saltar a otro archivo, porque mi proyecto actual es un programa Java modificado, donde estamos usando el preprocesador (un proceso java no estándar). Entonces creo que ahí es donde radica el problema.

¿Alguien tiene éxito con el modo semántico ???

gracias

+0

No funciona con símbolos locales, pero sigue siendo útil. –

Cuestiones relacionadas