我正在尝试检测我正在启动emacs的屏幕大小,并相应地调整它开始的窗口的大小和位置(我猜这是emacs中的框架).我正在尝试设置我的.emacs,以便我总是得到一个"相当大"的窗口,它的左上角靠近屏幕的左上角.
我想这对于一般情况来说是一个很大的问题,所以为了缩小范围,我对Windows和(Debian)Linux上的GNU Emacs 22最感兴趣.
如果要根据分辨率更改大小,可以执行以下操作(根据您的特定需要调整首选宽度和分辨率):
(defun set-frame-size-according-to-resolution () (interactive) (if window-system (progn ;; use 120 char wide window for largeish displays ;; and smaller 80 column windows for smaller displays ;; pick whatever numbers make sense for you (if (> (x-display-pixel-width) 1280) (add-to-list 'default-frame-alist (cons 'width 120)) (add-to-list 'default-frame-alist (cons 'width 80))) ;; for the height, subtract a couple hundred pixels ;; from the screen height (for panels, menubars and ;; whatnot), then divide by the height of a char to ;; get the height we want (add-to-list 'default-frame-alist (cons 'height (/ (- (x-display-pixel-height) 200) (frame-char-height))))))) (set-frame-size-according-to-resolution)
请注意,在较新版本的emacs中不推荐使用window-system.合适的替代品是(display-graphic-p)
.见这个答案的问题如何检测Emacs是在终端模式?多一点背景.
我有以下内容.emacs
:
(if (window-system) (set-frame-height (selected-frame) 60))
你也可以看看的功能set-frame-size
,set-frame-position
和set-frame-width
.使用C-h f
(又名M-x describe-function
)来提供详细的文档.
我不确定是否有办法计算当前窗口环境中帧的最大高度/宽度.
摘自:http://www.gnu.org/software/emacs/windows/old/faq4.html
(setq default-frame-alist '((top . 200) (left . 400) (width . 80) (height . 40) (cursor-color . "white") (cursor-type . box) (foreground-color . "yellow") (background-color . "black") (font . "-*-Courier-normal-r-*-*-13-*-*-*-c-*-iso8859-1"))) (setq initial-frame-alist '((top . 10) (left . 30)))
第一个设置适用于所有emacs帧,包括您启动时弹出的第一个.第二个设置将附加属性添加到第一帧.这是因为有时很高兴知道你启动emacs的原始帧.
我发现在X-Window环境中这样做的最简单方法是通过X资源.我的.Xdefaults的相关部分如下所示:
Emacs.geometry: 80x70
您应该能够使用+ 0 + 0位置坐标对其进行后缀,以强制它显示在显示屏的左上角.(我不这样做的原因是我偶尔会产生新的帧,如果它们出现在与前一帧完全相同的位置,会让人感到困惑)
根据手册,此技术也适用于MS Windows,将资源作为键/值对存储在注册表中.我从来没有测试过.它可能很棒,与简单编辑文件相比,它可能更不方便.
尝试添加以下代码 .emacs
(add-to-list 'default-frame-alist '(height . 24)) (add-to-list 'default-frame-alist '(width . 80))
您还可以在启动emacs时使用-geometry参数:emacs -geometry 80x60+20+30
将为您提供一个宽80行,高60行的窗口,左上角为右侧20像素,距离背景左上角30像素.
在ubuntu上:
(defun toggle-fullscreen () (interactive) (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0)) (x-send-client-message nil 0 nil "_NET_WM_STATE" 32 '(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0)) ) (toggle-fullscreen)
在Windows上,您可以使用此功能使emacs框架最大化:
(defun w32-maximize-frame () "Maximize the current frame" (interactive) (w32-send-sys-command 61488))