Como alterar as janelas do Emacs de divisão vertical para divisão horizontal?

26
Window A
++++++++
Window B

Existe uma maneira de mudar para

Window A : Window B

Existe uma maneira de mudar de exibição sem fechar as janelas?

usuario
fonte
11
Com as telas grandes de hoje, por que alguém iria querer executar algo diferente de janelas lado a lado? Uso seis janelas espalhadas por duas monitorns - uso github.com/Lindydancer/multicolumn para configurar as janelas quando inicio o Emacs e configurei a maioria dos meus pacotes para reutilizar as janelas existentes.
Lindydancer

Respostas:

13

Aqui está uma função simples que alterna entre uma divisão horizontal e vertical. Ele assume que você só tem duas janelas e não redimensiona:

(defun window-split-toggle ()
  "Toggle between horizontal and vertical split with two windows."
  (interactive)
  (if (> (length (window-list)) 2)
      (error "Can't toggle with more than 2 windows!")
    (let ((func (if (window-full-height-p)
                    #'split-window-vertically
                  #'split-window-horizontally)))
      (delete-other-windows)
      (funcall func)
      (save-selected-window
        (other-window 1)
        (switch-to-buffer (other-buffer))))))
Dan
fonte
14

Como alternativa, existe um tranpose-framepacote no EmacsWiki que permitirá transpor todo o quadro, bem como realizar outras transformações (gire 180 graus; gire 90 graus no sentido horário ou anti-horário; gire horizontal ou verticalmente).

Dmitry
fonte
9

O transpose-framepacote também está disponível no MELPA .

Use M-x transpose-frameou vincule-o a algo para fazer isso.

salotz
fonte