Zwei verwandte Fragen
- 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.
- 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.
gamgrid-color
und dasgamegrid-colorize-glyph
Inneregamegrid.el
sind 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 Funktioncolor-name-to-rgb
von in einen 3-Element-Vektor konvertiert wirdcolor.el
. Die Funktionface-remap-add-relative
kann verwendet werden, um einen bestimmten Gesichtspuffer lokal zu machen: gnu.org/software/emacs/manual/html_node/elisp/…vline-style
von'compose
[Composit-Zeichen verwenden] oder'mixed
[Gesicht und Composit-Zeichen verwenden] verwendet werden, um einen vertikalen Durchstreicheneffekt zu erzeugen. Der Standardwert ist'face
. Dievline-style
Optionen von'compose
und'mixed
funktionieren unter Windows sofort, unter OSX jedoch nicht sofort. Der vertikale Durchstreichen-Effekt mit'compose
verwendet kein Gesicht, und dies würde möglicherweise Ihr Problem mit der Hintergrundfarbe lösen, die das Sehen der vertikalen Linie beeinträchtigt.Antworten:
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:
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).
quelle