在OS X上的Emacs中设置`fullheight`和`width`

时间:2013-06-28 10:50:08

标签: emacs emacs24 dot-emacs

我发现Emacs框架的默认大小有点小。从阅读中我知道我可以很容易地设置高度和宽度,如下所示:

;;; 140 x 60 window size
(setq default-frame-alist '((width . 140) (height . 60)))

这在我的外接显示器上效果很好,但它对于笔记本电脑显示器来说太大了。我可以通过更改为以下内容来解决高度问题:

;;; automatically set the height
(setq default-frame-alist '((fullscreen . fullheight)))

将帧设置为当前屏幕尽可能高。但是,如果我使用此方法,则无法设置帧的宽度。将(width . 140)添加到上面的alist会将宽度设置为正确的值,但也会再次将高度设置为默认高度。

当我看到框架出现时,它将自己设置为整个高度,然后将宽度设置为我请求的值,并收缩高度。

我可以使用以下代码解决此问题:

;;; Full height for the default window
(setq default-frame-alist
      '((fullscreen . fullheight)))
;; Set the width in a hook and have all windows inherit
(setq frame-inherited-parameters
      '(width height))
(add-hook 'after-init-hook
          (lambda ()
                  (set-frame-parameter nil 'width 140)))

使用钩子将第一帧的宽度设置为我想要的值,然后将所有其他窗口设置为继承此值。

然而,这不是很优雅,所以问题是“我怎样才能以更简单(或更少hackish)的方式实现这一目标?”。

如果您想查看我的完全 init.el脚本,take a look at this gist

TL; DR

如何设置帧的宽度,并在OS X上将当前监视器上的帧设置得尽可能高?您似乎无法在(width . 140)中指定(fullscreen . fullheight)default-frame-alist

1 个答案:

答案 0 :(得分:6)

我想出了一个解决方案。我明确地计算了窗口的高度,而不是依靠(fullscreen . fullheight)来为我做这件事。

设置高度和宽度值的更新代码非常简单:

;;; Nice size for the default window
(defun get-default-height ()
       (/ (- (display-pixel-height) 120)
          (frame-char-height)))

(add-to-list 'default-frame-alist '(width . 140))
(add-to-list 'default-frame-alist (cons 'height (get-default-height)))

在此代码中,从屏幕高度减去120确保窗口的高度考虑了码头和菜单栏的高度。为了获得正确的结果,您必须确保在选择要使用的字体后执行此代码,否则计算的高度值将无效。

将高度计算放在自己的功能中应该允许特殊的套管某些操作系统和版本。此方法还具有额外的优点,即打开窗口的速度更快,因为它不会将高度“动画”为全高度值。