如何将 :face 的值放入 emacs lisp 中的变量/列表/哈希中?

问题描述 投票:0回答:1

很抱歉我不熟悉 emacs-lisp。

我写了一个配置文件如下,但它不能正常工作。

那么如何将

:face
svg-tag-tags
的值放入变量中(这里是
todo-faces-a
)?

(custom-set-faces
   '(todo-faces-a '(:background "red"  :distant-foreground "red"  :foreground  "white"   :height 0.7  :weight bold) )
   )

(setq svg-tag-tags
      `(
    ;; TODO / DONE
    ("TODO" . ((lambda (tag) (svg-tag-make "TODO" :face 'todo-faces-a
                           :inverse nil :margin 0 :padding 0 :ascent 0 :height 0 ))))
))
emacs backquote
1个回答
0
投票

defface 不会创建变量 todo-faces-a。 相反,它将一个名为face-defface-spec的属性添加到“todo-faces-a:

”的属性列表中
(get 'todo-faces-a 'face-defface-spec)
    => ((t :foreground "black" :background "gray95" :box "gray90"))

因此,为了以反引号形式访问它,应该这样做:

(setq svg-tag-tags
    `(.... ,(cdar (get 'todo-faces-a 'face-defface-spec)) ...)

哪里

(cdar (get 'todo-faces-a 'face-defface-spec))

评估为

(:foreground "black" :background "gray95" :box "gray90")
© www.soinside.com 2019 - 2024. All rights reserved.