Wie kann ich die Hintergrundfarbe eines einzelnen Emacs-Puffers ändern?

8

Ich möchte interaktive SQL-Puffer, die mit Produktions-DBs verbunden sind, sehr, sehr offensichtlich machen, daher war mein Gedanke, den Hintergrund des Puffers in eine dunkelrote Farbe zu ändern.

set-background-colorfunktioniert aber nicht; Es setzt die Farbe aller Frames auf die angegebene Farbe.

Wie kann ich den Hintergrund eines einzelnen Puffers ändern?

Chris R.
quelle

Antworten:

9

Ich habe dafür ein Emacs-Lisp-Paket erstellt: https://github.com/vic/color-theme-buffer-local. Es verwendet Emacs 'Face Remapping, um Themengesichter lokal zu installieren.


(require 'color-theme-buffer-local)
(add-hook 'java-mode-hook (lambda nil (color-theme-buffer-local 'color-theme-robin-hood (current-buffer)) ))

vic
quelle
6

Das kannst du nicht.

Die Hintergrundfarbe ist in der Regel rahmenspezifisch.

Sie können die Hintergrundfarbe des defaultGesichts wie folgt rahmenspezifisch einstellen set-face-background:

(set-face-background 'default "#CCCCCC" (window-frame (frame-selected-window))

Rahmenanpassungen werden im Allgemeinen über Rahmenparameter gesteuert . Wenn Sie sich nun die background-colorParameter für die Rahmen genau ansehen , werden Sie feststellen, dass die Standardhintergrundfarbe vom defaultGesicht übernommen wird - weshalb das obige Elisp einen Effekt hat.

Darüber hinaus scheint es, dass das Schließen, zu dem Sie zu einer Pufferhintergrundfarbe gelangen können, im Moll-Modus buffer-face-mode(hinzugefügt in 23.1) erfolgt - dies ändert jedoch nur den Hintergrund für den Text eines Puffers und nicht den gesamten Hintergrund.

Trey Jackson
quelle