Changer l'orientation de la fenêtre divisée, le moyen le plus rapide


16

Supposons que vous ayez deux tampons ouverts comme suit:

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

Quel est le moyen le plus rapide de changer les tampons pour obtenir ceci:

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

stackoverflow.com/a/10546694 . bibliothèque transpose-frame. Avertissement - je ne l'ai pas essayé.
Faheem Mitha

Il y a une page wiki sur ce sujet: emacswiki.org/emacs/ToggleWindowSplit
Chris Martin

Voir emacs.stackexchange.com/q/5371 ; en particulier une réponse mentionne transpose-frameMELPA.
TooTone

Réponses:


15

Voici un defun qui ferait ce que vous cherchez:

(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))))))

( Copie sans vergogne de Magnars .emacs.d )

De plus, si vous l'appelez à nouveau, il divisera à nouveau vos fenêtres dans l'orientation verticale d'origine.


Ce serait bien si cela pouvait préserver la relation de taille relative des deux fenêtres. Je garde souvent une fenêtre "courte" inégale en bas, et lors des allers-retours, il serait utile de conserver cette taille relative. Bien qu'une fenêtre verticale étroite soit probablement moins utile.
b4hand

1
Je ne peux pas vous dire combien de fois j'utilise ceci. Tellement utile.
Edgar Aroutiounian
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.