Emacs: конфликты hl-line-mode с выделенной фразой

Я выделяю текущую строку, оценивая:

(hl-line-mode)

Он также может быть установлен глобально:

(global-hl-line-mode nil)

Проблема заключается в том, что выделение строки подчеркивает highlight-phrase. Поэтому мой вопрос: "как выделить как текущую строку, так и данную фразу в этой строке?"

Ответ 1

Оба highlight-phrase и hl-line применяют лица, у которых есть фоновый цвет. hl-line выигрывает, потому что использует оверлей, а overlays всегда переопределяет текстовые свойства, которые highlight-phrase использует. Я предлагаю вам обойти это, настроив лицо hi-yellow, чтобы использовать яркий цвет переднего плана вместо цвета фона или даже окна.

Ответ 2

Итак, вот некоторые, безусловно, не идеальные решения. У:

M-x customize-face

emacs затем спрашивает вас, какой из них, и я сделал

hl-line

Затем я отключил флаг "наследовать" (последний) и включил флаг "переднего плана", - он говорил "черный" - я сделал его красным. После этого вы должны сохранить все в верхней части страницы - либо - только для этого seccion, либо для будущих сеансов.

Что это! Таким образом, текущий текст строки не соответствует красному шрифту, а highlight-phrase выделяет фразу с желтым цветом.

Ответ 3

Изменить: предыдущее решение, которое я написал, не работает, но это нужно.

Выделение имеет два режима: один для буферов с блокировкой шрифтов (который использует блокировку шрифтов) и один для без (который использует наложение). Решение, которое я нашел, состояло в том, чтобы просто заставить подсветку использовать оверлей все время и, следовательно, иметь более высокий приоритет над hl-строкой (поскольку более короткие оверлеи имеют неявно более высокий приоритет, учитывая одно и то же значение priority).

Чтобы сделать это, я вошел в hi-lock.el и заменил каждый экземпляр font-lock-fontified на nil. Обязательно M-x byte-compile-file затем обновить hi-lock.elc.