#23 Use defface, not make-face, for creating font lock faces

open
nobody
None
5
2006-04-08
2006-04-08
Osku Salerma
No

The normal way of customizing font lock faces does not
work with python-mode since it does not use the defface
function. The attached patch against python-mode 4.7
fixes this, and one can now use customize-faces to
customize python-mode's faces.

This is tested on emacs 21.4; I have no idea if xemacs
support this or not.

Discussion

  • Skip Montanaro
    Skip Montanaro
    2006-04-09

    Logged In: YES
    user_id=44345

    XEmacs has defface. Can you compare this documentation with what's in
    GNU Emacs? I don't have a recent GNU Emacs handy. /usr/bin/emacs on my
    Mac says it's version 21.2.1. Apropos in that environment does not turn up
    a defface macro. Is it a recent addition?

    `defface' (buffer: *Hyper Apropos*, mode: Hyper-Apropos)

    Compiled Lisp macro,
    (loaded from "/Users/skip/src/xemacs-21.5/lisp/custom.elc"):

    arguments: (face spec doc &rest args)

    Declare FACE as a customizable face that defaults to SPEC.
    FACE does not need to be quoted.

    Third argument DOC is the face documentation.

    If FACE has been set with `custom-set-face', set the face attributes
    as specified by that function, otherwise set the face attributes
    according to SPEC.

    The remaining arguments should have the form

    [KEYWORD VALUE]...

    The following KEYWORDs are defined:

    :group VALUE should be a customization group.
    Add FACE to that group.

    SPEC should be an alist of the form ((DISPLAY ATTS)...).

    ATTS is a list of face attributes and their values. The possible
    attributes are defined in the variable `custom-face-attributes'.

    The ATTS of the first entry in SPEC where the DISPLAY matches the
    frame should take effect in that frame. DISPLAY can either be the
    symbol t, which will match all frames, or an alist of the form
    ((REQ ITEM...)...)

    For the DISPLAY to match a FRAME, the REQ property of the frame must
    match one of the ITEM. The following REQ are defined:

    `type' (the value of `window-system')
    Should be one of `x', `mswindows', or `tty'.

    `class' (the frame's color support)
    Should be one of `color', `grayscale', or `mono'.

    `background' (what color is used for the background text)
    Should be one of `light' or `dark'.

    Read the section about customization in the Emacs Lisp manual for more
    information.

     
  • Osku Salerma
    Osku Salerma
    2006-04-22

    Logged In: YES
    user_id=1474072

    So...are you going to apply this patch or is there something
    else that needs to be done before that?