请教 set-face-attribute 如何去掉 inherit 属性?

安装 symbol-overlay 这个package后希望关闭它的 symbol-overlay-temp-face,通过 M-x customize-face 去掉属性可以实现,产生如下语句:

(custom-set-faces
 '(symbol-overlay-temp-face ((t nil))))

但我希望将此设置写入自己的相应配置文件中,目前如下:

(set-face-attribute 'symbol-overlay-temp-face nil :inherit nil)

这条语句只是将 :inherit 属性的值设为 nil,没有将该属性清除,并不等价于上面的语句(有点强迫症),自己尝试了 set-face-attribute N 多种写法都没有实现。

没改过 Face,也不太了解怎么改,但我有两疑问:

  1. 既然你觉得 custom-set-faces 好,为什么不直接用它呢?
  2. 你是怎么判定用了上面的 custom-set-faces 语句后,:inherit 属性就没了的?

custom-set-faces是被自动创建并保存在指定的custom.el中,我希望放在自己指定的配置文件中,其他多个package我都设置成功了,就是这个禁用所有属性没有成功,单纯的设置某个属性是没有问题的

例如:之前org-mode可以设置多个属性

org

但这次的需求是希望使用set-face-atrribute语句禁用该face中的所有属性

未标题-1 副本

就是取消图中这个属性,set-face-atrribute语句不知道该怎么写

:inherit 设置为 nil 应该已经移除了原来的 highlight face 了,应该可以正常使用了。

一般人不会关注这种细节吧。

缓解你的强迫症,试试

(set-face-attribute 'symbol-overlay-temp-face nil :inherit 'unspecified)

谢谢大神,晚点我试试

管用了,十分感谢

这并不表示 custom-set-faces 不能从 Lisp 调用,你依然可以在 init.el 中使用它(?)

收到,感谢,自己参考大家的配置时,看到主要是使用set-face,所以就没有考虑使用custom-set-faces