Wenn ich große Dokumente bearbeite, möchte ich sehen, wo ich mich gerade befinde, indem ich die Gliederung (ohne Inhalt) in einem separaten Puffer sehe. Wie beim Lesen einer PDF-Datei befindet sich links ein Inhaltsverzeichnis. (siehe unten)
Im org-Modus ist es möglich, die Gliederung zu erweitern / zu reduzieren. Ist es jedoch möglich, einen statischen Umriss links (oder rechts) in einem separaten Puffer zu haben, sodass der andere Puffer an diese Position verschoben wird, wenn Sie auf die Überschriften klicken?
Irgendwie gefällt das aber für den Org-Modus?
[Bearbeiten]
Das clone-indirect-buffer
ist sehr nah an dem was ich will. Das fehlende Teil des Puzzles ist, zum selben Ort zu springen, wenn Sie auf eine Überschrift / (oder einen beliebigen Punkt) klicken.
Dazu habe ich versucht, einen Code zu schreiben: In einen anderen geklonten Puffer an den gleichen Punkt verschieben? (Position der indirekten Puffer synchronisieren) (org-mode)
Es funktioniert jedoch nicht, wenn der Inhalt reduziert ist. Wenn das funktioniert, ist der Clone-Inderect-Buffer eine vollständige Lösung für dieses Problem.
[Edit2 Solution]
Der Code im Link oben und in der Antwort unten kombiniert nett, um das Hin und Her zu lösen.
;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
zum Beispiel eine Funktion, die aber nicht zu existieren scheint.
C-c C-x b
oderorg-tree-to-indirect-buffer
.