我如何设置Emacs窗口的大小?

我试图检测我启动emacs的屏幕大小,并resize和位置的窗口开始(我猜这是在emacs说的框架)相应地。 我试图设置我的.emacs,这样我总是会在屏幕左上angular附近的左上angular出现一个“相当大”的窗口。

我想这是一个普遍的例子,所以为了缩小这个问题,我最感兴趣的是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中已被弃用。 一个合适的replace是(display-graphic-p) 。 看到这个问题的答案 如何检测emacs是在terminal模式? 多一点背景。

我的.emacs有以下内容:

 (if (window-system) (set-frame-height (selected-frame) 60)) 

你也可以看看函数set-frame-sizeset-frame-positionset-frame-width 。 使用Ch f (aka Mx describe-function )来创build详细的文档。

我不知道是否有方法来计算当前窗口环境中的帧的最大高度/宽度。

取自: 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框架,包括当您启动时popup的第一个框架。 第二个设置为第一个框架添加了附加属性。 这是因为知道启动emacs的原始框架有时是很好的。

我在X-Window环境中发现的最简单的方法是通过X资源 。 我的.Xdefaults的相关部分如下所示:

 Emacs.geometry: 80x70 

你应该能够以+ 0 + 0的位置坐标作为后缀来强制它到你的显示器的左上angular。 (我不这样做的原因是偶尔会产生新的框架,如果它们出现在与前一个框架完全相同的位置,就会让人感到困惑)

根据手册, 这种技术也适用于MS Windows ,将资源作为键/值对存储在registry中。 我从来没有testing过。 这可能是伟大的,与简单编辑一个文件相比,这可能更加不便。

尝试将以下代码添加到.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行高的窗口,左上angular20像素,右上angular30像素背景的左上angular。

在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)) 
 (setq initial-frame-alist (append '((width . 263) (height . 112) (top . -5) (left . 5) (font . "4.System VIO")) initial-frame-alist)) (setq default-frame-alist (append '((width . 263) (height . 112) (top . -5) (left . 5) (font . "4.System VIO")) default-frame-alist)) 
 (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) 

我更喜欢Bryan Oakley的设置。 然而,在我的GNU Emacs 24.1.1中, “高度不能正常工作。