comparison src/data.c @ 8448:b6335ce87e16

(Fdefine_function, Fdefalias): Handle advice as in Ffset. (Qad_advice_info): Lisp and C names renamed from Qadvice_info. (Qad_activate): C name renamed from Qactivate_advice.
author Richard M. Stallman <rms@gnu.org>
date Thu, 04 Aug 1994 22:57:13 +0000
parents ec05bbe4ef1c
children e10362de8eba
comparison
equal deleted inserted replaced
8447:0e699538d256 8448:b6335ce87e16
72 Lisp_Object Qstringp, Qarrayp, Qsequencep, Qbufferp; 72 Lisp_Object Qstringp, Qarrayp, Qsequencep, Qbufferp;
73 Lisp_Object Qchar_or_string_p, Qmarkerp, Qinteger_or_marker_p, Qvectorp; 73 Lisp_Object Qchar_or_string_p, Qmarkerp, Qinteger_or_marker_p, Qvectorp;
74 Lisp_Object Qbuffer_or_string_p; 74 Lisp_Object Qbuffer_or_string_p;
75 Lisp_Object Qboundp, Qfboundp; 75 Lisp_Object Qboundp, Qfboundp;
76 Lisp_Object Qcdr; 76 Lisp_Object Qcdr;
77 Lisp_Object Qadvice_info, Qactivate_advice; 77 Lisp_Object Qad_advice_info, Qad_activate;
78 78
79 Lisp_Object Qrange_error, Qdomain_error, Qsingularity_error; 79 Lisp_Object Qrange_error, Qdomain_error, Qsingularity_error;
80 Lisp_Object Qoverflow_error, Qunderflow_error; 80 Lisp_Object Qoverflow_error, Qunderflow_error;
81 81
82 #ifdef LISP_FLOAT_TYPE 82 #ifdef LISP_FLOAT_TYPE
554 if (!NILP (Vautoload_queue) && !EQ (XSYMBOL (sym)->function, Qunbound)) 554 if (!NILP (Vautoload_queue) && !EQ (XSYMBOL (sym)->function, Qunbound))
555 Vautoload_queue = Fcons (Fcons (sym, XSYMBOL (sym)->function), 555 Vautoload_queue = Fcons (Fcons (sym, XSYMBOL (sym)->function),
556 Vautoload_queue); 556 Vautoload_queue);
557 XSYMBOL (sym)->function = newdef; 557 XSYMBOL (sym)->function = newdef;
558 /* Handle automatic advice activation */ 558 /* Handle automatic advice activation */
559 if (CONSP (XSYMBOL (sym)->plist) && !NILP (Fget (sym, Qadvice_info))) 559 if (CONSP (XSYMBOL (sym)->plist) && !NILP (Fget (sym, Qad_advice_info)))
560 { 560 {
561 call2 (Qactivate_advice, sym, Fbyte_code_function_p (newdef)); 561 call2 (Qad_activate, sym, Qnil);
562 newdef = XSYMBOL (sym)->function; 562 newdef = XSYMBOL (sym)->function;
563 } 563 }
564 return newdef; 564 return newdef;
565 } 565 }
566 566
575 CHECK_SYMBOL (sym, 0); 575 CHECK_SYMBOL (sym, 0);
576 if (!NILP (Vautoload_queue) && !EQ (XSYMBOL (sym)->function, Qunbound)) 576 if (!NILP (Vautoload_queue) && !EQ (XSYMBOL (sym)->function, Qunbound))
577 Vautoload_queue = Fcons (Fcons (sym, XSYMBOL (sym)->function), 577 Vautoload_queue = Fcons (Fcons (sym, XSYMBOL (sym)->function),
578 Vautoload_queue); 578 Vautoload_queue);
579 XSYMBOL (sym)->function = newdef; 579 XSYMBOL (sym)->function = newdef;
580 /* Handle automatic advice activation */
581 if (CONSP (XSYMBOL (sym)->plist) && !NILP (Fget (sym, Qad_advice_info)))
582 {
583 call2 (Qad_activate, sym, Qnil);
584 newdef = XSYMBOL (sym)->function;
585 }
580 LOADHIST_ATTACH (sym); 586 LOADHIST_ATTACH (sym);
581 return newdef; 587 return newdef;
582 } 588 }
583 589
584 DEFUN ("define-function", Fdefine_function, Sdefine_function, 2, 2, 0, 590 DEFUN ("define-function", Fdefine_function, Sdefine_function, 2, 2, 0,
590 CHECK_SYMBOL (sym, 0); 596 CHECK_SYMBOL (sym, 0);
591 if (!NILP (Vautoload_queue) && !EQ (XSYMBOL (sym)->function, Qunbound)) 597 if (!NILP (Vautoload_queue) && !EQ (XSYMBOL (sym)->function, Qunbound))
592 Vautoload_queue = Fcons (Fcons (sym, XSYMBOL (sym)->function), 598 Vautoload_queue = Fcons (Fcons (sym, XSYMBOL (sym)->function),
593 Vautoload_queue); 599 Vautoload_queue);
594 XSYMBOL (sym)->function = newdef; 600 XSYMBOL (sym)->function = newdef;
601 /* Handle automatic advice activation */
602 if (CONSP (XSYMBOL (sym)->plist) && !NILP (Fget (sym, Qad_advice_info)))
603 {
604 call2 (Qad_activate, sym, Qnil);
605 newdef = XSYMBOL (sym)->function;
606 }
595 LOADHIST_ATTACH (sym); 607 LOADHIST_ATTACH (sym);
596 return newdef; 608 return newdef;
597 } 609 }
598 610
599 DEFUN ("setplist", Fsetplist, Ssetplist, 2, 2, 0, 611 DEFUN ("setplist", Fsetplist, Ssetplist, 2, 2, 0,
2056 #endif /* LISP_FLOAT_TYPE */ 2068 #endif /* LISP_FLOAT_TYPE */
2057 2069
2058 Qcdr = intern ("cdr"); 2070 Qcdr = intern ("cdr");
2059 2071
2060 /* Handle automatic advice activation */ 2072 /* Handle automatic advice activation */
2061 Qadvice_info = intern ("advice-info"); 2073 Qad_advice_info = intern ("ad-advice-info");
2062 Qactivate_advice = intern ("ad-activate"); 2074 Qad_activate = intern ("ad-activate");
2063 2075
2064 error_tail = Fcons (Qerror, Qnil); 2076 error_tail = Fcons (Qerror, Qnil);
2065 2077
2066 /* ERROR is used as a signaler for random errors for which nothing else is right */ 2078 /* ERROR is used as a signaler for random errors for which nothing else is right */
2067 2079
2241 #endif /* LISP_FLOAT_TYPE */ 2253 #endif /* LISP_FLOAT_TYPE */
2242 2254
2243 staticpro (&Qboundp); 2255 staticpro (&Qboundp);
2244 staticpro (&Qfboundp); 2256 staticpro (&Qfboundp);
2245 staticpro (&Qcdr); 2257 staticpro (&Qcdr);
2246 staticpro (&Qadvice_info); 2258 staticpro (&Qad_advice_info);
2247 staticpro (&Qactivate_advice); 2259 staticpro (&Qad_activate);
2248 2260
2249 defsubr (&Seq); 2261 defsubr (&Seq);
2250 defsubr (&Snull); 2262 defsubr (&Snull);
2251 defsubr (&Slistp); 2263 defsubr (&Slistp);
2252 defsubr (&Snlistp); 2264 defsubr (&Snlistp);