【问题标题】:Customizing highlighting faces in Emacs: Only change the background color在 Emacs 中自定义突出显示面:仅更改背景颜色
【发布时间】:2013-03-21 23:06:00
【问题描述】:

有没有办法在 Emacs 中定义一个面(例如突出显示,如 hl-line),以便它只改变背景颜色(并且让 Emacs 使用前景色,就好像单词没有突出显示一样)。

更具体地说,我在tango-dark 主题上尝试了以下操作

(custom-set-faces
 '(region ((t (:inherit nil :background "RoyalBlue4"))))
 '(highlight ((t (:inherit region :background "dark olive green"))))
 '(hl-line ((t (:inherit highlight)))))

并且如下所示,区域突出显示确实尊重前景字体(即它只改变背景颜色):

                     

当前行的突出显示不会:

                       

为什么?以及如何使用hl-line 获得相同的效果?

更新:

这似乎是tango-dark 主题(Emacs 的内置主题)中的一个错误。该代码适用于默认主题(使用emacs -Q 加载)。我在官方错误邮件列表上发布了这个。

【问题讨论】:

  • 在区域线上检查您的括号; =)在我修复了事情似乎按你想要的那样工作之后;顺便说一句,拥有像 paredit 这样的模式助手可以防止大多数这些问题!
  • 更准确地说,删除custom-set-facesregion 行之后的右括号——之后,代码在 Emacs 23.1.1 上对我来说可以正常工作
  • 感谢@Thomas,我更新了代码和 OP,但仍然没有得到想要的效果。嗯
  • 谢谢@assem。我更新了代码和 OP,但仍然没有得到想要的效果。
  • 这可能是您的主题的副作用吗?可以试试看用-Q启动emacs时是否会出现同样的效果吗?

标签: emacs emacs-faces


【解决方案1】:

前段时间我一直在纠结这个问题,似乎是颜色主题的错误。

不过,我想出了一个解决方法。这对我有用:

(load-theme 'tango-dark t)
(set-face-attribute 'highlight nil :foreground 'unspecified)

【讨论】:

  • 这似乎可以解决问题。谢谢!我会稍等一下,以防有人有更好的答案,否则会接受。这项工作就像一个魅力。
  • wombat 主题相同的问题和解决方案。
【解决方案2】:

我有一点类似的问题:

(add-hook 'after-make-frame-functions
  (lambda (frame)
    (select-frame frame)
      (when (display-graphic-p frame)
       (custom-set-faces '(region ((t (:inherit nil :background "RoyalBlue4")))))
     )

【讨论】:

    猜你喜欢
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 2017-07-11
    • 2013-01-09
    • 1970-01-01
    相关资源
    最近更新 更多