Con:
(when window-system
(set-face-background 'hl-line "light yellow")
(global-hl-line-mode 1))
línea actual resaltada con fondo amarillo, pero si el texto tiene propiedades de fondo también se sobrescribe (como el modo diff, el modo arcoíris).
¿Es posible establecer el fondo solo para las partes que no tienen propiedades apropiadas?
ACTUALIZACIÓN Comienzo a experimentar, parece que stipple no está en conflicto con el fondo:
(set-face-stipple 'hl-line '(4 4 "\x01\x00\x00\x00"))
(set-face-attribute 'hl-line nil :inherit nil)
Pero, por desgracia, stipple daña la apariencia del texto ...
elisp
syntax-highlighting
hl-line-mode
gavenkoa
fuente
fuente
(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))
Respuestas:
El problema es que a veces la propiedad de texto
face
se usa para resaltar yhl-line-mode
usa una superposición. Y las superposiciones siempre aparecen "encima de"face
resaltado de propiedades de texto .diff-mode
, por ejemplo, usa la propiedad de texto, no una superposición. Entonces, para casos como este, no tienes suerte.Pero para resaltar que es producido por una superposición, simplemente puede reducir la prioridad de superposición de la superposición de línea hl:
hl-line-overlay
o bienglobal-hl-line-overlay
, para que esa superposición parezca estar "debajo" del otro resaltado de superposición.Si usa la biblioteca
hl-line+.el
, puede usar la opciónhl-line-overlay-priority
para establecer la prioridad de superposición. Vea también la página Wiki de Emacs Resalte la línea actual . (Pero nuevamente, cambiar la prioridad de la superposición no tiene efecto si el otro resaltado no es de una superposición).fuente
hl-line-overlay
propiedad? Por ejemplo, no aparece encustomize-variable
.hl-line+.el
, simplemente personaliza la opciónhl-line-overlay-priority
. De lo contrario, no puede (excepto redefiniendo o asesorando las funciones proporcionadas previamente). Ese es el punto de proporcionar esta opción de usuario.Termino con una solución parcial: resalte solo desde el final de la línea:
fuente
Tropecé con esta pregunta al intentar no
hl-line
anular el fondo (aunque en este caso se trataba de guías de sangría):Me decidí por esto, que comienza a dibujar la línea resaltada después de la sangría:
Reemplazar
(+ (line-beginning-position 1) (current-indentation))
con(point)
trabajos también, (comenzando en el cursor).fuente