I've thoroughly confused myself in trying to chase down how to set
background colors per buffer. I use an 'after-advice' to do the work
of determining the color (and eventually setting the face).
Enter the confusion of faces and themes. Do themes apply in this
context? (If so, I'm at a loss on how to use them.) If I solely used
faces, I think I would: a) define a new face copied from my default
face; b) modify the new face's background color; and then c) set it for
the local buffer (how?).
What is the suggested way to go about this? Thanks.
 Although I do have one problem with the 'defadvice'. The 'if'
works if I evaluate it within buffers directly, but I get an error if I
switch to a buffer without a filename in the advice context.
(defadvice switch-to-buffer (after bg-buffer-face (arg))
(if (buffer-file-name) ; evals non-nil
((string-match ".*frogger.*" buffer-file-name) ; stringp, nil