Quero fechar todas as minhas janelas, exceto a atual, e maximizar o quadro para que eu possa ver rapidamente tudo no buffer dessa janela e depois reverter para a configuração anterior da janela. Como eu faria isso?
Quero fechar todas as minhas janelas, exceto a atual, e maximizar o quadro para que eu possa ver rapidamente tudo no buffer dessa janela e depois reverter para a configuração anterior da janela. Como eu faria isso?
Respostas:
As diferentes seções do texto que você vê no seu Emacs são janelas . Você pode, por exemplo, criar uma nova janela com C-x 2
. Sim, essa terminologia é confusa. Ele é anterior à maioria dos sistemas de GUI, portanto é compreensível, ainda que confuso.
Mas uma vez que sabemos que estamos falando de janelas, podemos fazer as alterações desejadas. Para se livrar de todas as janelas, exceto aquela em que o ponto está, execute C-x 1
, mapeado para delete-other-windows
.
Então, voltando ao que você tinha antes, há uma biblioteca bastante útil chamada modo vencedor . Permite desfazer e refazer alterações na configuração da janela.
Portanto, ative o modo vencedor com M-x winner-mode
e, depois que você ligar C-x 1
, pressione C-c left
para desfazer a alteração na configuração da janela, restaurando as janelas para o que eram.
Se você deseja habilitar permanentemente o modo vencedor, insira (winner-mode)
seu arquivo init.
O uso winner-mode
é útil, mas se você realmente quiser alternar entre uma janela e uma configuração de várias janelas, eis uma coisa que eu usei antes:
(defvar window-split-saved-config nil)
(defun window-split-toggle-one-window ()
"Make the current window fill the frame.
If there is only one window try reverting to the most recently saved
window configuration."
(interactive)
(if (and window-split-saved-config (not (window-parent)))
(set-window-configuration window-split-saved-config)
(setq window-split-saved-config (current-window-configuration))
(delete-other-windows)))
Você pode vincular isso a, por exemplo, C-x 1
e usar a mesma chave para alternar os estados.
Eu uso o seguinte, copiado da web. É uma maneira rápida de deixar sua configuração atual da janela. Depois de terminar, use exit-recursive-edit
para voltar.
;; http://www.emacswiki.org/emacs/RecursiveEditPreservingWindowConfig
;; inspired by Erik Naggum's `recursive-edit-with-single-window'
(defmacro recursive-edit-preserving-window-config (body)
"*Return a command that enters a recursive edit after executing BODY.
Upon exiting the recursive edit (with\\[exit-recursive-edit] (exit)
or \\[abort-recursive-edit] (abort)), restore window configuration
in current frame."
`(lambda ()
"See the documentation for `recursive-edit-preserving-window-config'."
(interactive)
(save-window-excursion
,body
(recursive-edit))))
(global-set-key (kbd "C-c 0") (recursive-edit-preserving-window-config (delete-window)))
(global-set-key (kbd "C-c 1") (recursive-edit-preserving-window-config
(if (one-window-p 'ignore-minibuffer)
(error "Current window is the only window in its frame")
(delete-other-windows))))