如何将边缘颜色设置为背景颜色?


12

我正在使用无干扰模式,该模式使用巨型条纹将名为的缓冲区居中bzg-big-fringe-mode

问题是,这些条纹通常具有与背景不同的颜色,从而产生难看的视觉效果(请参见最后的图片)。

通过将边缘颜色设置为背景颜色,我手动解决此问题没有问题,如下所示:

(set-face-attribute 'fringe nil :background "#3F3F3F" :foreground "#3F3F3F")

问题是,当更改主题时,即使新主题没有意义,边缘颜色仍保持灰色。

是否可以通过编程将条纹设置为背景色?

我想我需要两件事:

  1. 可以将条纹背景色设置为默认背景色。
  2. 与上面的主题挂钩的功能。1。

我认为即使我没有emacs技能,我也应该能够做2),但是我该怎么做1)?

还是出于某种原因这是一个坏主意?如果是这样,一个更好的方法会是什么样?

在此处输入图片说明

Answers:


11

官方方法是自定义相关主题,以使条纹脸与背景脸看起来相同。遵循的面部规格(fringe :inherit default)应该可以解决问题。

或者,您可以使用代码片段即时对其进行修改:

(defun my-tone-down-fringes ()
  (set-face-attribute 'fringe nil
                      :foreground (face-foreground 'default)
                      :background (face-background 'default)))

剩下的唯一问题是将其应用于每个主题更改。我找不到任何钩子看起来可以完成这项工作,这有点令人伤心,defadvice似乎也无法正常工作。至少在Emacs 24.4中没有


谢谢。如果某人有解决方案,我将等到星期一接受。
Unfun Cat 2014年

1
有没有理由不使用face-background,并face-foreground在此代码段?
君士坦丁

没有,已编辑。
wasamasa 2014年

4

您可以将边缘颜色设置为nil,在这种情况下,您无需担心任何主题更改。我的配置中包含以下内容:

(set-face-attribute 'fringe nil :background nil)

而且边缘消失了.... :)


0

不知何故'fringe停止了为我工作,现在可以了:

(set-face-attribute 'linum nil :background "gray19")
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.