我如何设置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-size
, set-frame-position
和set-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中, “高度不能正常工作。