Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Emacs custom background color by mode

Tags:

emacs

elisp

I use emacs to edit a number of file types, and would like an easy visual queue to tell .c files from .vhd or .py files, for instance. How can I add a custom background color to the major mode for that language?

like image 917
mc_electron Avatar asked Jun 22 '10 15:06

mc_electron


2 Answers

You can do this via hooks. Among other things you can hook is when a new major mode starts. Put something like this into your .emacs file, and emacs will set your background color to purple every time you go into Python mode.

  (add-hook 'python-mode-hook
            (lambda ()
              (set-background-color "purple")))

Resetting the background color to the default in the case that you switch back to a mode that doesn't have an explicit set-background hook for it is left as an exercise for the reader.

You can also manually set the background color with M-x set-background-color

like image 197
Jack Lloyd Avatar answered Nov 15 '22 08:11

Jack Lloyd


For posterity, as this thread is 4 years old, it is now possible in Emacs 24.4+ to change faces on a buffer local level. Simply define a face and use (face-remap-add-relative) to swap out whatever face you want with it.

Define a defface:

(defface my-special-face '((t :background "aqua")))

Then add a hook to the mode of your choice:

(add-hook 'python-mode-hook
          (lambda ()
            (face-remap-add-relative 'default 'my-special-face)))
like image 21
waymondo Avatar answered Nov 15 '22 08:11

waymondo