He usado emacs durante mucho tiempo, pero no he estado al día con un montón de características. Uno de estos es speedbar, que acabo de investigar brevemente ahora. Otro es imenu. Ambos fueron mencionados en in-emacs-how-can-i-jump-between-functions-in-the-current-file?En Emacs, ¿cómo puedo usar imenu más sensiblemente con C#?
Usando imenu, puedo saltar a métodos particulares en el módulo que estoy trabajando. Pero hay una jerarquía de análisis que tengo que negociar antes de que consiga la opción de elegir (con autocompletar) el nombre del método.
Funciona así. Escribo M-x imenu
y luego puedo elegir Using
o Types
. La opción Usar me permite saltar a cualquiera de las instrucciones de uso en el nivel superior del archivo C# (algo así como las instrucciones de importación en un módulo Java, para aquellos que no conocen C#). No muy útil. Elijo Tipos. Luego, tengo que elegir un espacio de nombres y una clase, aunque solo haya uno en el módulo fuente. En ese punto, puedo elegir entre variables, tipos y métodos. Si elijo métodos, finalmente obtengo la lista de métodos para elegir. La jerarquía que recorro se ve así;
Using
Types
Namespace
Class
Types
Variables
Methods
method names
Sólo después llego al quinto nivel llego a seleccionar lo que realmente quiero ir a: un método en particular.
Imenu parece inteligente sobre el módulo fuente, pero es un poco difícil de usar. ¿Lo estoy haciendo mal?
Sería mucho más trabajo, pero si realmente quiere mejorar el soporte Cma de Emacs (que parece necesitar desesperadamente), la forma más completa y poderosa de hacerlo es con Semántica (http: // cedet .sourceforge.net/semantic.shtml). Esto implica escribir un analizador completo, pero le brinda los beneficios de tener dicho analizador. Si está buscando algo rápido, es excesivo, sin embargo. – haxney
Su pregunta me inspiró a enviar un parche para un problema similar en el modo MAPA: solía tener dos menús de nivel superior, "Dependencias" y "Asignaciones de macro", pero con mi parche se fusionaron en una lista plana (Acabo de reemplazar las cadenas de encabezado con nil). Hacer lo mismo para el modo C# no debería ser difícil. – legoscia
Mi parche: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=5582 – legoscia