Piega la regione del file org


8

C'è un modo per piegare una regione in modalità org? (Non l'intero file e non un singolo elemento, ma un'area contenente più elementi.)

Spesso voglio comprimere solo una parte di un orgfile, ad esempio piegando:

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

in

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

So che in questo esempio particolare potrei semplicemente piegare l'intero file usando org-cycle, quindi espandere ae dindividualmente, ma immagino che ci siano centinaia di elementi e voglio piegare una dozzina di elementi contigui contenuti in una regione attiva lasciando il resto degli oggetti nel file espanso.


In che modo sarebbe diverso dall'uso della C-tabfunzionalità? Usando shift-tabcicla l'intero file, ma C-tabpiega un particolare albero.
GJStein,

Hai provato a registrare una macro di tastiera ?
Melioratus,

@Melioratus Preferirei utilizzare una funzione integrata o elisp poiché lo faccio molto spesso.
holocronweaver,

@GJStein Ho aggiornato la domanda che spera chiarisca cosa sto cercando.
holocronweaver,

Risposte:


7

Questo sembra fare quello che vuoi:

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

EDIT: ho prima dato una soluzione sbagliata, che tengo qui in quanto è anche interessante IMO (ma non risponde alla domanda)

La funzione outline-hide-region-bodysembra essere esattamente quello che vuoi, ma per qualche motivo non è interattiva. Potremmo aggiungere una specifica interattiva ad esso, ma definiamo semplicemente org-hide-subtrees-in-regioncome:

(defun org-hide-subtrees-in-region (beg end)
  (interactive "r")
  (outline-hide-region-body beg end))

Eccellente, funziona! Sarebbe possibile far sì che questo si comporti come org-cyclenella regione?
holocronweaver,

@holocronweaver Non ho in mente una soluzione ovvia.
YoungFrog,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.