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)
org-sparse-tree-to-indirect-buffer
fungsi, misalnya, tetapi sepertinya tidak ada.
C-c C-x b
, atauorg-tree-to-indirect-buffer
.