Как мне установить цвета бахромы на любой цвет фона?

12

Я использую режим без отвлечения, который использует гигантские полосы для центрирования буфера bzg-big-fringe-mode.

Проблема в том, что эти полосы часто имеют цвет, отличный от фона, что дает неприятный визуальный эффект (см. Рисунок в конце).

У меня нет проблем с исправлением этого вручную, установив цвет бахромы на цвет фона, например так:

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

Проблема в том, что при смене темы цвета окантовки остаются серыми, хотя это не имеет смысла для новой темы.

Есть ли способ программно установить бахрому на цвет фона?

Я думаю, мне нужны две вещи:

  1. Возможность установить цвет фона полосы по умолчанию.
  2. Функция, которая привязана к смене тем и которая делает 1. выше.

Я думаю, что я должен быть в состоянии сделать 2), хотя у меня нет навыков Emacs, но как мне сделать 1)?

Или это плохая идея по какой-то причине? Если так, то как будет выглядеть лучший подход?

введите описание изображения здесь

Несчастный кот
источник

Ответы:

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

wasamasa
источник
Благодарю. Я подожду до понедельника с принятием, если у sb есть решение.
Несчастный кот
1
Есть ли причина не использовать face-backgroundи face-foregroundв этом фрагменте кода?
Константин
Нет, отредактировано.
Васамаса
4

Вы можете установить цвет бахромы на ноль, в этом случае вам не нужно беспокоиться о каких-либо изменениях темы. У меня есть следующее в моей конфигурации:

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

И бахрома просто исчезает .... :)

пандит
источник
0

Как-то 'fringeперестал работать на меня, и теперь это делает:

(set-face-attribute 'linum nil :background "gray19")
yPhil
источник