comparison src/data.c @ 79083:de1e5c00a8ce

(Ffset): Save autoload of the function being set.
author Juanma Barranquero <lekktu@gmail.com>
date Sun, 14 Oct 2007 18:00:31 +0000
parents 922696f363b0
children fc2bcd2a8aad
comparison
equal deleted inserted replaced
79082:b27741b11f5a 79083:de1e5c00a8ce
660 DEFUN ("fset", Ffset, Sfset, 2, 2, 0, 660 DEFUN ("fset", Ffset, Sfset, 2, 2, 0,
661 doc: /* Set SYMBOL's function definition to DEFINITION, and return DEFINITION. */) 661 doc: /* Set SYMBOL's function definition to DEFINITION, and return DEFINITION. */)
662 (symbol, definition) 662 (symbol, definition)
663 register Lisp_Object symbol, definition; 663 register Lisp_Object symbol, definition;
664 { 664 {
665 register Lisp_Object function;
666
665 CHECK_SYMBOL (symbol); 667 CHECK_SYMBOL (symbol);
666 if (NILP (symbol) || EQ (symbol, Qt)) 668 if (NILP (symbol) || EQ (symbol, Qt))
667 xsignal1 (Qsetting_constant, symbol); 669 xsignal1 (Qsetting_constant, symbol);
668 if (!NILP (Vautoload_queue) && !EQ (XSYMBOL (symbol)->function, Qunbound)) 670
669 Vautoload_queue = Fcons (Fcons (symbol, XSYMBOL (symbol)->function), 671 function = XSYMBOL (symbol)->function;
670 Vautoload_queue); 672
673 if (!NILP (Vautoload_queue) && !EQ (function, Qunbound))
674 Vautoload_queue = Fcons (Fcons (symbol, function), Vautoload_queue);
675
676 if (CONSP (function) && EQ (XCAR (function), Qautoload))
677 Fput (symbol, Qautoload, XCDR (function));
678
671 XSYMBOL (symbol)->function = definition; 679 XSYMBOL (symbol)->function = definition;
672 /* Handle automatic advice activation */ 680 /* Handle automatic advice activation */
673 if (CONSP (XSYMBOL (symbol)->plist) && !NILP (Fget (symbol, Qad_advice_info))) 681 if (CONSP (XSYMBOL (symbol)->plist) && !NILP (Fget (symbol, Qad_advice_info)))
674 { 682 {
675 call2 (Qad_activate_internal, symbol, Qnil); 683 call2 (Qad_activate_internal, symbol, Qnil);