Get font face under cursor in Emacs

I've been developing my own custom color theme, and it'd be really useful if I could get a list of font-faces affecting the text under the cursor.

Something like Textmate's show current scope command.

That would save me the trouble of doing M-x customize-face and looking through available options, guessing at which one affects the current word I'm on.

Any ideas?


what-cursor-position with a prefix argument shows the face under point, among other information.

Keyboard shortcut is C-u C-x =

Example output (the face property is shown in the last paragraph):

             position: 5356 of 25376 (21%), column: 4
            character: r (displayed as r) (codepoint 114, #o162, #x72)
    preferred charset: ascii (ASCII (ISO646 IRV))
code point in charset: 0x72
               syntax: w    which means: word
             category: .:Base, L:Left-to-right (strong), a:ASCII, l:Latin, r:Roman
          buffer code: #x72
            file code: #x72 (encoded by coding system undecided-unix)
              display: by this font (glyph code)
    nil:-apple-Monaco-medium-normal-normal-*-12-*-*-*-m-0-iso10646-1 (#x55)

Character code properties: customize what to show
  name: LATIN SMALL LETTER R
  general-category: Ll (Letter, Lowercase)
  decomposition: (114) ('r')

There are text properties here:
  face                 org-level-2
  fontified            t

[back]

M-x describe-face


You can define what-face with this code:

(defun what-face (pos)
  (interactive "d")
  (let ((face (or (get-char-property (pos) 'read-face-name)
                  (get-char-property (pos) 'face))))
    (if face (message "Face: %s" face) (message "No face at %d" pos))))

After that,

M-x what-face

will print the face found at the current point.

(Thanks to thedz for pointing out that what-face wasn’t built in.)