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)
quelle
C-c C-x b
oderorg-tree-to-indirect-buffer
.org-sparse-tree-to-indirect-buffer
zum Beispiel eine Funktion, die aber nicht zu existieren scheint.Antworten:
Ein paar Optionen kommen in den Sinn. Die ersten beiden sind
speedbar
, was angeblich gut mitspieltorg-mode
, undminimap
obwohl ich sie nicht benutzt habe, kann ich nicht für sie persönlich bürgen.Die einfachste (und auch flexibelste) Möglichkeit wäre die Verwendung eines indirekten Puffers .
In der Praxis würden Sie zu dem
org
Puffer gehen, für den Sie eine Gliederung wünschen, drückenM-x clone-indirect-buffer
(verwendenC-u M-x clone-indirect-buffer
Sie, wenn Sie steuern möchten, wie der Klon heißt) und dann boom, es gibt eine weitere Kopie des Puffers, die Sie verwenden können. Legen Sie diesen Klon neben dem ursprünglichen Puffer in ein Fenster oder einen Rahmen und passen Sie den Umriss im Klon Ihren Wünschen an.Sie erhalten nicht die von Ihnen erwähnte Funktion "Überschrift anklicken", sondern den Geist der Seitenleiste.
Bearbeiten: Als Antwort auf Ihren Kommentar folgt ein einfacher Befehl, der beim Aufrufen aus dem Pufferklon in den Basispuffer wechselt und den Punkt dorthin verschiebt, wo sich der Cursor im Pufferklon befand:
quelle
Wie wäre es mit: M-x
occur
RET^*+
RET(Beachten Sie, dass am Ende des regulären Ausdrucks ein Leerzeichen steht).quelle
Nachdem ich Dans Antwort und Ihre darauf basierende Lösung gelesen habe, habe ich diese zusammengestellt. Es öffnet einen neuen, schmalen Nur-Lese-Klon links vom aktuellen Puffer und bindet
<mouse-1>
undRET
lokal im Klon, um an diese Position im Basispuffer zu springen.Dies funktioniert sowohl mit
outline-mode
undoutline-minor-mode
als auch mit darauf aufbauenden Modi wieorg-mode
. Ich habe einige Informationen zum Abrufen der lokalen Schlüsselkarten gefunden, weiß aber nicht, wie ich die zu kopierende auswählen soll. Es gibt auch diese Seite, die über eine Funktion verfügt, um automatisch pufferspezifische Nebenmodi zum Festlegen von lokalen Pufferschlüsseln zu erstellen. Dies scheint jedoch für dieses Problem nicht relevant zu sein.quelle
outline-mode-map
anstelle vonorg-mode-map
ich es geschafft, um es arbeiten fürAUCTeX
mitoutline-minor-mode
, was schön ist.outline-mode
Funktion deshide-body
versteckt übrigens alles außer Überschriften.outline-mode-map
und zu verwendenhide-body
, und ein paar kleinere Verbesserungen.Schließlich wurde dies in das Paket implementiert
org-sidebar
:quelle
Zwei Vorschläge für niedrige Mieten (was ich mache) von einem Nicht-Programmierer, der gerne Aquamacs für den Texteditor verwendet:
STARTUP: Einzug (um den Umriss des Wasserfalltyps als Ganzes besser sehen zu können)
Dies dient zur tabulatorgesteuerten Anzeige des Puffers
und
+ OPTIONEN: H: N, wobei N = = die Anzahl der Ebenen, die beim HTML-Export angezeigt werden sollen (Vorschlag 2)
Siehe: https://emacsclub.github.io/html/org_tutorial.html
quelle
Ich brauchte etwas Ähnliches, also habe ich den
outline-toc
Modus zusammengestellt . Es sollte für Dokumente im Organisationsmodus funktionieren.quelle