Z:
(when window-system
(set-face-background 'hl-line "light yellow")
(global-hl-line-mode 1))
bieżąca linia jest podświetlona na żółtym tle, ale jeśli tekst ma właściwości tła, jest również nadpisywany (np. tryb różnicowy, tryb tęczowy).
Czy można ustawić tło tylko dla części, które nie mają odpowiednich właściwości?
AKTUALIZACJA Zaczynam eksperymentować, wydaje się, że punktowanie nie koliduje z tłem:
(set-face-stipple 'hl-line '(4 4 "\x01\x00\x00\x00"))
(set-face-attribute 'hl-line nil :inherit nil)
Ale punktowanie niestety uszkadza wygląd tekstu ...
elisp
syntax-highlighting
hl-line-mode
gavenkoa
źródło
źródło
(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))
Odpowiedzi:
Problem polega na tym, że czasami właściwość text
face
jest używana do podświetlania ihl-line-mode
używa nakładki. A nakładki zawsze pojawiają się „na górze”face
podświetlenia właściwości tekstu .diff-mode
, na przykład używa właściwości text, a nie nakładki. Więc w takich przypadkach nie masz szczęścia.Ale w celu wyróżnienia, które powstaje w wyniku nakładki, można po prostu zmniejszyć priorytet nakładki w nakładce linii hl: albo
hl-line-overlay
alboglobal-hl-line-overlay
, aby nakładka wyglądała „poniżej” drugiego podświetlenia nakładki.Jeśli korzystasz z biblioteki
hl-line+.el
, możesz użyć opcji,hl-line-overlay-priority
aby ustawić priorytet nakładki. Zobacz także stronę Emacs Wiki Podkreśl bieżącą linię . (Ale znowu zmiana priorytetu nakładki nie ma żadnego efektu, jeśli inne wyróżnienie nie pochodzi z nakładki).źródło
hl-line-overlay
właściwości? Np. Nie pojawia się wcustomize-variable
.hl-line+.el
po prostu dostosuj opcjęhl-line-overlay-priority
. W przeciwnym razie nie będzie można tego zrobić (chyba, że przedefiniuje lub doradzi wstępnie skonfigurowane funkcje). To jest punkt zapewnienia tej opcji użytkownika.Kończę rozwiązaniem częściowym - zaznacz tylko od końca wiersza:
źródło
Natknąłem się na to pytanie, próbując nie
hl-line
zastępować tła (chociaż w tym przypadku były to wskazówki wcięcia):Postawiłem na to, co zaczyna rysować linię podświetlenia po wcięciu:
Wymiana
(+ (line-beginning-position 1) (current-indentation))
z(point)
prac też, (począwszy od kursora).źródło