--- a/src/xfaces.c +++ b/src/xfaces.c @@ -3570,15 +3570,18 @@ the result will be absolute, otherwise it will be relative. */) DEFUN ("internal-get-lisp-face-attribute", Finternal_get_lisp_face_attribute, Sinternal_get_lisp_face_attribute, 2, 3, 0, - doc: /* Return face attribute KEYWORD of face SYMBOL. -If SYMBOL does not name a valid Lisp face or KEYWORD isn't a valid + doc: /* Return face attribute KEYWORD of face FACE. +FACE should be a symbol or string. +If FACE does not name a valid Lisp face or KEYWORD isn't a valid face attribute name, signal an error. -If the optional argument FRAME is given, report on face SYMBOL in that -frame. If FRAME is t, report on the defaults for face SYMBOL (for new +If the optional argument FRAME is given, report on face FACE in that +frame. If FRAME is t, report on the defaults for face FACE (for new frames). If FRAME is omitted or nil, use the selected frame. */) - (Lisp_Object symbol, Lisp_Object keyword, Lisp_Object frame) + (Lisp_Object face, Lisp_Object keyword, Lisp_Object frame) { struct frame *f = EQ (frame, Qt) ? NULL : decode_live_frame (frame); + Lisp_Object symbol = (STRINGP (face) ? intern (SSDATA (face)) + : face); Lisp_Object lface = lface_from_face_name (f, symbol, true), value = Qnil; CHECK_SYMBOL (symbol);