diff src/symbols.c @ 4336:cdc2f70d4319

Provide #'special-form-p, for the use of advice.el, perhaps other files. 2007-12-18 Aidan Kehoe <kehoea@parhasard.net> * symbols.c (Fspecial_form_p): New. For the use of advice.el, and perhaps other files; is SUBR a special form?
author Aidan Kehoe <kehoea@parhasard.net>
date Tue, 18 Dec 2007 21:47:27 +0100
parents 45671f160bd5
children c32e4dca0296
line wrap: on
line diff
--- a/src/symbols.c	Tue Dec 18 21:28:12 2007 +0100
+++ b/src/symbols.c	Tue Dec 18 21:47:27 2007 +0100
@@ -732,6 +732,17 @@
   return make_string ((const Ibyte *)name, strlen (name));
 }
 
+DEFUN ("special-form-p", Fspecial_form_p, 1, 1, 0, /*
+Return whether SUBR is a special form.  SUBR must be built-in.
+*/
+       (subr))
+{
+  subr = indirect_function (subr, 1);
+  CHECK_SUBR (subr);
+
+  return XSUBR (subr)->max_args == UNEVALLED ? Qt : Qnil;
+}
+
 DEFUN ("setplist", Fsetplist, 2, 2, 0, /*
 Set SYMBOL's property list to NEWPLIST, and return NEWPLIST.
 */
@@ -3719,6 +3730,7 @@
   DEFSUBR (Fdefine_function);
   Ffset (intern ("defalias"), intern ("define-function"));
   DEFSUBR (Fsubr_name);
+  DEFSUBR (Fspecial_form_p);
   DEFSUBR (Fsetplist);
   DEFSUBR (Fsymbol_value_in_buffer);
   DEFSUBR (Fsymbol_value_in_console);