在Windows 8.1上启动时最大化GNU Emacs

在Windows 8.1上启动时最大化GNU Emacs,emacs,elisp,Emacs,Elisp,我正在64位Windows 8.1操作系统上运行64位GNU Emacs版本25.0.50.1 将以下内容添加到my.emacs中不会起任何作用: (w32-send-sys-command 61488) 然而,类似于: (global-set-key [(f4)] (function (lambda () "Maximize frame" (interactive) (w32-send-sys-command 61488)))) 完美地工作;i、 e.每当按下F4时,最大化Emacs。然而

我正在64位Windows 8.1操作系统上运行64位GNU Emacs版本25.0.50.1

将以下内容添加到my.emacs中不会起任何作用:

(w32-send-sys-command 61488)
然而,类似于:

(global-set-key [(f4)] (function (lambda () "Maximize frame" (interactive) (w32-send-sys-command 61488))))

完美地工作;i、 e.每当按下F4时,最大化Emacs。然而,我不想非得按F4键才能做到这一点——我希望它在启动时自动完成。为什么第一行不起作用?即使它是my.emacs中的唯一一行,它也不起作用?

在版本24发布前后的某个时候,emacs添加了一个本机函数“最大化切换帧”(toggle frame maximized)。这个函数不接受任何参数,但是由于Emacs的默认状态,它有一个非最大化的框架,在我的Linux系统上只需添加

(toggle-frame-maximized)
对我来说,初始化使Emacs启动最大化

据我所知,这也适用于Windows。

这适用于我:

(defun maximize-frame ()
"Maximize the current frame"
 (interactive)
 (w32-send-sys-command 61488))


(defun post-load-stuff ()
  (interactive)
  (maximize-frame)
)
(add-hook 'window-setup-hook 'post-load-stuff t)

您是否尝试过将第一个示例放置在.emacs文件的最末尾,或者可能将其放置在after init hook的末尾,也就是说,在尝试最大化帧之前,给emacs一个完全加载的机会?在我自己的Windows设置中,我通过高度显示像素高度和宽度显示像素宽度来检测显示器的大小,然后使用set frame position frame 0 set frame size frame 1890 1003 t-精确像素的数字取决于我使用的计算机-我花时间查找精确设置并将其硬连线。注意:上面示例中的let bound变量frame在我的设置中预定义为所选帧。我还检测到Windows版本:相等的w32版本'5 1 2600和相等的w32版本'6 1 7601您的版本将不同,但w32版本将告诉您列表中的等效版本。而且,我在计算机系统之间切换,所以我使用eq系统类型“windows nt和eq系统类型”darwin@lawlist:如我所说,即使在我的.emacs中单独使用w32发送sys命令61488,也没有任何效果@克里斯的解决方案完美无瑕,效果很好。非常感谢,节日快乐!为了记录在案,我正在从MSYS2运行GNU Emacs的Git构建: