Jak mogę zmienić kolor tła pojedynczego bufora emacs?

8

Chcę, aby interaktywne bufory SQL, które są połączone z produkcyjnymi bazami danych były bardzo, bardzo oczywiste, więc pomyślałem o zmianie tła bufora na ciemnoczerwony kolor.

set-background-colorjednak nie działa; ustawia kolor wszystkich ramek na określony kolor.

Jak mogę zmienić tło tylko jednego bufora?

Chris R.
źródło

Odpowiedzi:

9

Stworzyłem dla tego pakiet emacs lisp: https://github.com/vic/color-theme-buffer-local używa mapowania twarzy Emacsa do lokalnej instalacji twarzy motywu.


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

ofiara
źródło
6

Nie możesz

Kolor tła jest zazwyczaj zależny od ramki.

Możesz ustawić kolor tła defaulttwarzy tak, aby był specyficzny dla ramki, używając set-face-background:

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

Dostosowania ramki są zwykle kontrolowane za pomocą parametrów ramki . Teraz, jeśli przyjrzysz się bliżej background-colorparametrom ramki , zobaczysz, że domyślny kolor tła jest pobierany z defaulttwarzy - dlatego powyższy elips ma wpływ.

W przeszłości wydaje się, że zamknięcie koloru bufora jest możliwe przy użyciu trybu pomocniczego buffer-face-mode(dodanego w 23.1) - jednak to zmienia tylko tło tekstu bufora, a nie całe tło.

Trey Jackson
źródło