这让我发疯了:我只是想让Emacs最大化到启动时的屏幕分辨率.理想情况下,我喜欢适用于任何屏幕分辨率的跨平台(Windows和Linux)解决方案,但我甚至无法使用甚至硬编码大小的Window XP.
这是我尝试过的:
(w32-send-sys-command 61488)尝试了我在某处发现的这个功能:
(defun toggle-fullscreen ()
"toggles whether the currently selected frame consumes the entire display
or is decorated with a window border"
(interactive)
(let ((f (selected-frame)))
(modify-frame-parameters
f
`((fullscreen . ,(if (eq nil (frame-parameter f 'fullscreen))
'fullboth
nil))))))
Run Code Online (Sandbox Code Playgroud)不幸的是,以上都没有!对于上面的一些,我可以看到我的emacs窗口在一瞬间正确调整大小,然后恢复到较小的默认大小.如果我在初始化后运行上面的方法,emacs窗口会正确调整大小.世界上到底发生了什么?
[ps还有其他SO问题,但没有一个答案有效]
更新:
答案让我觉得我的init文件中的其他东西导致了问题.确实是这样!经过一些尝试和错误,我找到了罪魁祸首.如果我注释掉以下行,一切都很完美:
(tool-bar-mode -1)
Run Code Online (Sandbox Code Playgroud)
工具栏与最大化窗口有什么关系?
所以现在的问题是:如何禁用工具栏(毕竟,emacs的工具栏很丑陋,占用了宝贵的屏幕空间)并且在我的init文件中最大化了窗口?可能是工具栏干扰窗口大小的错误?
澄清:(工具栏模式-1)关闭工具栏,但此行干扰最大化Emacs窗口.因此,如果我尝试将函数放到最大化窗口并关闭工具栏,则最大化部分将失败; 如果工具栏部分已注释掉,则最大化部分将正常工作.它甚至不重要我使用什么解决方案(在我列出的4个中).
解决方案:(或者至少现在对我有用)
这可能是Emacs中的一个错误.解决方法是通过注册表禁用工具栏,而不是.emacs.将以下内容另存为.reg文件,并在Windows资源管理器中执行该文件:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\GNU\Emacs]
"Emacs.Toolbar"="-1"
Run Code Online (Sandbox Code Playgroud)
(此解决方案是OtherMichael建议的工作版本).
在Emacs启动以最大化窗口之后,按下alt-f10(在GNU/Linux中)是很常见的(在Emacs术语中,它实际上是一个帧).我大部分时间都按三次因为我太早了按第一个alt-f10,这会使迷你缓冲区周围出现一些垃圾(Emacs显示bug?)
我该如何自动化这个呢?(也许使用Gnome设置或使用elisp?)
我正在使用emacs24(来自bzr repo).
请注意,这不是我想要的常规全屏,按f11即可获得.