2011-12-28 3 views
4

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

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

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

ответ

0

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

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

1

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

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

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

Дорогой phils, спасибо, это интересно. Как я заметил выше в обновлениях, я * знаю *, что это лицо 'highlight', которое определяет цвет, просто я не знаю, как отрегулировать цвет' переднего плана' 'highlight'-entry, чтобы он использует фактический цвет, который элемент изначально имел. Я могу изменить его на «всегда черный» (с приведенной выше командой) или «всегда синий», но я не могу настроить его так, чтобы он взял цвет основного текста (я думал, что ': foreground nil' должен работать, но Это не) –