Dividindo uma janela do Emacs em um novo quadro

Dividindo uma janela do Emacs em um novo quadro

De um quadroprimeiro quadrocontendo duas janelas Emacs,ganha-umexibindo bufferbuf-umevitória-doisexibindobuf-dois, eu gostaria de poder 'quebrar'vitória-doisem seu próprio quadro, talvez usando um clique modificador na modeline. Depois disto,

  • ambosganha-umevitória-doismanteriam suas associações individuais de altura/largura e buffer que tinham quando emprimeiro quadro
  • ganha-umficaria no mesmoprimeiro quadro, evitória-doisestaria agora em um novo e separadosegundo quadro
  • a posição original, as configurações de cor e fonte seriam mantidas sempre que possível

Eu queria saber se esse comportamento estava disponível em algum lugar da biblioteca padrão, se havia uma extensão para ele ou talvez se uma pequena função elisp funcionaria?

Responder1

Sim, existe esse comando: mouse-tear-off-window. Eu ligo-o C-mouse-1na linha de modo:

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

O comando está disponível no vanilla Emacs ( emacs -Q). Mas eu uso minha própria versão, que não exclui a janela se ela estiver sozinha em sua moldura. Em vez disso, ele clona o quadro e a janela. Essa versão está na bibliotecamouse+.el. Sequência de documento:

,----
| 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.
`----

Responder2

Esta é uma ligação padrão:

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

O que faz: Exibir buffer BUFFER em outro quadro.

Responder3

Você pode usar:

M-x new-frame

Eu liguei para F9, por exemplo:

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

informação relacionada