I want to make SQL interactive buffers that are connected to production DBs very, very obvious, so my thought was to change the background of the buffer to a dark red colour.

set-background-color doesn't work, though; it sets the colour of all frames to the specified colour.

How can I change the background of just a single buffer?

3 Answers 3


I've created a emacs lisp package for this: https://github.com/vic/color-theme-buffer-local it uses Emacs' Face remapping to install theme faces locally.

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


You can't.

The background color is generally frame-specific.

You can set the background color of the default face to be frame specific using set-face-background, like so:

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

Frame customizations are generally controlled through frame parameters. Now, if you look closely at the background-color for frame parameters, you'll see that the default background color is taken from the default face - which is why the above elisp has an effect.

Past that, it seems the closes you can come to a buffer background color is by using the minor-mode buffer-face-mode (added in 23.1) - however that only changes the background for the text of a buffer, and not the entire background.


I didn't try it, but http://www.emacswiki.org/emacs/BufferBackgroundColor sounds like a possible solution.

  • Nice idea, but it uses overlays, so it only changes the background of text.
    – Chris R
    Jun 21, 2010 at 6:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.