我在小型上网本上使用Emacs来编写代码,我设置了字体大小,使得大约填充列(79)字符填充单个“最大化”窗口的宽度(即相当大的字体大小) )。但是,如果我并排打开两个窗口,我希望这些窗口中的字体大小自动缩小,这样每个窗口的宽度至少可以容纳79个字符。
在我开始深入研究之前(我不擅长Lisp),是否可以在每个调整大小上获取窗口的宽度,将其除以填充列,并根据该结果选择等宽字体大小?
答案 0 :(得分: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))))))
答案 1 :(得分:0)
也许看一下库face-remap+.el
,它实际上恰恰相反:缩小文本大小时,窗口大小会相应缩小,因此文本周围没有浪费的额外空间。不知道该代码是否会有所帮助,但它可能会给你一些想法。