Lijnmarkering waarbij accentuering van syntaxis wordt geannuleerd

I use hl-line-mode and I really like the built-in misterioso theme. However, the way that lines are highlighted with this theme cancels out syntax highlighting or any other properties of the highlighted lines, as can be seen in this screenshot. enter image description here

Hoe kan ik de markering in dezelfde kleur behouden, maar voorkomen dat de gezichtseigenschappen van de gemarkeerde tekst worden bedekt? Ik zou bereid zijn om compromissen te sluiten en de kleur indien nodig te veranderen, maar dat lijkt niet het probleem te zijn. Ik heb geprobeerd de kleur te veranderen, maar krijg nog steeds hetzelfde effect. Ik heb ook deze oplossing geprobeerd, maar ben er alleen in geslaagd helemaal niets meer te markeren.

This question seems to be the same or similar to mine, but I am honestly not sure if it is the same. I tried the solution suggested there but couldn't get it to work. Rather than having a discussion in the comments of that question, I thought I would ask a new one, but my feelings will not be hurt if this gets marked as duplicate.

5
@PythonNut: Het lijkt mij dezelfde vraag, of het nu een voorgrond of een achtergrond is. Ik zou zeggen dat je zou moeten overwegen om je antwoord op die vraag toe te voegen (voor- en achtergrond uitwisselen) en deze moet als een duplicaat worden gesloten. Maar deze kan misschien duidelijker worden uitgedrukt - niet zeker wat meer koosjer is in zo'n geval.
toegevoegd de auteur Ryan Eastabrook, de bron
toegevoegd de auteur Ryan Eastabrook, de bron
Ik denk niet dat de vraag waarnaar je linkt een duplicaat is, omdat het gaat om het overschrijven van de achtergrond, terwijl je te maken hebt met het opheffen van de voorgrond.
toegevoegd de auteur PythonNut, de bron

1 antwoord

Kortom, het hl-line -gezicht definieert een eigenschap : foreground , die de andere voorgrondkleuren in uw thema vervangt.

misterioso defines hl-line in terms of highlight using inheritance, and because of an awkward issue (which I asked about here), it's not possible AFAIK to directly inherit from a face, and override one of the properties to be unset.

Dus in plaats daarvan heb je zoiets nodig als dit:

(set-face-attribute 'hl-line nil
                    :inherit nil
                    :background (face-background 'highlight))

Dit is misschien niet zo schoon als een hypothetische oplossing die de erfenis zou kunnen behouden, maar het werkt.


Zoals opgemerkt door Stefan, zou een andere oplossing zijn om de voorgrond uit het gezicht highlight te verwijderen, waardoor dit probleem ook voor andere soorten hooglichten zou kunnen worden verholpen.

(set-face-foreground 'highlight nil)
5
toegevoegd
Een betere oplossing is waarschijnlijk om het highlight -gezicht te wijzigen om geen voorgrond op te geven.
toegevoegd de auteur sds, de bron
Beide oplossingen lijken niet te werken bij het uitvoeren van emacs in X (GUI) -modus, maar werken goed in -nw .
toegevoegd de auteur user1477388, de bron