Change Emacs Mode-Line color based on major-mode

elisp, emacs, emacs-faces, modeline

Solution

You probably want something like:

(add-hook 'emacs-lisp-mode-hook
          (lambda ()
            (face-remap-add-relative
             'mode-line '((:foreground "ivory" :background "DarkOrange2") mode-line))))

You might want to use face-remap for the `mode-line-inactive` face as well.

Problem

I like to see if there is a way to change the mode-link foreground and background color base on the major-mode, I was thinking to add the logic in the ``` (add-hook 'after-change-major-mode-hook ``` But, I do not have all the emacs lisp experience to make such change. Here is the logic: ``` switch major-mode: case "emacs-lisp-mode": (set-face-foreground 'mode-line "ivory") (set-face-background 'mode-line "DarkOrange2") case "ruby-mode": (set-face-foreground 'mode-line "white") (set-face-background 'mode-line "red") ... default: (set-face-foreground 'mode-line "black") (set-face-background 'mode-line "white") end switch ``` Many thanks in advance!.

Original source