我对如何在 elisp 中使用变量感到困惑
I am confused about how to use a variable in elisp
我尝试将字体设置如下:
(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,而不是您想要的值。您可以使用反引号或调用 cons:
而不是引用
`(font ,my:font)
或
(cons 'font my:font)
您可能对信息页面 (info "(elisp)Quoting")
和 (info "(elisp)Backquoting")
感兴趣,它们更详细地解释了这些结构。
顺便提一下,局部变量的 emacs lisp 词汇约定使用连字符 like-this
,而不是冒号 like:this
。
我尝试将字体设置如下:
(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,而不是您想要的值。您可以使用反引号或调用 cons:
`(font ,my:font)
或
(cons 'font my:font)
您可能对信息页面 (info "(elisp)Quoting")
和 (info "(elisp)Backquoting")
感兴趣,它们更详细地解释了这些结构。
顺便提一下,局部变量的 emacs lisp 词汇约定使用连字符 like-this
,而不是冒号 like:this
。