С:
(when window-system
(set-face-background 'hl-line "light yellow")
(global-hl-line-mode 1))
текущая строка подсвечивается желтым фоном, но если текст имеет свойства фона, он также перезаписывается (например, diff-mode, rainbow-mode).
Можно ли установить фон только для деталей, которые не имеют соответствующих свойств?
ОБНОВЛЕНИЕ Я начинаю экспериментировать, кажется, что пунктир не противоречит фону:
(set-face-stipple 'hl-line '(4 4 "\x01\x00\x00\x00"))
(set-face-attribute 'hl-line nil :inherit nil)
Но пунктир, к сожалению, повредить внешний вид текста ...
elisp
syntax-highlighting
hl-line-mode
gavenkoa
источник
источник
(when (memq NAME-OF-FACE (mapcar (function (lambda (ovr) (overlay-get ovr 'face))) (overlays-at (point)))) (remove-overlays BEGINNING-POINT ENDING-POINT 'face hl-line))
Ответы:
Проблема в том, что иногда текстовое свойство
face
используется для выделения иhl-line-mode
использует наложение. И наложения всегда появляются поверх текста,face
выделяя свойства текста .diff-mode
Например, использует свойство текста, а не наложение. Так что в таких случаях вам не повезло.Но для выделения, производимого наложением, вы можете просто уменьшить приоритет наложения наложения hl-line: либо на,
hl-line-overlay
либоglobal-hl-line-overlay
так, чтобы это наложение оказалось «ниже» другого наложения наложения.Если вы используете библиотеку,
hl-line+.el
вы можете использовать опцию,hl-line-overlay-priority
чтобы установить приоритет наложения. Смотрите также страницу Emacs Wiki. Выделите текущую строку . (Но опять же, изменение приоритета наложения не имеет никакого эффекта, если другое выделение не из наложения.)источник
hl-line-overlay
собственности? Например, он не отображается вcustomize-variable
.hl-line+.el
вы просто настраиваете опциюhl-line-overlay-priority
. В противном случае вы не можете (кроме как путем переопределения или предоставления рекомендаций по предварительно предоставленным функциям). В этом смысл предоставления этой пользовательской опции.Я заканчиваю с частичным решением - выделите только с конца строки:
источник
Наткнулся на этот вопрос, пытаясь не сделать
hl-line
переопределение фона (хотя в данном случае это было руководство по отступам):Я остановился на этом, который начинает рисовать выделенную линию после отступа:
Замена
(+ (line-beginning-position 1) (current-indentation))
на(point)
работает тоже (начиная с курсора).источник