Як встановити кольори бахроми на будь-який колір фону?


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


Дякую. Я зачекаю до понеділка з прийняттям у випадку, якщо sb знайде рішення.
The Unfun Cat

1
Чи є причина не використовувати face-backgroundі face-foregroundв цьому фрагменті коду?
Костянтин

Немає, відредаговано.
wasamasa

6

Ви можете встановити колір бахроми на нуль, і в цьому випадку вам не потрібно турбуватися про будь-які зміни теми. У моєму конфігурації є таке:

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

І бахрома просто зникає .... :)


0

Якось 'fringeперестав працювати на мене, і тепер це:

(set-face-attribute 'linum nil :background "gray19")
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.