是否可以将emacs迷你缓冲区移动到屏幕顶部?

时间:2010-06-16 00:28:37

标签: emacs

我已开始在30英寸显示器上编码,我想知道是否可以将迷你缓冲区移到emacs的屏幕顶部?谷歌搜索没有显示任何内容。

干杯 Nimai Etheridge

3 个答案:

答案 0 :(得分:9)

查看default-minibuffer-frameinitial-frame-alist变量的文档。听起来你可以为你的迷你缓冲区(你可以在屏幕的顶部放置一个单独的框架),然后生成利用它的迷你无框架。

请注意,在initial-frame-alist中,它指出“如果值要求没有迷你缓冲区的帧,并且您没有自己创建迷你缓冲帧,则会根据minibuffer-frame-alist创建迷你缓冲帧“,这听起来就像是需要的。

有一些方法可以保存和恢复帧配置,所以如果这样可行,你可以在emacs启动时自动重新创建布局。

编辑:
以下是使用此框架排列的非常基本的示例/概念验证。在删除使用它的帧之前,不能删除迷你缓冲帧。当你做最大化编辑器框架之类的事情时,你会遇到麻烦,所以当然有一些工作要做,试图让这个系统以更加无缝的方式工作。

(setq default-minibuffer-frame
      (make-frame
       '((name . "minibuffer")
         (width . 80)
         (height . 1)
         (minibuffer . only)
         (top . 0)
         (left . 0)
         )))
(setq new-frame
      (make-frame
       '((name . "editor")
         (width . 80)
         (height . 30)
         (minibuffer . nil)
         (top . 50)
         (left . 0)
         )))

当然,您也可以将此与scottfrazer将模式线移动到顶部的方法结合起来。

这可以在window-setup-hook

中处理

您还应该查看内置的frame.el和dframe.el库。像dframe-reposition-frame这样的函数可以提供一种方便的方法来将迷你缓冲帧“连接”到活动编辑框的顶部。

变量minibuffer-auto-raise也可以配置为在迷你缓冲区被激活时提升迷你缓冲帧,这可以减少在其余时间让它显示的需要。

答案 1 :(得分:8)

我很确定你不能移动迷你缓冲器本身,但是你可以将模式线放在最上面:

(setq-default header-line-format mode-line-format) ; Copy mode-line
(setq-default mode-line-format nil) ; Remove mode-line

这将覆盖使用标题行的Info之类的内容,但它可能会在没有黑客攻击C源的情况下尽可能接近。

答案 2 :(得分:2)

使用独立的迷你缓冲框架。这说明了:

http://www.emacswiki.org/emacs/Dedicated_Minibuffer_Frame

http://www.emacswiki.org/emacs/oneonone.el

要么查看该代码以获得想法,要么直接使用它。您只需自定义迷你缓冲帧位置设置:

  • 1on1-minibuffer-frame-left - 迷你缓冲帧左边缘的位置,以像素为单位。

  • 1on1-minibuffer-frame-top/bottom - 迷你缓冲框架顶部(或底部)的位置(以像素为单位)。