emacs sweave folding ess

EMACS plegable/desplegable código R



sweave folding (2)

¿Hay un modo menor de Emacs (o una porción de código elisp) que le permite ocultar / mostrar selectivamente los entornos mientras está en Sweave (Sweave = R + LaTeX)?

Por ejemplo, me gustaría moverme al principio de un bloque de código (<< >>), presionar una tecla y tener el contenido del entorno oculto a la vista.

es posible? Acabo de probar hs-minor-mode, allout-mode y outline-minor-mode, pero la mayoría de ellos no reconocen los entornos R.

También probé org-mode que funciona muy bien para doblar / desplegar, pero no soporto el código de resaltado LaTeX para expresiones como: / cite {}; /árbitro{}; / ce {} ...

Mejor Riccardo

--EDITAR--

Intenté por algún día usar emacs-folding-mode pero, como trabajo en un código muy largo (más de 2000 filas), el modo de plegado "se vuelve loco" y, por ejemplo, malinterpretar la extracción de algún carácter especial (es decir, $), eso tiene un uso muy diferente tanto en R como en LaTeX. Creo que el problema es intrínseco a Sweave, porque en el mismo buffer tengo el código R y el código LaTeX juntos.

Entonces, ahora estoy probando emacs delinear el modo menor. Pero cuando me desplazo a través de R desde LaTeX (y viceversa), toda la parte delineada se desplegó a pesar de que escribo en mi .emacs:

(defun turn-on-outline-minor-mode () (outline-minor-mode 1)) (add-hook ''ess-mode-hook ''turn-on-outline-minor-mode) (add-hook ''LaTeX-mode-hook ''turn-on-outline-minor-mode) (add-hook ''latex-mode-hook ''turn-on-outline-minor-mode) (setq outline-minor-mode-prefix "/C-c/C-o")

¿¿Tienes alguna sugerencia??

Saludos

--EDIT 2--

Parece funcionar:

(load "folding" ''nomessage ''noerror) (folding-mode-add-find-file-hook) (add-hook ''LaTeX-mode-hook ''folding-mode) (add-hook ''ess-mode-hook ''folding-mode) (folding-add-to-marks-list ''ess-mode "#{{{ " "#}}}" " ")

No sé si es correcto que, cuando abandones el fragmento, se despliegue automáticamente.



He obtenido muy buenos resultados con hideshow hs-minor-mode , estas son las líneas que utilizo básicamente en mi ~/.emacs.d/init.el :

(add-hook ''ess-mode-hook ''hs-minor-mode) (eval-after-load ''hideshow ''(progn (global-set-key (kbd "C-+") ''hs-toggle-hiding)))