Région de pliage du fichier org

8

Existe-t-il un moyen de replier une région en mode org? (Pas l'intégralité du fichier et pas un élément individuel, mais une région contenant plusieurs éléments.)

Souvent, je souhaite réduire uniquement une partie d'un orgfichier, par exemple plier:

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

dans

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

Je sais que dans cet exemple particulier, je pourrais simplement plier tout le fichier en utilisant org-cycle, puis développer aet dindividuellement, mais imaginez qu'il y a des centaines d'éléments et je veux plier une douzaine d'éléments contigus contenus dans une région active tout en laissant le reste des éléments dans le fichier développé.

holocronweaver
la source
En quoi cela serait-il différent de l'utilisation de la C-tabfonctionnalité? L'utilisation fait shift-tabdéfiler tout le fichier, mais C-tabplie un arbre particulier.
GJStein
Avez-vous essayé d'enregistrer une macro de clavier ?
Melioratus
@Melioratus Je préfère utiliser une fonctionnalité intégrée ou elisp car je le fais très souvent.
holocronweaver du
@GJStein J'ai mis à jour la question qui, je l'espère, clarifie ce que je recherche.
holocronweaver du

Réponses:

7

Cela semble faire ce que vous voulez:

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

EDIT: J'ai d'abord donné une mauvaise solution, que je garde ici car elle est également intéressante OMI (mais ne répond pas à la question)

La fonction outline-hide-region-bodysemble être exactement ce que vous voulez, mais pour une raison quelconque, elle n'est pas interactive. Nous pourrions y ajouter une spécification interactive, mais définissons simplement org-hide-subtrees-in-regioncomme:

(defun org-hide-subtrees-in-region (beg end)
  (interactive "r")
  (outline-hide-region-body beg end))
YoungFrog
la source
Excellent, cela fonctionne! Serait-il possible de faire en sorte que cela se comporte comme org-cycledans la région?
holocronweaver
@holocronweaver Je n'ai pas de solution évidente en tête.
YoungFrog