如何在Emacs Lisp中将svg-tag-tags的:face值存入变量todo-faces-a?
问题解决方法
你的配置无法运行主要是custom-set-faces的语法错误,关于将:face的值存入变量todo-faces-a,分两种场景处理:
场景1:定义自定义Face(推荐方式)
Emacs中自定义Face需要遵循custom-set-faces的正确语法,原代码多了一层不必要的引号且结构有误,修正后:
(custom-set-faces '(todo-faces-a ((t (:background "red" :foreground "white" :height 0.7 :weight bold)))))
这里((t ...))表示该Face在所有终端/图形界面下生效,同时:distant-foreground不是标准Face属性(svg-tag通常不支持),可直接删除。
之后在svg-tag-tags里引用这个Face的写法是正确的,保持'todo-faces-a即可:
(setq svg-tag-tags `(("TODO" . ((lambda (tag) (svg-tag-make "TODO" :face 'todo-faces-a :inverse nil :margin 0 :padding 0 :ascent 0 :height 0))))))
场景2:直接用变量存储Face属性列表
如果不想定义正式的Face,只想把属性列表存在变量里,可直接设置变量,在svg-tag-make中引用时去掉引号:
(setq todo-faces-a '(:background "red" :foreground "white" :height 0.7 :weight bold)) (setq svg-tag-tags `(("TODO" . ((lambda (tag) (svg-tag-make "TODO" :face todo-faces-a :inverse nil :margin 0 :padding 0 :ascent 0 :height 0))))))
这种方式不需要使用custom-set-faces,直接将属性列表赋值给变量即可。
内容的提问来源于stack exchange,提问作者cwind
相关产品推荐
相关产品推荐

