Ketika saya mengedit dokumen besar, saya ingin melihat di mana saya berada dengan melihat garis besar (tanpa konten) di buffer terpisah. Seperti ketika Anda membaca file PDF ada TOC di sebelah kiri. (Lihat di bawah)
Dalam mode-org dimungkinkan untuk memperluas / menciutkan garis besar. Tetapi apakah mungkin untuk memiliki garis statis di sebelah kiri (atau kanan) dalam buffer terpisah sehingga ketika Anda mengklik judul, buffer lain bergerak ke posisi itu?
Agak seperti ini tetapi untuk org-mode?
[Sunting]
The clone-indirect-buffer
sangat dekat dengan apa yang saya inginkan. Potongan puzzle yang hilang adalah untuk melompat ke lokasi yang sama ketika mengklik tajuk / (atau titik mana pun juga).
Untuk ini saya telah mencoba menulis beberapa kode: Pindah ke buffer kloning lain ke titik yang sama? (posisi sinkronisasi buffer tidak langsung) (mode-org)
Tapi itu tidak berfungsi jika kontennya diciutkan. Jika itu bisa dilakukan untuk bekerja, maka klon-inderect-buffer adalah solusi lengkap untuk ini.
[Edit2 Solusi]
Kode di tautan di atas dan di jawaban di bawah ini menggabungkan niceley untuk menyelesaikan lompatan bolak-balik.
;first call 'clone-indirect-buffer'. Then...
;This function works between buffer and it's clone.
(defun my/goto-same-spot-in-other-buffer ()
"Go to the same location in the other buffer. Useful for when you have cloned indirect buffers"
(interactive)
(let ((my/goto-current-point (point)))
(other-window 1)
(goto-char my/goto-current-point)
(when (invisible-p (point))
(org-reveal)))
)
;This function is a clone-to-buffer jump only:
; It does find the other buffer first thou instead of just jumping to the other
; window as does the function above.
(defun my/jump-to-point-and-show ()
"Switch to a cloned buffer's base buffer and move point to the
cursor position in the clone."
(interactive)
(let ((buf (buffer-base-buffer)))
(unless buf
(error "You need to be in a cloned buffer!"))
(let ((pos (point))
(win (car (get-buffer-window-list buf))))
(if win
(select-window win)
(other-window 1)
(switch-to-buffer buf))
(goto-char pos)
(when (invisible-p (point))
(show-branches)))))
(global-set-key (kbd "<s-mouse-1>") 'my/goto-same-spot-in-other-buffer)
(global-set-key (kbd "s-m") 'my/goto-same-spot-in-other-buffer)
(global-set-key (kbd "<C-s-mouse-1>") 'my/jump-to-point-and-show)
(global-set-key (kbd "C-s-m") 'my/jump-to-point-and-show)
sumber
C-c C-x b
, atauorg-tree-to-indirect-buffer
.org-sparse-tree-to-indirect-buffer
fungsi, misalnya, tetapi sepertinya tidak ada.Jawaban:
Beberapa pilihan muncul di benak saya. Dua yang pertama adalah
speedbar
, yang diduga bermain dengan baikorg-mode
, danminimap
, meskipun saya belum menggunakannya jadi tidak bisa menjamin mereka secara pribadi.Apa yang mungkin menjadi pilihan paling sederhana (dan juga yang paling fleksibel), adalah dengan menggunakan buffer tidak langsung .
Dalam praktiknya, Anda akan pergi ke
org
buffer yang ingin Anda garis besar, tekanM-x clone-indirect-buffer
(gunakanC-u M-x clone-indirect-buffer
jika Anda ingin mengontrol apa yang disebut klon), dan kemudian boom, ada salinan lain dari buffer untuk Anda gunakan. Letakkan klon itu di jendela atau bingkai berdampingan dengan buffer asli dan, di klon, sesuaikan garis dengan selera Anda.Ini tidak memberi Anda fungsionalitas "klik pada judul" yang Anda sebutkan, tetapi memberi Anda semangat bilah sisi.
Sunting: sebagai tanggapan atas komentar Anda, inilah perintah sederhana yang, ketika dipanggil dari klon buffer , akan beralih ke buffer dasar dan memindahkan titik ke mana pun kursor berada di klon buffer:
sumber
Bagaimana dengan: M-x
occur
RET^*+
RET(perhatikan bahwa ada spasi di akhir regexp).sumber
Setelah membaca jawaban Dan dan solusi Anda berdasarkan itu, saya menggabungkan ini. Ini membuka klon baru, sempit, hanya-baca di sebelah kiri buffer saat ini, dan mengikat
<mouse-1>
danRET
secara lokal di klon untuk melompat ke posisi itu di buffer dasar.Ini akan bekerja dengan
outline-mode
danoutline-minor-mode
, serta mode yang membangunnya, sepertiorg-mode
. Saya menemukan beberapa info tentang mendapatkan peta kunci lokal, tetapi saya tidak tahu bagaimana memilih yang mana yang akan disalin. Ada juga halaman ini yang memiliki fungsi untuk secara otomatis membuat mode minor spesifik penyangga untuk mengatur kunci penyangga-lokal, tetapi itu tampaknya di luar cakupan untuk masalah ini.sumber
outline-mode-map
alih-alihorg-mode-map
saya berhasil membuatnya bekerjaAUCTeX
denganoutline-minor-mode
, yang bagus.outline-mode
fungsihide-body
menyembunyikan semuanya kecuali tajuk utama.outline-mode-map
danhide-body
, dan beberapa perbaikan kecil lainnya.Akhirnya, ini telah diimplementasikan dalam paket
org-sidebar
:sumber
dua saran sewa rendah (apa yang saya lakukan) dari non-programmer yang suka menggunakan aquamacs untuk editor teks:
STARTUP: indent (untuk menunjukkan garis besar tipe air terjun lebih mudah dilihat secara keseluruhan)
ini untuk melihat buffer buffer yang digerakkan oleh tab
dan
+ PILIHAN: H: N, di mana N = = jumlah level yang ingin Anda lihat dalam ekspor html, yang merupakan saran # 2
lihat: https://emacsclub.github.io/html/org_tutorial.html
sumber
Saya membutuhkan sesuatu yang serupa, jadi saya menggabungkan
outline-toc
mode . Ini harus bekerja untuk dokumen mode-org.sumber