Comment définir un bon visage en surbrillance

9

Je voudrais utiliser global-hl-line-mode, mais certains de mes thèmes manquent d'un bon visage en surbrillance. Existe-t-il un moyen général d'en définir un (ce n'est pas une couleur inverse)? Je voudrais conserver la coloration syntaxique, qui a échoué dans mes tentatives.

max
la source
Qu'entendez-vous exactement par «manière de définir»? Demandez-vous des suggestions pour l'apparence? Comment définir un visage qui donne une apparence donnée? Comment faire pour qu'une définition de visage remplace l'effet des définitions de visage d'un thème? Avez-vous essayé de personnaliser le visage utilisé par global-hl-line-mode? En résumé, veuillez préciser la question plus clairement - cela aidera les gens à vous aider.
Drew

Réponses:

17

C'est vraiment une question d'opinion, mais j'ai toujours trouvé que le fait d' hl-lineavoir un arrière-plan légèrement plus sombre que celui par défaut est le meilleur.

Je voudrais conserver la coloration syntaxique, qui a échoué dans mes tentatives.

Si vous souhaitez conserver la coloration syntaxique, assurez-vous que hl-linel' :foregroundattribut de face est nul, puis définissez l' :backgroundattribut sur ce que vous voulez.

Voici à quoi cela ressemble pour moi avec ces paramètres:

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

entrez la description de l'image ici

Par le son, vous ne voulez pas de couleurs codées en dur car vous changerez de thème. Vous pouvez demander à emacs de définir automatiquement :backgroundle hl-linevisage sur une couleur légèrement plus foncée que la valeur par défaut actuelle, :backgroundcomme ceci:

(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)

Cela définira l'arrière-plan du visage sur une couleur 10% plus foncée que l'arrière-plan par défaut à chaque fois que vous activez global-hl-line-mode

Jordon Biondo
la source