我在小型上网本上使用Emacs来编写代码,并且我设置了字体大小,使得大约填充列(79)字符填充单个"最大化"窗口的宽度(即相当大的字体大小).但是,如果我并排打开两个窗口,我希望这些窗口中的字体大小自动缩小,以便每个窗口的宽度至少容纳79个字符.
在我开始深入研究这个问题之前(我不擅长Lisp),是否可以在每个调整大小上获取窗口宽度,将其除以填充列,并根据该结果选择等宽字体大小?
小智 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))))))
Run Code Online (Sandbox Code Playgroud)