将 Emacs 窗口拆分到新框架中

将 Emacs 窗口拆分到新框架中

从框架来看第一帧包含两个 Emacs 窗口,赢一显示缓冲区缓冲区一双赢显示缓冲区二,我希望能够“打破”双赢将其关闭到其自己的框架中,也许可以使用模式行上的修饰键单击。在此之后,

  • 两个都赢一双赢将保留它们各自的高度/宽度和缓冲区关联,当第一帧
  • 赢一会保持原样第一帧, 和双赢现在将处于一个新的、独立的第二帧
  • 尽可能保留原始位置、颜色和字体设置

我想知道这种行为是否在标准库的某个地方可用,是否有它的扩展,或者一个小的 elisp 函数是否可以起作用?

答案1

是的,有这样的命令: 。我在模式行上将mouse-tear-off-window其绑定到:C-mouse-1

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

该命令在 vanilla Emacs ( ) 中可用emacs -Q。但我使用自己的版本,如果窗口单独位于其框架中,则不会删除该窗口。相反,它会克隆框架和窗口。该版本位于库中鼠标+.el. 文档字符串:

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

答案2

这是一个默认绑定:

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

其作用是:在另一帧中显示缓冲区BUFFER。

答案3

您可以使用:

M-x new-frame

我已将其绑定到F9,例如:

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

相关内容