For purposes of this discussion, note that facep is not a type predicate, because it returns t for face names (strings or symbols) as well as for internal face objects. I noticed that the docs for facep are not very clear on this. I propose the following doc changes, which I could install if desired:
===File ~/faces.el-diff===================================== *** faces.el 23 Jun 2005 16:53:05 -0500 1.324 --- faces.el 24 Jun 2005 13:47:03 -0500 *************** *** 204,210 **** ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun facep (face) ! "Return non-nil if FACE is a face name." (internal-lisp-face-p face)) --- 204,213 ---- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun facep (face) ! "Return non-nil if FACE is a face name or internal face object. ! Return nil otherwise. A face name can be a string or a symbol. ! An internal face object is a vector of the kind used internally ! to record face data." (internal-lisp-face-p face)) ============================================================ ===File ~/display.texi-diff================================= *** display.texi 23 Jun 2005 20:49:48 -0500 1.169 --- display.texi 24 Jun 2005 14:00:28 -0500 *************** *** 1628,1639 **** @cindex face id Each face has its own @dfn{face number}, which distinguishes faces at low levels within Emacs. However, for most purposes, you refer to ! faces in Lisp programs by their names. @defun facep object ! This function returns @code{t} if @var{object} is a face name symbol (or ! if it is a vector of the kind used internally to record face data). It ! returns @code{nil} otherwise. @end defun Each face name is meaningful for all frames, and by default it has the --- 1628,1639 ---- @cindex face id Each face has its own @dfn{face number}, which distinguishes faces at low levels within Emacs. However, for most purposes, you refer to ! faces in Lisp programs by the symbol that names them. @defun facep object ! This function returns @code{t} if @var{object} is a face name string ! or symbol (or if it is a vector of the kind used internally to record ! face data). It returns @code{nil} otherwise. @end defun Each face name is meaningful for all frames, and by default it has the ============================================================ _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel