# HG changeset patch # User Dave Love # Date 945442856 0 # Node ID 234be1721197cf01097a036f3818fa6aa693024a # Parent 1e3720f2cc945cdf4eb471fb60ec58f33b7edb2b (Fkeywordp): New function. (syms_of_data): Install it. diff -r 1e3720f2cc94 -r 234be1721197 src/data.c --- a/src/data.c Thu Dec 16 19:51:49 1999 +0000 +++ b/src/data.c Fri Dec 17 15:00:56 1999 +0000 @@ -83,7 +83,7 @@ Lisp_Object Qintegerp, Qnatnump, Qwholenump, Qsymbolp, Qlistp, Qconsp; Lisp_Object Qstringp, Qarrayp, Qsequencep, Qbufferp; Lisp_Object Qchar_or_string_p, Qmarkerp, Qinteger_or_marker_p, Qvectorp; -Lisp_Object Qbuffer_or_string_p; +Lisp_Object Qbuffer_or_string_p, Qkeywordp; Lisp_Object Qboundp, Qfboundp; Lisp_Object Qchar_table_p, Qvector_or_char_table_p; @@ -311,6 +311,22 @@ return Qnil; } +/* Define this in C to avoid unnecessarily consing up the symbol + name. */ +DEFUN ("keywordp", Fkeywordp, Skeywordp, 1, 1, 0, + "Return t if OBJECT is a keyword.\n\ +This means that it is a symbol with a print name beginning with `:'\n\ +interned in the initial obarray.") + (object) + Lisp_Object object; +{ + if (SYMBOLP (object) + && XSYMBOL (object)->name->data[0] == ':' + && EQ (XSYMBOL (object)->obarray, initial_obarray)) + return Qt; + return Qnil; +} + DEFUN ("vectorp", Fvectorp, Svectorp, 1, 1, 0, "Return t if OBJECT is a vector.") (object) @@ -2593,6 +2609,7 @@ Qlistp = intern ("listp"); Qconsp = intern ("consp"); Qsymbolp = intern ("symbolp"); + Qkeywordp = intern ("keywordp"); Qintegerp = intern ("integerp"); Qnatnump = intern ("natnump"); Qwholenump = intern ("wholenump"); @@ -2790,6 +2807,7 @@ staticpro (&Qlistp); staticpro (&Qconsp); staticpro (&Qsymbolp); + staticpro (&Qkeywordp); staticpro (&Qintegerp); staticpro (&Qnatnump); staticpro (&Qwholenump); @@ -2876,6 +2894,7 @@ #endif /* LISP_FLOAT_TYPE */ defsubr (&Snatnump); defsubr (&Ssymbolp); + defsubr (&Skeywordp); defsubr (&Sstringp); defsubr (&Smultibyte_string_p); defsubr (&Svectorp);