Dividir una ventana de Emacs en un nuevo marco

Dividir una ventana de Emacs en un nuevo marco

desde un marcoprimer fotogramaque contiene dos ventanas de Emacs,ganar unomostrando bufferbuf-unoyganar dosmostrandobuf-dos, me gustaría poder 'romper'ganar dosen su propio marco, tal vez usando un clic modificador en la línea del modelo. Después de este,

  • ambosganar unoyganar dosconservarían sus asociaciones individuales de altura/ancho y amortiguación que tenían cuando estaban enprimer fotograma
  • ganar unopermanecería en el mismoprimer fotograma, yganar dosahora estaría en un nuevo y separadosegundo fotograma
  • La configuración original de posición, color y fuente se conservará siempre que sea posible.

Me preguntaba si este comportamiento estaba disponible en algún lugar de la biblioteca estándar, si había una extensión para él o tal vez si una pequeña función elisp funcionaría.

Respuesta1

Sí, existe tal comando: mouse-tear-off-window. Lo vinculo C-mouse-1a la línea de modo:

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

El comando está disponible en Vanilla Emacs ( emacs -Q). Pero uso mi propia versión, que no elimina la ventana si está sola en su marco. En cambio, clona el marco y la ventana. Esa versión está en la biblioteca.ratón+.el. Cadena 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.
`----

Respuesta2

Este es un enlace predeterminado:

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

Lo que hace: Mostrar el búfer BUFFER en otro cuadro.

Respuesta3

Puedes usar:

M-x new-frame

Lo he vinculado a F9, por ejemplo:

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

información relacionada