Lipat wilayah file org

8

Apakah ada cara untuk melipat suatu wilayah dalam mode-org? (Bukan seluruh file, dan bukan item individual, tetapi wilayah yang mengandung banyak item.)

Seringkali saya ingin menutup hanya sebagian orgfile, misalnya lipat:

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

ke

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

Saya tahu dalam contoh khusus ini saya hanya bisa melipat seluruh file menggunakan org-cycle, kemudian memperluas adan secara dindividual, tetapi bayangkan ada ratusan item dan saya ingin melipat selusin item yang berdekatan yang terkandung dalam wilayah aktif sambil meninggalkan sisa item di file diperluas.

holocronweaver
sumber
Bagaimana ini berbeda dari menggunakan C-tabfungsionalitas? Menggunakan shift-tabsiklus seluruh file, tetapi C-tabmelipat pohon tertentu.
GJStein
Sudahkah Anda mencoba merekam makro keyboard ?
Melioratus
@Melioratus Saya lebih suka menggunakan fitur bawaan atau elisp karena saya sering melakukannya.
holocronweaver
@ GJStein Saya telah memperbarui pertanyaan yang semoga menjelaskan apa yang saya cari.
holocronweaver

Jawaban:

7

Ini tampaknya melakukan apa yang Anda inginkan:

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

EDIT: Saya pertama kali memberikan solusi yang salah, yang saya simpan di sini karena juga menarik IMO (tetapi tidak menjawab pertanyaan)

Fungsi ini outline-hide-region-bodytampaknya persis seperti yang Anda inginkan, tetapi karena alasan tertentu itu tidak interaktif. Kita dapat menambahkan spesifikasi interaktif untuk itu, tetapi mari kita definisikan org-hide-subtrees-in-regionsebagai:

(defun org-hide-subtrees-in-region (beg end)
  (interactive "r")
  (outline-hide-region-body beg end))
YoungFrog
sumber
Luar biasa, ini berhasil! Apakah mungkin untuk membuat ini berperilaku seperti org-cycledi kawasan ini?
holocronweaver
@holocronweaver Saya tidak memiliki solusi yang jelas dalam pikiran.
YoungFrog