2010-01-25 11 views
15

Me gustaría mover rápidamente el punto a una función en mi buffer Emacs. Me gustaría ejecutar alguna función y obtener un mensaje pidiéndome el nombre de la función, con la finalización prevista para cada función definida en el búfer actual.En Emacs, ¿cómo puedo saltar de una función a otra en el archivo actual?

Por lo general, utilizo etags para navegar, pero a veces estoy buscando un método de marco que se haya anulado en varios archivos. En estos casos, puedo encontrar el archivo que necesito, pero luego me gustaría ir rápidamente a la función allí. Hay una característica similar en TextMate donde puede seleccionar una definición de una lista en la parte inferior derecha del editor.

Respuesta

32

¿Solo para saltar las funciones en el archivo actual? Use imenu. Es la más simple y ligera de todas las alternativas enumeradas hasta ahora y podría ser suficiente para lo que desea. También está integrado en Emacs y tiene una configuración mínima. Ofrece interfaces gráficas y textuales. Cualquier cosa extra y será mejor que utilice una de las otras excelentes sugerencias hechas aquí.

+0

¿Qué idiomas son compatibles? C-familia y Elisp, ¿qué más? –

+1

Creo que la mayoría de los modos incorporados funcionan bien con imenu. También es bastante fácil agregar soporte de imenu a un modo. Funciona para Python y en modo Cperl. Los he usado. –

+1

C# funciona, pero vea http://stackoverflow.com/questions/2240320 – Cheeso

0

intente CEDET. Es un poco difícil configurar el primero, pero aquí hay un excelente tutorial: by Alex ott

Y cuando se instala, puede usar semantic-complete-jump. presionó la tecla dos veces, y también muestra las definiciones de los símbolos.

+0

Semántica también tiene una buena integración con Anything, y la fuente 'anything-c-source-semántica' da una lista de todo lo que se encuentra por semántica. – haxney

1

barra de acceso rápido viene de serie, y le ofrece un menú desplegable para cada archivo en el directorio actual, de manera predeterminada, al hacer clic en una entrada para una definición de función salta a esa definición. Con emacs23, esto se cambió al clic izquierdo más normal.

0

Si M-. saca el método incorrecto, puede escribir C-u M-. para encontrar el siguiente con el mismo nombre.

0

generar GTAGS global es muy buena

0

Para navegar dentro del archivo actual o un conjunto de archivos que seleccione, lo hace no necesitan un fichero de etiquetas. Puede usar Imenu. Pero es mejor usar los comandos Icicles imenu.

¿Por qué? Porque le permiten usar finalización. Subcadena, expresión regular, prefijo o terminación difusa. Combine patrones simples para que coincidan, o restelos.

Comando icicle-imenu está ligada en carámbano modo para C-c =. Pero también puede buscar solo un comando o simplemente una función sin comando (no interactiva), usando el comando icicle-imenu-command o icicle-imenu-non-interactive-function.

Estos comandos son múltiples comandos, lo que significa que en realidad son navegadores: se puede tropezar entre las definiciones de funciones mediante las teclas C-RET o C-ratón-2 (saltos directos) y C-down (ciclo). Pulse RET o haga clic en mouse-2 para establecerse en un destino final.

Cuestiones relacionadas