很抱歉我不熟悉 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 ))))
))
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")