aboutsummaryrefslogtreecommitdiffstats
path: root/src/data.c
diff options
context:
space:
mode:
authorJuanma Barranquero <[email protected]>2007-10-14 18:02:05 +0000
committerJuanma Barranquero <[email protected]>2007-10-14 18:02:05 +0000
commitfe4cd268c7b3a0f6c78939a6ad3e12ff9b2295f5 (patch)
tree6d9266bb521419dffccb9dbf6ebb816b6b7a7d97 /src/data.c
parent9ac66b454877410de28e8c13b3986d0dc7fa7b26 (diff)
(Ffset): Save autoload of the function being set.
Diffstat (limited to 'src/data.c')
-rw-r--r--src/data.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/data.c b/src/data.c
index 5e7453e9d4..f954116f32 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)))