2012-01-20 15 views
7

¿Hay un menú func y equivalente para GNU emacs? Usé func-menu cuando tenía acceso a xemacs y prefiero su comportamiento al de la barra de velocidad o sr-speedbar. Específicamente:GNU emacs equivalente a func-menu

  • Me gusta que solo se muestren las funciones para el archivo actual.

  • La lista de funciones se puede mostrar desde el cuadro actual y no es una ventana separada que pueda haber ocultado.

  • El nombre de la función actual aparece en la línea de modo.

¿Hay un paquete para GNU emacs que sea una aproximación más cercana al menú de func?

Respuesta

7

imenu sería la característica análoga en GNU Emacs.

Ver C-hfimenu-add-menubar-indexRET.
Puede llamar eso en sus ganchos de modo para modos con soporte imenu.

Naturalmente elisp está soportado, por lo que para una demostración rápida:

  • M-xfind-libraryRETimenuRET
  • M-ximenu-add-menubar-indexRET

y luego ver el nuevo elemento "Índice" en la barra de menú, y también en C- <mouse3>

Por supuesto, también hay una interfaz de teclado, simplemente llamando MximenuRET (con TAB finalización), pero recomiendo agregar la integración ido que se puede encontrar en el EmacsWiki * - En general, considero que es una interfaz más rápida que usar el mouse.

Para más detalles, ver Chig(elisp) ImenuRET

Para la configuración, ver Mxcustomize-groupRETimenuRET

(*) a lo largo con nu Otras formas de mejorar la función son muchas, por lo que incluso si no quiere usar ido, definitivamente debe leer esa página Wiki después de ver la versión básica en acción.

3

Is this the XEmacs func-menu mode you're talking about? Le da una lista de funciones en el archivo actual.

Si es así, entonces usted puede replicar la funcionalidad sobre todo en GNU Emacs con la colección de herramientas de desarrollo de Emacs, CEDET (específicamente el código del analizador semántico), y el navegador de código Emacs, ECB.

  • The ECB Methods window le muestra todos los símbolos en el búfer de código fuente seleccionado. Es una ventana separada en el sentido de Emacs, es decir, un área de edición que muestra un único búfer, varios de los cuales pueden estar dentro de una sola ventana del administrador de ventanas. No es un marco de Emacs por lo que no se cubrirá.
  • Semantic's stickyfunc-mode puede mostrar la función actual en una línea en la parte superior de su búfer de código fuente. Utiliza la característica header line específica de GNU Emacs. Esto no es lo mismo que mostrar el nombre de la función en la línea de modo, pero lo suficientemente cerca.

Tenga en cuenta que ECB requiere CEDET y ambos tienden a ser difíciles de instalar sin el administrador de paquetes de XEmacs.

+0

Para poner el nombre de la función en la línea de modo, puede usar 'which-function-mode'. –

+0

Gracias, el modo-función-que es parte de lo que estoy buscando – perogiex

+0

CEDET es bastante complicado de instalar, esto puede llevar un tiempo. – perogiex

0

No estoy seguro, pero pensé que el "saltar a una función dentro de un búfer" se llamó modo de fume. Si es así, buscar un análogo para el modo de humo podría ayudarlo a concentrarse en lo que está buscando.

Aquí es un extracto del manual de XEmacs que menciona humos modo:.

"41. Ir a una función dentro de un búfer

Suponga que tiene un archivo con una gran cantidad de funciones en Bueno, este paquete hace que sea fácil saltar a cualquiera de esas funciones. Los nombres de las funciones en el búfer actual se ponen automáticamente en un menú de barra , selecciona uno de los nombres de función y el punto es movido a esa misma función. La marca es push ed en el mark-ring, así que puede volver fácilmente a donde estaba. Alternativamente, puede usar ingrese el nombre de la función deseada a través del minibúfer que ofrece completando la entrada de lectura. Además, el nombre de la función antes del punto se muestra opcionalmente en la línea de modo.

Los siguientes modos son compatibles:

Ada, Asamblea, BibTex, C++, C, Dired, EHDM, elisp, FORTRAN, Ksh, Látex, Lelisp, Makefile, Maple, Modula2, Modula-3 , Contorno, Objective-C, Pascal, Perl, Postscript, Prolog, PVS, Python, SGML, Esquema, Tcl, Verilog, Manual, Ruby, JavaScript

para instalar este paquete, añada lo siguiente a su archivo de inicialización:

(add-hook 'find-file-hooks 'fume-setup-buffer) 

(add-hook 'Manual-mode-hook 'turn-on-fume-mode)" 
Cuestiones relacionadas