¿Por qué no hay código plegable en emacs?
folding (6)
Hay varias preguntas sobre SO sobre cómo hacer que el código se doble en emacs, sin tener que agregar ningún carácter especial como "marcadores" en los comentarios, por ejemplo. Alguien dijo que no había "ninguna solución perfecta".
Parece que podría hacerse analizando la fuente del programa que se está escribiendo y buscar paréntesis o corchetes, o hacerlo en base a una sangría. También puede usar una combinación de scripts que usan diferentes métodos.
Entonces, ¿por qué se acepta comúnmente que no hay una forma "perfecta" y directa de plegar el código en emac? ¿Hay algo en emacs o su arquitectura que dificulta la programación? Si fuera fácil, después de tantos años de gente inteligente usando emacs, pensarías que alguien lo habría escrito.
Debes jugar con Hideshow ( hs-minor-mode
) combinado con fold-dwim.el
. Hace exactamente lo que sugirió: busca llaves / paréntesis coincidentes, y puede configurarse para que retroceda en la sangría.
Existe una solución de plegado robusta para la mayoría de los idiomas comunes, y si no la hay, todos los paquetes plegables son altamente personalizables. De hecho, el único inconveniente es la proliferación de métodos de plegado ( fold-dwim
ayuda bastante con eso); Solía pensar que, como nadie podía señalarme una solución definitiva, doblar era difícil o imposible; de hecho, lo contrario es cierto. Solo tienes que experimentar un poco para ver qué funciona mejor para ti.
He usado folding.el
(por ejemplo, para agrupar cosas en mi .emacs
), outline-minor-mode
, y ahora Hideshow. Existe la posibilidad de que ninguno de ellos funcione exactamente de la forma que desea sacarlo de la caja (p. Ej., Es posible que necesite configurar una expresión regular de contorno o definir las marcas de plegado para el folding.el
), pero resulta ser fácil. Las combinaciones de teclas predeterminadas pueden ser algo barrocas, pero esto se fold-dwim
con fold-dwim
y / o hideshow-org
(altamente recomendado para Hideshow, consulte la página de Emacswiki hideshow; también puede imitar el hideshow-org
para otros modos de plegado con algunos rápido y sucio elisp y fold-dwim
). Una vez que descubra su configuración preferida, simplemente enciéndala automáticamente a través de enlaces o variables locales de búfer, y observe cómo se pliega su código :) (vea más abajo, observe los +
'''' '''' en el margen).
texto alt http://img198.imageshack.us/img198/4029/screenshot1oc.png
He estado usando el modo plegable desde hace bastante tiempo. Con la plantilla de inserción automática y abrevs, me funciona bastante bien para algunos buenos bloques de código.
Ser capaz de producir el búfer plegado (para imprimir / enviar por correo electrónico) siempre ha sido un deseo mío. Algunas de mis etiquetas plegables son para ocultación segura / contraseña.
No necesita nada adicional, solo habilite el modo de esquema menor para los tipos de archivos que desea plegar.
Pero, de hecho, hay varias soluciones para Emacs; He enumerado algunos de ellos (los que he encontrado) en http://en.wikipedia.org/w/index.php?title=Code_folding&oldid=375300945#cite_note-2 .
Sin embargo, hay cosas que me faltan: en algunos casos, me gustaría combinar varios mecanismos: por ejemplo, para rebajas, me gustaría usar el plegado basado en contornos (para secciones) y el plegado basado en sangría (para citas, bloques de código, etc.) - para no molestarnos en implementar un analizador completo para el descuento.
Aquí están:
Plegado basado en fichas en Emacs
El plegado basado en token en Emacs se ve afectado por el modo menor de plegado .
Pliegue basado en sangría en Emacs
Se puede usar la función de set-selective-display
en Emacs para ocultar líneas según el nivel de sangría, como se sugiere en la nota de plegado de código universal .
Sintaxis dependiente del plegado en Emacs.
El plegado dependiente de la sintaxis en Emacs es compatible con:
los modos de outline y allout para "sintaxis" dedicados especiales de "contorno";
por el modo menor de hideshow para algunos lenguajes de programación;
además,
- por el modo menor de semantic-tag-folding y el comando
senator-fold-tag
para sintaxis soportadas por semántica , - así como por doc-mode para JavaDoc o comentarios Doxygen,
- por TeX-fold-mode
- comando
sgml-fold-element
, - nxml-outln en los modos específicos del idioma correspondientes, y posiblemente en otros modos para sintaxis particulares.
- por el modo menor de semantic-tag-folding y el comando
Varios mecanismos de plegado están unificados por la interfaz fold-dwim.el .
Véase también http://www.emacswiki.org/emacs/CategoryHideStuff .
Plegado de regiones seleccionadas por el usuario en Emacs
El plegamiento de las regiones seleccionadas por el usuario en Emacs se implementa mediante el comando hide-region-hide .
Sí. Finalmente, el código de plegado está allí en emacs. Intente yafolding presente en la biblioteca de paquetes melpa.org.
Usted debe mirar en CEDET. El código se pliega muy bien, y muchas otras características extravagantes que probablemente esté buscando si está cambiando de un IDE a Emacs.
Específicamente, busque ''modo-plegado-etiqueta-global-semántico''