Mailing List Archive


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tlug] Emacs lisp: setting font faces



[I answered my own question whilst writing this email, but since I had
already written most of it, here it is in case someone else finds it
useful.]


I am one of those fools who loves him some syntax highlighting, so I have some spew like this in my ~/.xemacs/init.el:


;; Fontification settings ;; ==================================================

; Face to use for comments
(set-face-foreground  'font-lock-comment-face       "White")

; Face to use for function and variable names
(set-face-foreground  'font-lock-function-name-face "SpringGreen")
(make-face-bold       'font-lock-function-name-face)
(set-face-foreground  'font-lock-variable-name-face "SpringGreen")
(make-face-bold       'font-lock-variable-name-face)
; Face to use for strings and documentation strings
(set-face-foreground  'font-lock-string-face        "Orange")
(set-face-foreground  'font-lock-doc-string-face    "Orange")
; Face to use for preprocessor commands
(set-face-foreground  'font-lock-preprocessor-face  "Green")
(make-face-bold       'font-lock-preprocessor-face)
; Face to use for keywords
(set-face-foreground  'font-lock-keyword-face       "Yellow")
(make-face-bold       'font-lock-keyword-face)
; Face to use for reference names
(set-face-foreground  'font-lock-reference-face     "red3")
(make-face-bold       'font-lock-reference-face)
; Face to use for type names
(set-face-foreground  'font-lock-type-face          "LightBlue")
(make-face-bold       'font-lock-type-face)

;; ==================================================


Which works like a charm for cperl-mode, etc.

But now I'm trying to get MMM Mode[1] figured out so I can benefit
from cperl-mode in Mason[2] code. It is currently giving me a solid
beating, but that may be for another post if I cannot figure it out.
:)

What I see from the manual is that MMM Mode uses its own faces:

http://www.xemacs.org/Documentation/packages/html/mmm_3.html#SEC20

So I have to add some crap like this to my init.el:


(set-face-background 'mmm-default-submode-face "Black") ; Face to use for function and variable names (set-face-foreground 'mmm-default-function-name-face "SpringGreen") (make-face-bold 'font-lock-function-name-face)


But I hate this, because if hell freezes over and I have to change my colour scheme, I have to change crap in multiple places.

I'd rather define some variables and use them.

And I figured out how to do that, so here is the section of my init.el
that handles that now:


;; Fontification settings ;; ==================================================

(setq bg-colour      "Black")
(setq comment-colour "White")
(setq code-colour    "SpringGreen")
(setq string-colour  "Orange")
(setq preproc-colour "Green")
(setq keyword-colour "Yellow")
(setq ref-colour     "red3")
(setq type-colour    "LightBlue")

; Face to use for comments
(set-face-foreground  'font-lock-comment-face       comment-colour)

; Face to use for function and variable names
(set-face-foreground  'font-lock-function-name-face code-colour)
(make-face-bold       'font-lock-function-name-face)
(set-face-foreground  'font-lock-variable-name-face code-colour)
(make-face-bold       'font-lock-variable-name-face)
; Face to use for strings and documentation strings
(set-face-foreground  'font-lock-string-face        string-colour)
(set-face-foreground  'font-lock-doc-string-face    string-colour)
; Face to use for preprocessor commands
(set-face-foreground  'font-lock-preprocessor-face  preproc-colour)
(make-face-bold       'font-lock-preprocessor-face)
; Face to use for keywords
(set-face-foreground  'font-lock-keyword-face       keyword-colour)
(make-face-bold       'font-lock-keyword-face)
; Face to use for reference names
(set-face-foreground  'font-lock-reference-face     ref-colour)
(make-face-bold       'font-lock-reference-face)
; Face to use for type names
(set-face-foreground  'font-lock-type-face          type-colour)
(make-face-bold       'font-lock-type-face)

;; ==================================================


;; MMM Mode ;; ==================================================

(require 'mmm-auto)
(setq mmm-global-mode 'maybe)
(setq mmm-submode-decoration-level '2)

(set-face-background 'mmm-default-submode-face bg-colour)

(set-face-background 'mmm-init-submode-face bg-colour)

(set-face-background 'mmm-cleanup-submode-face bg-colour)

(set-face-background 'mmm-declaration-submode-face bg-colour)

(set-face-background 'mmm-comment-submode-face bg-colour)
(set-face-foreground 'mmm-comment-submode-face comment-colour)

(set-face-background 'mmm-output-submode-face bg-colour)

(set-face-background 'mmm-code-submode-face bg-colour)

(set-face-background 'mmm-special-submode-face bg-colour)

;; ==================================================


Real Emacs Lisp hackers, if you have any improvements to suggest, have at it! :)

Cheers,
Josh

[1] http://www.xemacs.org/Documentation/packages/html/mmm.html#SEC_Top
[2] http://www.masonhq.com/


Home | Main Index | Thread Index

Home Page Mailing List Linux and Japan TLUG Members Links