Mercurial > emacs
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); |