Emacs 如何从org-faces.el覆盖modeline自定义?

Emacs 如何从org-faces.el覆盖modeline自定义?,emacs,org-mode,dot-emacs,Emacs,Org Mode,Dot Emacs,org-faces.el包含此代码 (org-copy-face 'mode-line 'org-mode-line-clock "Face used for clock display in mode line.") ;; ...snip... (provide 'org-faces) ;;; org-faces.el ends here 这使得我的模型线(组织时钟显示)的右侧与“模式线”具有相同的面。使用my.emacs,我想更改此行为,以便组织时钟显示使用与“mode line

org-faces.el包含此代码

(org-copy-face 'mode-line 'org-mode-line-clock
  "Face used for clock display in mode line.")

;; ...snip...

(provide 'org-faces)

;;; org-faces.el ends here
这使得我的模型线(组织时钟显示)的右侧与“模式线”具有相同的面。使用my.emacs,我想更改此行为,以便组织时钟显示使用与“mode line inactive”相同的面

我尝试将此添加到.emacs:

(require 'org-faces) ;;necessary?
(org-copy-face 'mode-line-inactive 'org-mode-line-clock
  "Face used for clock display in mode line."
  :background "blue")
(provide 'org-faces) ;;necessary?

但是modeline在评估.emacs后保持不变。我哪里做错了?我对Lisp很陌生。谢谢您的帮助。

您应该重新定义面部,就像我为“组织待办事项”所做的那样:

您可以(或者必须,可能,取决于您放置上述行的位置)离开组织面,但显然不是提供行

或者,使用一个颜色主题来改进Org的使用(如my Emacs Leuven主题,请参阅),最终定制它以适合您的口味。

这似乎是可行的:

(加载后评估“组织面”
'(设置面属性'org mode line clock nil
:无)

也就是说,使
组织模式行时钟
不再从
模式行
面继承属性。当显示在模式行中时,它似乎可以根据需要从
模式行
模式行非活动
获取属性。

非常感谢您的回复。显示了我的问题。我正在使用.emacs中的set face属性将活动模型线涂成绿色。其结果是,非活动模型线上的组织时钟也是绿色的。我希望所有的组织时钟与非活动模式行的颜色相同。将组织更改为面向正确的路径吗?这与modeline中的组织时钟有关吗?将此代码添加到.emacs并要求在其之前或之后立即使用组织面,不会改变任何事情。好的,现在我想我理解了您的问题:当窗口处于非活动状态时,您希望o-m-line-clock为灰色(作为模式行非活动状态),当窗口处于活动状态时,相同的面为绿色(作为模式行活动状态),对吗?在这种情况下,我没有解决办法——我也有同样的问题。而且我认为在当前的Emacs中这是不可能的(比如,你仍然不能在每个模式下有不同的背景)。
(set-face-attribute 'org-todo nil
                    :weight 'bold :box '(:line-width 1 :color "#D8ABA7")
                    :foreground "#D8ABA7" :background "#FFE6E4")