emacs: как изменить цвет переднего плана для бликов (например, ссылки на точку окончены)? - PullRequest
4 голосов
/ 29 декабря 2011

У меня есть файл цветовой темы (похожий на gruber-darker.el), и я хотел бы настроить определенный цвет. Этот цвет можно описать следующим образом: Измените на Org Agenda (буфер повестки дня в режиме org) с помощью M-x org-agenda a. Затем наведите курсор на элемент Scheduled TODO (это ссылка на соответствующую запись в файле повестки дня). Когда курсор находится над таким элементом, вы видите элемент в выделенной форме с цветом фона и цветом переднего плана. Цвет фона в порядке, но цвет переднего плана белый. Я хотел бы настроить этот цвет переднего плана на что-то вроде :foreground nil, чтобы он больше не был белым; вместо этого естественный цвет элемента, на котором находится курсор, наследуется. Обычно я использую M-x describe-face RET, чтобы выяснить, какой элемент я должен изменить. Однако, это не работает здесь, так как я получаю только имена цветов / элементов элемента, на котором находятся курсоры.

Обновление 1: Я только что понял, что я получаю одинаковое поведение для всех ссылок в emacs (не только в режиме org). Я обнаружил, что (highlight ((t (:background "#453D41")))) дает мне коричневую фоновую полосу в качестве выделенной области. Но как только курсор находится над выделенной областью, я получаю белый цвет переднего плана вместо исходного цвета. Даже (highlight ((t (:background "#453D41" :foreground nil)))) не дает мне первоначальный цвет элемента, на котором находится курсор. Как мне этого добиться?

Обновление 2: Я понял, что (highlight ((t (:foreground "#000000" :background "#453D41")))) действительно дает черный цвет переднего плана вместо белого. Но я не знаю, как получить «унаследованный» цвет переднего плана элемента, на котором находится курсор.

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011

Попробуйте использовать describe-char вместо describe-face. Это должно дать вам больше информации о различных используемых лицах.

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

  1. Переместите точку в неконфликтующую позицию поблизости (скажем, 3 символа до интересующего вас символа).
  2. M -: (describe-char (+ 3 (point))) RET
0 голосов
/ 04 января 2012

То, что вы обнаружили, это то, что это невозможно сделать. С одной стороны, текстовое свойство mouse-face не зависит от свойства face. Для другого атрибуты лица определены статически; они не могут наследоваться динамически.

Рассмотрите возможность подачи запроса на улучшение Emacs для такой возможности (он не ограничен highlight или mouse-face и т. Д.), Используя M-x report-emacs-bug. (Да, эта команда также предназначена для запросов на расширение.)

...