我尝试将字体设置如下:
(let ((my:font "WenQuanYi Micro Hei Mono"))
(when (member my:font (font-family-list))
(set-face-attribute 'default nil :font my:font :width 'condensed)
(add-to-list 'default-frame-alist
'(font . my:font))))
set-face-attribute
运行良好。我可以看到字体设置为WenQuanYi
。但当我检查default-frame-alist
的值时,它显示为(font . my:font)
,当我试图创建一个新的帧(emacsclient)时,我得到了这个错误:
*ERROR*: Invalid font: my:font
看起来它试图将值名称用作字体名称。所以我不确定什么是正确的方法。
带引号的列表'(font . my:font)
生成这两个符号的cons,而不是您想要的值。你可以使用反向报价或致电反对者来代替报价:
`(font ,my:font)
或
(cons 'font my:font)
您可能对信息页面(info "(elisp)Quoting")
和(info "(elisp)Backquoting")
感兴趣,它们将更详细地解释这些结构。
与此无关的是,局部变量的emacs-lisp词汇约定使用连字符like-this
,而不是冒号like:this
。