Как я могу изменить цвет фона одного буфера Emacs?

8

Я хочу сделать интерактивные буферы SQL, которые связаны с производственными БД, очень и очень очевидными, поэтому я подумал о том, чтобы изменить фон буфера на темно-красный цвет.

set-background-colorне работает, хотя; он устанавливает цвет всех кадров на указанный цвет.

Как я могу изменить фон только одного буфера?

Крис Р
источник

Ответы:

9

Для этого я создал пакет lisp для emacs: https://github.com/vic/color-theme-buffer-local, он использует переназначение лиц Emacs для локальной установки граней тем.


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

Vic
источник
6

Ты не можешь

Цвет фона обычно зависит от кадра.

Вы можете установить цвет фона defaultлица, чтобы быть специфичным для кадра, используя set-face-backgroundтак:

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

Настройки кадра обычно контролируются с помощью параметров кадра . Теперь, если вы внимательно посмотрите на параметры background-colorfor frame , вы увидите, что цвет фона по умолчанию берется с defaultлица - вот почему вышеупомянутый elisp имеет эффект.

Кроме того, кажется, что замыкания, которые вы можете получить для цвета фона буфера, это использование вспомогательного режима buffer-face-mode(добавлен в 23.1) - однако это изменяет только фон для текста буфера, а не весь фон.

Трей Джексон
источник