Aufteilen eines Emacs-Fensters in einen neuen Rahmen

Aufteilen eines Emacs-Fensters in einen neuen Rahmen

Aus einem Rahmenerstes Bildmit zwei Emacs-Fenstern,gewinne-einsAnzeigepufferbuf-oneUndSieg-zweiAnzeigebuf-zwei, ich möchte in der Lage sein, zu "brechen"Sieg-zweiin einen eigenen Rahmen verschoben, vielleicht durch einen Modifier-Klick auf die Modeline. Danach

  • beidegewinne-einsUndSieg-zweiwürden ihre individuellen Höhen-/Breiten- und Pufferzuordnungen beibehalten, die sie hatten, als sie inerstes Bild
  • gewinne-einswürde im selbenerstes Bild, UndSieg-zweiwürde nun in einer neuen, separatenzweites Bild
  • Originalposition, Farbe und Schrifteinstellungen würden soweit möglich beibehalten

Ich habe mich gefragt, ob dieses Verhalten irgendwo in der Standardbibliothek verfügbar ist, ob es eine Erweiterung dafür gibt oder ob vielleicht eine kleine Elisp-Funktion funktionieren würde?

Antwort1

Ja, es gibt einen solchen Befehl: mouse-tear-off-window. Ich binde ihn an C-mouse-1die Moduszeile:

(global-set-key [mode-line C-mouse-1] 'mouse-tear-off-window)

Der Befehl ist im Standard-Emacs ( emacs -Q) verfügbar. Ich verwende jedoch meine eigene Version davon, die das Fenster nicht löscht, wenn es allein in seinem Rahmen steht. Stattdessen klont sie den Rahmen und das Fenster. Diese Version befindet sich in der BibliothekMaus+.el. Doc-Zeichenfolge:

,----
| mouse-tear-off-window is an interactive compiled Lisp function in
| `mouse+.el'.
| 
| It is bound to mode-line C-mouse-1.
| 
| (mouse-tear-off-window EVENT)
| 
| Create a new frame displaying buffer of window clicked on.
| If window is not the only one in frame, then delete it.
| Otherwise, this command effectively clones the frame and window.
`----

Antwort2

Dies ist eine Standardbindung:

C-x 5 C-o : display-buffer-other-frame

Was bedeutet: Puffer BUFFER in einem anderen Frame anzeigen.

Antwort3

Sie können verwenden:

M-x new-frame

F9Ich habe es zum Beispiel an Folgendes gebunden :

(global-set-key (kbd "<f9>") 'new-frame)

verwandte Informationen