Указание только нового цвета фона для ключевого слова в font-lock-Keywords

Я хотел бы выделить некоторые части кода определенным цветом фона, но я бы хотел, чтобы оставшаяся часть подсветки кода оставалась на своем месте. Т.е. ключевые слова все равно должны быть выделены с помощью font-lock как ключевые слова, только их фон должен измениться.

На данный момент я делаю это с font-lock-add-Keywords, где регулярное выражение соответствует тому, что я хочу выделить, и к каждому соответствию добавляется грань, определенная так:

(:background "#d1eaff")

Но когда он добавляет это лицо, он не сохраняет предыдущие атрибуты, такие как цвет переднего плана, а просто использует лицо по умолчанию с этим цветом фона.

Есть ли способ заставить его использовать текущие грани и заменить только их фоновые цвета на новые? Как добавить новый атрибут к существующим лицам?

1 ответ

Решение

То, что вы ищете overlays,

Следующий фрагмент кода добавит лицо compilation-error на символах с 1 по 3 в текущем буфере:

(overlay-put (make-overlay 1 4)
             'face 'compilation-error)

Вместо чисел вы можете поместить результаты поиска по регулярному выражению или что-либо, что вы использовали для определения границ вашего наложения.

Другие вопросы по тегам