Themenhintergrund mit Deckkraft? Oder Themenrückruf?

7

Zwei verwandte Fragen

  1. Ist es möglich, die Deckkraft beim Theming in Emacs zu verwenden? Ich meine, ein Thema zu definieren, das zum Beispiel 25% Blau zur Hintergrundfarbe der Elemente hinzufügt, auf die es angewendet wird. Oder was die Schrift 30% leichter machen würde.

Oder wenn nicht.

  1. Ist es möglich, einige Designeigenschaften dynamisch neu zu berechnen, wenn sich das benutzerdefinierte Hauptthema ändert?

Hintergrund

So etwas wäre großartig für verschiedene „Add-Some-Mark“ -Modi. Ein Fall, den ich speziell meine, ist das Flycheck-Fehler-Gesicht, das weniger invasiv wäre, wenn es dem Hintergrund einen leichten roten Akzent geben würde, anstatt Text zu unterstreichen.

Mein Hauptfall ist jedoch der Fadenkreuzmodus (der das Hervorheben der aktuellen Zeile und der aktuellen Spalte kombiniert). Ich habe es so konfiguriert, dass der Hintergrund etwas anders als der Standard ist, und das hat eine nette subtile Anzeige der Cursorposition erzeugt. Aber als ich öfter anfing, Themen zu wechseln, stellte sich heraus, dass dies störend war, da die richtige Farbe vom aktuellen Hintergrund abhängt.

Mekk
quelle
Hier ist eine Idee: Die Funktionen gamgrid-colorund das gamegrid-colorize-glyphInnere gamegrid.elsind ein kombiniertes Beispiel, bei dem durch Schattierung verschiedene Farbniveaus erzeugt werden können - z. B. die verwendeten Schattierungen 0,6 oder 0,8 oder 1,0 (Vollfarbe). Die Farbe, die innerhalb eines Themas geändert werden soll, kann programmgesteuert erfolgen, indem die Farbe mit der Funktion color-name-to-rgbvon in einen 3-Element-Vektor konvertiert wird color.el. Die Funktion face-remap-add-relativekann verwendet werden, um einen bestimmten Gesichtspuffer lokal zu machen: gnu.org/software/emacs/manual/html_node/elisp/…
lawlist
Unter bestimmten Betriebssystemen kann im Fadenkreuzmodus ein vline-stylevon 'compose[Composit-Zeichen verwenden] oder 'mixed[Gesicht und Composit-Zeichen verwenden] verwendet werden, um einen vertikalen Durchstreicheneffekt zu erzeugen. Der Standardwert ist 'face. Die vline-styleOptionen von 'composeund 'mixedfunktionieren unter Windows sofort, unter OSX jedoch nicht sofort. Der vertikale Durchstreichen-Effekt mit 'composeverwendet kein Gesicht, und dies würde möglicherweise Ihr Problem mit der Hintergrundfarbe lösen, die das Sehen der vertikalen Linie beeinträchtigt.
Lawlist

Antworten:

2

Endlich habe ich selbst eine mehr oder weniger zufriedenstellende Lösung gefunden. Ich bin mir immer noch nicht sicher, ob es perfekt ist.

1) Die Bibliothek hexrgb.el bietet nette Funktionen, um tatsächliche Farbberechnungen durchzuführen. Zum Beispiel:

(hexrgb-increment-green (face-background 'default) 2 20)

berechnet eine Farbe, die etwas grüner als der aktuelle Hintergrund ist (in den obigen Parametern ist 2 die Anzahl der Stellen jeder Farbe und 20 die relative Änderung).

2) Dann riet ich load-theme (als ich dies schreibe, fiel mir auf, dass dies nicht der gute Ort ist und eine niedrigere API - enable-theme oder etw noch tiefer - könnte besser sein), um verschiedene Attribute von hl-line und zu ändern Col-Highlight-Gesichter nach dem Themawechsel (ich musste die tatsächliche Farbe einstellen, aber auch löschen: erben).

Mekk
quelle