Doblar la región del archivo org

8

¿Hay alguna manera de plegar una región en modo org? (No todo el archivo, y no un elemento individual, sino una región que contiene varios elementos).

A menudo quiero colapsar solo una parte de un orgarchivo, digamos plegado:

* a
** a1
** a2
* b
** b1
** b2
** b3
* c
** c1
** c2
* d
** d1
** d2

dentro

* a
** a1
** a2
* b ...
* c ...
* d
** d1
** d2

Sé que en este ejemplo en particular podría simplemente doblar todo el archivo usando org-cycle, luego expandirlo ae dindividualmente, pero imagino que hay cientos de elementos y quiero doblar una docena de elementos contiguos contenidos en una región activa mientras dejo el resto de los elementos en el archivo expandido.

Tejedor de holocrón
fuente
¿Cómo sería esto diferente de usar la C-tabfuncionalidad? Usando shift-tabciclos de todo el archivo, pero C-tabdobla un árbol en particular.
GJStein
¿Has intentado grabar una macro de teclado ?
Melioratus
@Melioratus Prefiero usar una función incorporada o elisp ya que hago esto muy a menudo.
holocronweaver
@GJStein He actualizado la pregunta que espero aclare lo que estoy buscando.
holocronweaver

Respuestas:

7

Esto parece hacer lo que quieres:

(defun org-hide-subtrees-in-region (beg end)
  (interactive "r")
  (save-restriction
    (narrow-to-region beg end)
    (outline-hide-sublevels 1)))

EDITAR: Primero di una solución incorrecta, que mantengo aquí, ya que también es interesante OMI (pero no responde la pregunta)

La función outline-hide-region-bodyparece ser exactamente lo que desea, pero por alguna razón no es interactiva. Podríamos agregarle una especificación interactiva, pero definamos org-hide-subtrees-in-regioncomo:

(defun org-hide-subtrees-in-region (beg end)
  (interactive "r")
  (outline-hide-region-body beg end))
YoungFrog
fuente
Excelente, esto funciona! ¿Sería posible hacer que esto se comporte como org-cycleen la región?
holocronweaver
@holocronweaver No tengo una solución obvia en mente.
YoungFrog