Me gustaría configurar mi franja Emacs para mostrar secciones plegables de código.
Por ejemplo, BBEdit en Mac mostraría lo siguiente al editar un archivo JSON:
Las marcas en sí son accionables: hacer clic en una marca expandiría o contraería la sección de código correspondiente. Cuando el documento no tiene un modo que admita el plegado de código, no se muestra la franja.
¿Es posible expandir la funcionalidad marginal de Emacs de tal manera?
fuente
Hideshowvis.el
funciona muy bien, gracias! Tuve algunos problemas para que funcione con archivos JSONjs3-mode
; Para solucionar estos problemas, tuve que asegurarme de que hideshowvis solo esté habilitado después de todas las acciones en la cola, por ejemplo:(dolist (hook '(emacs-lisp-mode-hook c++-mode-hook)) (add-hook hook 'hideshowvis-enable)) (defun hideshowvis-enable-immediately () (run-at-time "0 seconds" nil 'hideshowvis-enable)) (add-hook 'js3-mode-hook 'hideshowvis-enable-immediately)
Si bien no creo que los elementos marginales puedan recibir clics directamente (aunque podría estar equivocado), un posible hack sería vincular
(kbd "<left-fringe> <double-mouse-1>")
Dado que el primer clic movería el punto al comienzo de la línea que corresponde al ícono de franja, probar el valor de
(point)
en su función hipotética (des) plegar le permitiría identificar qué parte del código (des) doblar, o si debe hacer cualquier cosa (en caso de que no haya un icono de franja para esta línea)ejemplo con un búfer de modo org:
Al hacer doble clic en la franja, se alterna el subárbol correspondiente.
fuente