以编程方式设置Emacs框架大小

28

我的emacs(在Windows上)总是以固定的大小启动,而且如果我调整大小,它下次启动时不会“记住”调整后的大小。

我一直在尝试以下方法:

(set-frame-position (selected-frame) 200 2) ; pixels x y from upper left
(set-frame-size (selected-frame) 110 58) ; rows and columns w h

在临时缓冲区中执行时它完全有效。我将它放到了我的.emacs文件中,虽然现在当我启动程序时,我可以看到框架暂时设置为那个大小,但是到*scratch*加载的时候,它会重新设置回小的默认值。

有人能帮我修复上面的代码,以便在启动时“固定”它吗?


请参考以下问题:如何设置emacs窗口的大小? - Chris Conway
6个回答

40

以下是我在 ~/.emacs中使用的:

(add-to-list 'default-frame-alist '(left . 0))
(add-to-list 'default-frame-alist '(top . 0))
(add-to-list 'default-frame-alist '(height . 50))
(add-to-list 'default-frame-alist '(width . 155))

2
我之前放弃了解决这个问题,使用你的代码最终解决了它 :) - Rene Saarsoo
2
(setq default-frame-alist '((left . 0) (top . 0) (height . 65) (width . 100))) - Paul

4
(setq initial-frame-alist '(
            (top . 40) (left . 10)
            (width . 128) (height . 68)
            )
  )

3

3

之前发布的解决方案都无法解决我的调整大小问题,因此我想分享一个额外的解决方案:在启动时,Emacs 23 使用某种字体,然后切换到用户定义的字体;因此,如果这个字体很大,Emacs 也会缩小窗口以适应屏幕。然后,应用用户字体,窗口可能比用户所需的更小。因此,在我的~/.Xresource中添加以下内容解决了这个问题:

Emacs.font: -*-fixed-*-*-*-*-8-*-*-*-*-*-*-*
Emacs.pane.menubar.*.fontList: 8x16
Emacs.menu*.fontList:         -*-fixed-*-*-*-*-8-*-*-*-*-*-*-*
Emacs.dialog*.fontList:        -*-fixed-*-*-*-*-8-*-*-*-*-*-*-*

这将使Emacs在启动期间使用小字体,以便其窗口不会太大或被截断。当然,您可能希望在此处或在Emacs init文件中自定义所需的字体。


2
在Emacs 19和21之间,我曾经有一个完美运行的.emacs文件,可以通过区分默认框架和初始框架来实现您正在寻找的功能。
  (setq default-frame-alist '((foreground-color . "LightGray")
                  (background-color . "Black")
                  (cursor-color . "Medium Sea Green")
                  (width . 80)
                  (height . 36)
                  (menu-bar-lines . 1)
                  (vertical-scroll-bars . right)))

并且

  (setq initial-frame-alist
                (cons '(width . 96)
                      (cons '(height . 72)
                        (cons '(menu-bar-lines . 1)
                          initial-frame-alist))))

很遗憾,当我“升级”到Emacs 23.2后,上述方法不再完全适用。 Emacs不是我的职业。 我把它作为一种工具使用,所以我不能花太多时间去深入理解原因。 因此,我通过向Emacs Windows XP快捷方式添加“-geometry 96x72”来解决问题。 因此,快捷方式的目标现在如下:

C:\emacs-23.2\bin\runemacs.exe -geometry 96x72

1

对于 Windows 上的 Emacs,我通常将其放在注册表中。

HKCU\Software\GNU\Emacs\
    Emacs.Geometry REG_SZ "245x74"

(这样可以避免将机器本地设置放入我的.emacs文件中,我要与许多其他机器共享该文件...)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接