Wechseln Sie auf schnellste Weise die Fensterausrichtung

16

Angenommen, Sie haben zwei Puffer wie folgt geöffnet:

------------------------------------
            |                      |
  buffer 1  |        buffer 2      |       
            |                      |
------------------------------------

Was ist der schnellste Weg, um die Puffer so zu vertauschen, dass Sie folgendes erhalten:

------------------------------------
           buffer 1                |
                                   |
------------------------------------
            buffer 2               |
                                   |
------------------------------------
Edgar Aroutiounian
quelle
stackoverflow.com/a/10546694 . transponierte Rahmenbibliothek. Haftungsausschluss - habe es nicht ausprobiert.
Faheem Mitha
Es gibt eine Wiki-Seite zu diesem Thema: emacswiki.org/emacs/ToggleWindowSplit
Chris Martin
Siehe emacs.stackexchange.com/q/5371 ; Insbesondere erwähnt eine Antwort transpose-frameMELPA.
TooTone

Antworten:

15

Hier ist ein Defun, der genau das macht, wonach Sie suchen:

(defun toggle-window-split ()
  (interactive)
  (if (= (count-windows) 2)
      (let* ((this-win-buffer (window-buffer))
             (next-win-buffer (window-buffer (next-window)))
             (this-win-edges (window-edges (selected-window)))
             (next-win-edges (window-edges (next-window)))
             (this-win-2nd (not (and (<= (car this-win-edges)
                                         (car next-win-edges))
                                     (<= (cadr this-win-edges)
                                         (cadr next-win-edges)))))
             (splitter
              (if (= (car this-win-edges)
                     (car (window-edges (next-window))))
                  'split-window-horizontally
                'split-window-vertically)))
        (delete-other-windows)
        (let ((first-win (selected-window)))
          (funcall splitter)
          (if this-win-2nd (other-window 1))
          (set-window-buffer (selected-window) this-win-buffer)
          (set-window-buffer (next-window) next-win-buffer)
          (select-window first-win)
          (if this-win-2nd (other-window 1))))))

(Schamlos aus Magnars .emacs.d kopiert )

Wenn Sie es erneut aufrufen, werden Ihre Fenster in der ursprünglichen vertikalen Ausrichtung geteilt.

waymondo
quelle
Es wäre schön, wenn dadurch das relative Größenverhältnis der beiden Fenster erhalten würde. Ich behalte oft ein unebenes "kurzes" Fenster am unteren Rand, und beim Hin- und Herwechseln wäre es hilfreich, diese relative Größe beizubehalten. Obwohl ein schmales vertikales Fenster wahrscheinlich weniger nützlich ist.
b4hand
1
Ich kann dir nicht sagen, wie oft ich das benutze. So hilfreich.
Edgar Aroutiounian