为什么 emacs 没有在 init.el 中运行 (set-face-attribute ...),即使缓冲区的其余部分已执行?

为什么 emacs 没有在 init.el 中运行 (set-face-attribute ...),即使缓冲区的其余部分已执行?

我把它添加到了(set-face-attribute 'default nil :height 100)init.el 中,因为我发现默认字体大小有点太大。但是,在加载 emacs 时它不会执行。

我没有init.elc不代表我的更新版本的文件init.el,并且我知道我的其余部分init.el正在被执行。

(set-face-attribute ...)其后没有其他可以覆盖它的性别。

加载 emacs 后返回init.el并自行执行,正确设置属性(即对于所有缓冲区(但不是新帧),持久)

答案1

从我的配置文件中删除一些部分之后,我发现这是由于(add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-12"))

我之前之所以不考虑它,是因为我(set-face-attribute 'default nil :height 100)在初始化文件的最末端运行它。

default-frame-alist解决办法是将改变的sexp改为(add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-12") '(height . 100)),并直接删除改变face属性的sexp

答案2

这是一个老话题了,但我遇到了同样的问题并设法解决了它。我看到你也遇到了同样的问题,但我还是想贡献我的解决方案,因为我在其他地方找不到它。

我刚刚将以下行添加到我的 ~/.emacs.d/init.el:

(add-hook 'find-file-hook (lambda () (set-face-attribute 'default nil :height 105)))

并且成功了。感谢 OP 评论中 alexis 的建议。

相关内容