我对如何在elisp中使用变量感到困惑

时间:2015-02-28 10:37:56

标签: emacs elisp quote

我尝试将字体设置如下:

  (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

看起来它试图将值名称用作字体名称。所以我不确定做正确的方法是什么。

1 个答案:

答案 0 :(得分:1)

引用列表'(font . my:font)产生这两个符号的缺点,而不是您想要的值。您可以使用反引用或调用cons来代替引用:

`(font ,my:font)

(cons 'font my:font)

您可能对信息页面(info "(elisp)Quoting")(info "(elisp)Backquoting")感兴趣,这些页面会更详细地解释这些结构。

在一个不相关的说明中,局部变量的emacs lisp词汇约定使用连字符like-this,而不是冒号like:this