7

我在小型上网本上使用 Emacs 编写代码,并且我设置了字体大小,以便大约 fill-column(79) 个字符填充单个“最大化”窗口的宽度(即相当大的字体大小)。但是,如果我并排打开两个窗口,我希望这些窗口中的字体大小自动缩小,以便每个窗口的宽度至少容纳 79 个字符。

在我开始深入研究之前(我不擅长 Lisp),是否可以在每次调整大小时获取窗口的宽度,将其除以填充列,然后根据该结果选择等宽字体大小?

4

2 回答 2

2

在我看来,这样做的正确地方是window-size-change-functions

如果窗口大小已更改,则在重新显示之前调用的函数。该值应该是一个接受一个参数的函数列表。就在重新显示之前,对于每一帧,如果它的任何窗口自上次重新显示后改变了大小,或者已被拆分或删除,则调用列表中的所有函数,并将帧作为参数。

具体来说,在你的.emacs

(defun window-width-to-font-size (window-width)
  ;; Insert a calculation to turn window width into 79 chars.
  )

(add-to-list
 'window-size-change-functions
 (lambda (frame)
   (dolist (window (window-list frame))
     (set-face-attribute
      'default nil
      :width (window-width-to-font-size (window-body-width window))))))
于 2012-07-26T12:13:26.713 回答
0

也许看看 library face-remap+.el,它基本上是相反的:当你缩小文本大小时,窗口大小会相应地缩小,所以文本周围不会浪费额外的空间。不知道该代码是否会有所帮助,但它可能会给您一些想法。

于 2013-08-15T02:04:08.503 回答