我有一个颜色主题文件(类似于 gruber-darker.el),我想调整一个特定的颜色。这种颜色可以描述如下: 通过 M-x org-agenda a 更改为组织议程(组织模式议程缓冲区)。然后将光标移到计划待办事项上(这是指向议程文件中相应条目的链接)。当光标悬停在此类项目上时,您会看到该项目以高亮形式显示,带有背景色和前景色。背景颜色很好,但是,前景色是白色的。我想将此前景色调整为类似 :foreground nil 的颜色,使其不再是白色;相反,光标所在项目的自然颜色是继承的。
我通常使用 M-x describe-face RET 来找出我必须更改的元素。但是,这在这里不起作用,因为我只获得光标所在项目的颜色/元素名称。

更新 1:
我刚刚意识到我对 emacs 中的所有链接(不仅在组织模式下)都具有相同的行为。我发现 (highlight ((t (:background "#453D41")))) 给了我一个棕色背景栏作为突出显示的区域。但是一旦光标位于突出显示的区域上,我就会得到一个白色的前景色而不是原始颜色。甚至 (highlight ((t (:background "#453D41" :foreground nil)))) 也不会给我光标所在项目的原始颜色。我怎样才能做到这一点?

更新 2:
我发现 (highlight ((t (:foreground "#000000" :background "#453D41")))) 确实给出了黑色前景色而不是白色。但我不知道如何获得光标所在项目的“继承”前景色。

最佳答案

你发现这是不可能的。一方面,mouse-face 文本属性独立于 face 属性。另一方面,人脸属性是静态定义的;它们不能动态继承。

考虑使用 highlight 为此类功能(不限于 mouse-faceM-x report-emacs-bug 等)提交 Emacs 增强请求。 (是的,该命令也用于增强请求。)

关于emacs:如何更改高光的前景色(例如,点结束的链接)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8662070/

10-10 05:15