代码之家  ›  专栏  ›  技术社区  ›  Tom Dunham

如何设置Emacs窗口的大小?

  •  99
  • Tom Dunham  · 技术社区  · 16 年前

    我试图检测我正在启动的Emacs屏幕的大小,并相应地调整它正在启动的窗口的大小和位置(我猜这就是Emacs中的框架)。我正在尝试设置.emacs,这样我总能得到一个“相当大”的窗口,它位于屏幕左上角,靠近屏幕左上角。

    我想这是 大的 问一下一般情况,为了缩小范围,我对Windows和(Debian)Linux上的GNUEmacs22最感兴趣。

    10 回复  |  直到 16 年前
        1
  •  85
  •   Community Nick Bolton    7 年前

    如果要根据分辨率更改大小,可以这样做(根据您的特定需要调整首选宽度和分辨率):

    (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)
    

    请注意,Windows系统在较新版本的Emacs中已被弃用。合适的替代品是 (display-graphic-p) . 见 this answer 对这个问题 How to detect that emacs is in terminal-mode? 为了更多的背景。

        2
  •  47
  •   Charles Duffy    16 年前

    我有以下内容 .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 )提出详细的文件。

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

        3
  •  21
  •   Justin    16 年前

    取自: 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的原始帧是件好事。

        4
  •  16
  •   JB.    16 年前

    在X窗口环境中,我发现最简单的方法是通过 X resources . .xdefaults的相关部分如下所示:

    Emacs.geometry: 80x70
    

    您应该能够在它后面加上+0+0位置坐标,以强制它位于显示器的左上角。(我不这样做的原因是我偶然产生了新的帧,如果它们出现在与前一帧完全相同的位置,就会使事情变得混乱)

    根据手册, this technique works on MS Windows too ,将资源存储为注册表中的键/值对。我从来没有测试过。与简单地编辑一个文件相比,这可能是一个很大的不便。

        5
  •  15
  •   jonsca    12 年前

    尝试将以下代码添加到 .emacs

    (add-to-list 'default-frame-alist '(height . 24))
    
    (add-to-list 'default-frame-alist '(width . 80)) 
    
        6
  •  12
  •   Graeme Perrow    16 年前

    启动Emacs时还可以使用-geometry参数: emacs -geometry 80x60+20+30 将为您提供一个80个字符宽、60行高的窗口,左上角向右为20个像素,左上角向下为30个像素。

        7
  •  7
  •   ftravers    13 年前

    关于Ubuntu DO:

    (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)
    
        8
  •  5
  •   Jérôme Radix    14 年前

    在Windows上,可以使用此函数使Emacs帧最大化:

    (defun w32-maximize-frame ()
      "Maximize the current frame"
      (interactive)
      (w32-send-sys-command 61488))
    
        9
  •  1
  •   N.N. dan_paul    13 年前
    (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))
    
        10
  •  0
  •   WisdomFusion    12 年前
    (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)
    

    我喜欢布莱恩·奥克利的环境。然而 身高 在我的GNU Emacs 24.1.1中无法正常工作。