как отключить цвет переднего плана режима пробела для Emacs

В файлах программирования я использую режим пробела, чтобы выделить вкладку и длинные строки. Подсветка по умолчанию для меня слишком красива. Я просто хочу выделить их серым фоном и сохранить любой нормальный цвет, который должен быть для шрифта. Как я мог это установить?

Следующая установка не работает. Я бы хотел, чтобы код за пределами 80 столбцов выглядел желтоватым, как символы внутри 80 столбцов на снимке.

;; face for long lines' tails
(set-face-attribute 'whitespace-line nil
                    :background "#555"
                    :weight 'bold)

;; face for Tabs
(set-face-attribute 'whitespace-tab nil
                    :background "#555"
                    :weight 'bold)

whitespace-mode


person RNA    schedule 31.01.2013    source источник
comment
Та же проблема. В теме по умолчанию конечные пробелы окрашены в приятный серый цвет. В любой другой цветовой теме он горит красным, как будто какая-то фатальная ошибка. Приведенный ниже ответ set-face-attribute не имеет никакого эффекта.   -  person Dave Cohen    schedule 10.07.2013


Ответы (2)


set-face-attribute изменяет только указанные вами атрибуты.

Установите :foreground на nil:

(set-face-attribute 'whitespace-line nil
                    :foreground nil
                    :background "#555"
                    :weight 'bold)
person Dmitry    schedule 01.02.2013
comment
Я знаю, но nil сделает шрифт белым, а не желтым. - person RNA; 01.02.2013
comment
Я понимаю. Краткий ответ: вы не можете этого сделать. Более длинный ответ: вам нужно исправить пробел.el: gist.github.com/72d39c507d56c5c5e0ed - person Dmitry; 01.02.2013
comment
Я ищу что-то похожее на defadvice по функциям - person RNA; 01.02.2013
comment
Вы можете получить это, посоветовав как whitespace-color-on, так и font-lock-add-keywords, установив некоторую переменную в to в первом, проверив ее значение во втором и принудительно установив значение override в спецификации keywords на prepend, но на самом деле это ужасное решение. - person Dmitry; 01.02.2013
comment
Отправьте запрос функции в систему отслеживания ошибок Emacs, я уверен, что мы сможем внести это изменение в основную часть в кратчайшие сроки. Использование prepend имеет смысл. - person Dmitry; 01.02.2013
comment
с командой в этом ответе я получаю сообщение об ошибке:::: ошибка: недопустимое лицо, пробел-линия - person ; 04.01.2015
comment
@MadhavanKumar Сначала попробуйте (require 'whitespace). - person Dmitry; 04.01.2015

Для меня неприятным цветом оказался замыкающий пробел, и я использую это:

;; whitepace looks rediculous in color themes.
(defadvice color-theme-install (after my-color-theme-install-after activate)
  "Fix trailing-whitespace after color theme destroys it"
  (set-face-attribute 'trailing-whitespace nil
                      :foreground 'unspecified
                      :inverse-video 'unspecified
                      :slant 'unspecified
                      :weight 'unspecified
                      :background "#fff"))
person Dave Cohen    schedule 10.07.2013
comment
Выполнение этого как для завершающего пробела, так и для пробельной строки работало для меня с emacs 24.4 - за исключением того, что я использовал (add-hook 'python-mode-hook'(lambda () (set-face-attribute ...))) . Без сомнения, это не лучшее место, но сработало для моей цели. - person Croad Langshan; 15.03.2015