Jak zdefiniować dobrą twarz z podświetleniem

9

Chciałbym użyć global-hl-line-mode, ale niektóre z moich motywów nie mają dobrego wyróżnienia. Czy istnieje ogólny sposób zdefiniowania jednego (który nie jest odwrotnym kolorem)? Chciałbym zachować podświetlanie składni, co popsuło moje próby.

max
źródło
Co dokładnie rozumiesz przez „sposób zdefiniowania”? Pytasz o sugestie dotyczące wyglądu? O tym, jak zdefiniować twarz, która daje określony wygląd? O tym, jak zrobić definicję twarzy, która zastąpi definicję twarzy motywu? Czy próbowałeś dostosować twarz używaną przez global-hl-line-mode? Podsumowując, proszę sprecyzować pytanie - to pomoże ludziom pomóc.
Drew

Odpowiedzi:

17

To naprawdę kwestia opinii, ale zawsze uważałem, że hl-linenajlepsze jest ustawienie ciemniejszego tła niż domyślne.

Chciałbym zachować podświetlanie składni, co popsuło moje próby.

Jeśli chcesz zachować podświetlanie składni, upewnij się, że atrybut hl-linetwarzy :foregroundjest równy zero, a następnie ustaw :backgroundatrybut na żądany.

Oto jak to wygląda dla mnie z tymi ustawieniami:

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

wprowadź opis zdjęcia tutaj

Na podstawie tego nie chcesz twardych kolorów, ponieważ będziesz zmieniać motywy. Można mieć emacs automatycznie ustawić :backgroundna hl-linetwarz na kolor ciemniejszy niż obecny domyślnie :backgroundw taki sposób:

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

Spowoduje to ustawienie tła twarzy na 10% ciemniejszy niż tło domyślne, gdy tylko włączysz global-hl-line-mode

Jordon Biondo
źródło