Dobrar região do arquivo organizacional

8

Existe uma maneira de dobrar uma região no modo organizacional? (Não é o arquivo inteiro e não um item individual, mas uma região que contém vários itens.)

Muitas vezes, eu quero recolher apenas uma parte de um orgarquivo, digamos dobrar:

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

para dentro

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

Eu sei que neste exemplo em particular eu poderia simplesmente dobrar o arquivo inteiro usando org-cycle, depois expandir ae dindividualmente, mas imagine que existem centenas de itens e quero dobrar uma dúzia de itens contíguos contidos em uma região ativa, deixando o restante dos itens no diretório arquivo expandido.

holocronweaver
fonte
Como isso seria diferente do que usar a C-tabfuncionalidade? Usar shift-tabalterna o arquivo inteiro, mas C-tabdobra uma árvore específica.
GJStein 12/07
Você já tentou gravar uma macro de teclado ?
Melioratus
@ Melioratus Prefiro usar um recurso interno ou elisp, pois faço isso com muita frequência.
holocronweaver
@ GJStein Atualizei a pergunta que espero esclarecer o que estou procurando.
holocronweaver

Respostas:

7

Isso parece fazer o que você deseja:

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

Edição: Eu dei uma solução errada, que eu mantenho aqui, pois também é interessante IMO (mas não responde à pergunta)

A função outline-hide-region-bodyparece ser exatamente o que você deseja, mas, por algum motivo, não é interativa. Poderíamos adicionar uma especificação interativa, mas vamos definir org-hide-subtrees-in-regioncomo:

(defun org-hide-subtrees-in-region (beg end)
  (interactive "r")
  (outline-hide-region-body beg end))
YoungFrog
fonte
Excelente, isso funciona! Seria possível fazer isso se comportar org-cyclena região?
21449 holocronweaver
@holocronweaver Não tenho uma solução óbvia em mente.
YoungFrog