diff options
author | Juanma Barranquero <lekktu@gmail.com> | 2007-10-14 18:02:05 +0000 |
---|---|---|
committer | Juanma Barranquero <lekktu@gmail.com> | 2007-10-14 18:02:05 +0000 |
commit | fe4cd268c7b3a0f6c78939a6ad3e12ff9b2295f5 (patch) | |
tree | 6d9266bb521419dffccb9dbf6ebb816b6b7a7d97 /src/data.c | |
parent | 9ac66b454877410de28e8c13b3986d0dc7fa7b26 (diff) | |
download | emacs-fe4cd268c7b3a0f6c78939a6ad3e12ff9b2295f5.tar.gz |
(Ffset): Save autoload of the function being set.
Diffstat (limited to 'src/data.c')
-rw-r--r-- | src/data.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/data.c b/src/data.c index 5e7453e9d42..f954116f32e 100644 --- a/src/data.c +++ b/src/data.c @@ -662,12 +662,20 @@ DEFUN ("fset", Ffset, Sfset, 2, 2, 0, (symbol, definition) register Lisp_Object symbol, definition; { + register Lisp_Object function; + CHECK_SYMBOL (symbol); if (NILP (symbol) || EQ (symbol, Qt)) xsignal1 (Qsetting_constant, symbol); - if (!NILP (Vautoload_queue) && !EQ (XSYMBOL (symbol)->function, Qunbound)) - Vautoload_queue = Fcons (Fcons (symbol, XSYMBOL (symbol)->function), - Vautoload_queue); + + function = XSYMBOL (symbol)->function; + + if (!NILP (Vautoload_queue) && !EQ (function, Qunbound)) + Vautoload_queue = Fcons (Fcons (symbol, function), Vautoload_queue); + + if (CONSP (function) && EQ (XCAR (function), Qautoload)) + Fput (symbol, Qautoload, XCDR (function)); + XSYMBOL (symbol)->function = definition; /* Handle automatic advice activation */ if (CONSP (XSYMBOL (symbol)->plist) && !NILP (Fget (symbol, Qad_advice_info))) |