Cómo definir una buena cara resaltada

9

Me gustaría usar global-hl-line-mode, pero algunos de mis temas carecen de una buena cara resaltada. ¿Hay una forma general de definir uno (que no sea de color inverso)? Me gustaría mantener el resaltado de sintaxis, que se ha roto en mis intentos.

max
fuente
¿Qué quiere decir exactamente con "forma de definir"? ¿Estás preguntando sobre sugerencias para la aparición? ¿Sobre cómo definir una cara que da una apariencia dada? ¿Sobre cómo hacer que una definición de rostro reemplace el efecto de las definiciones de rostro de un tema? ¿Has intentado personalizar la cara utilizada por global-hl-line-mode? En resumen, especifique la pregunta más claramente: ayudará a las personas a ayudarlo.
Drew

Respuestas:

17

Esto es realmente una cuestión de opinión, pero siempre he descubierto que lo mejor es hl-linetener un fondo un poco más oscuro que el predeterminado.

Me gustaría mantener el resaltado de sintaxis, que se ha roto en mis intentos.

Si desea mantener el resaltado de sintaxis, asegúrese de que hl-lineel :foregroundatributo de la cara sea ​​nulo, luego configure el :backgroundatributo como desee.

Esto es lo que me parece con esta configuración:

(set-face-attribute 'default nil :background "gray15")
(set-face-attribute 'hl-line nil :foreground nil :background "gray5")

ingrese la descripción de la imagen aquí

Por lo que parece, no desea colores codificados porque va a cambiar los temas. Puede hacer que emacs configure automáticamente :backgroundla hl-linecara en un color ligeramente más oscuro que el predeterminado actual de :backgroundesta manera:

(require 'color)

(defun set-hl-line-color-based-on-theme ()
  "Sets the hl-line face to have no foregorund and a background
    that is 10% darker than the default face's background."
  (set-face-attribute 'hl-line nil
                      :foreground nil
                      :background (color-darken-name (face-background 'default) 10)))

(add-hook 'global-hl-line-mode-hook 'set-hl-line-color-based-on-theme)

Esto establecerá el fondo de la cara en un color 10% más oscuro que el fondo predeterminado cada vez que habilite global-hl-line-mode

Jordon Biondo
fuente