这让我发疯了:我只是想让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建议的工作版本).
Mic*_*nis 25
我找到了一年左右的答案,这解释了你必须操纵注册表来做正确的事情:
要启动Emacs最大化,请将此行放在〜/ .emacs文件的末尾:
(w32-send-sys-command 61488)
Run Code Online (Sandbox Code Playgroud)
如果您不想使用Emacs工具栏,可以在〜/ .emacs文件中添加行(工具栏模式-1) [注意:原始页面上的值为0],但Emacs不会完全最大化case - 工具栏占用的房地产丢失.您必须禁用注册表中的工具栏才能将其恢复:
[HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs\Emacs.Toolbar]
@="0"
Run Code Online (Sandbox Code Playgroud)
如果您在EmacsWiki下看W32SendSys命令代码,你会发现,61488
是最大限度地提高当前帧
小智 12
这是对我有用的最简单的修复:
(w32-send-sys-command #xf030)
(add-hook 'window-setup-hook (lambda () (tool-bar-mode -1)))
Run Code Online (Sandbox Code Playgroud)
yPh*_*hil 11
伙计,有什么不对
emacs -mm
?
这使Emacs完全最大化.把它放在你的快捷方式中,它实际上取决于你使用的窗口管理器; 我自己只是在我的.*shrc中将其别名.
在一个不同但不相关的说明中,我实际上以一种方式启动Emacs,如果它已经启动,则所选文件只是在我现有的Emacs会话中作为新缓冲区打开:
if [ "$(pidof emacs)" ] ; then
emacsclient "$@"
else
emacs -mm "$@"
fi
Run Code Online (Sandbox Code Playgroud)
我输入了〜/ bin/e,我只用"e"启动Emacs.我右键单击文件管理器中的文本文件,选择"用另一个程序打开"并输入"e",现在我只需双击文件,它们都在同一个会话中整齐地打开.
一切都是桃子和lispy :)
小智 10
在X.org上,系统调用是(因为您最初询问的是跨平台解决方案):
(defun x11-maximize-frame ()
"Maximize the current frame (to full screen)"
(interactive)
(x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))
(x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0)))
这可靠地适用于Emacs 24.5.1 (i686-pc-mingw32)
:
(add-to-list 'initial-frame-alist '(fullscreen . maximized))
Run Code Online (Sandbox Code Playgroud)