comparison src/eval.c @ 109428:5ba21f4a3d62

Merge from mainline.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Thu, 08 Jul 2010 22:47:34 +0000
parents 8cfee7d2955f
children 3200fb11db9d
comparison
equal deleted inserted replaced
109427:9d1a0d3d72be 109428:5ba21f4a3d62
294 DEFUN ("or", For, Sor, 0, UNEVALLED, 0, 294 DEFUN ("or", For, Sor, 0, UNEVALLED, 0,
295 doc: /* Eval args until one of them yields non-nil, then return that value. 295 doc: /* Eval args until one of them yields non-nil, then return that value.
296 The remaining args are not evalled at all. 296 The remaining args are not evalled at all.
297 If all args return nil, return nil. 297 If all args return nil, return nil.
298 usage: (or CONDITIONS...) */) 298 usage: (or CONDITIONS...) */)
299 (args) 299 (Lisp_Object args)
300 Lisp_Object args;
301 { 300 {
302 register Lisp_Object val = Qnil; 301 register Lisp_Object val = Qnil;
303 struct gcpro gcpro1; 302 struct gcpro gcpro1;
304 303
305 GCPRO1 (args); 304 GCPRO1 (args);
319 DEFUN ("and", Fand, Sand, 0, UNEVALLED, 0, 318 DEFUN ("and", Fand, Sand, 0, UNEVALLED, 0,
320 doc: /* Eval args until one of them yields nil, then return nil. 319 doc: /* Eval args until one of them yields nil, then return nil.
321 The remaining args are not evalled at all. 320 The remaining args are not evalled at all.
322 If no arg yields nil, return the last arg's value. 321 If no arg yields nil, return the last arg's value.
323 usage: (and CONDITIONS...) */) 322 usage: (and CONDITIONS...) */)
324 (args) 323 (Lisp_Object args)
325 Lisp_Object args;
326 { 324 {
327 register Lisp_Object val = Qt; 325 register Lisp_Object val = Qt;
328 struct gcpro gcpro1; 326 struct gcpro gcpro1;
329 327
330 GCPRO1 (args); 328 GCPRO1 (args);
345 doc: /* If COND yields non-nil, do THEN, else do ELSE... 343 doc: /* If COND yields non-nil, do THEN, else do ELSE...
346 Returns the value of THEN or the value of the last of the ELSE's. 344 Returns the value of THEN or the value of the last of the ELSE's.
347 THEN must be one expression, but ELSE... can be zero or more expressions. 345 THEN must be one expression, but ELSE... can be zero or more expressions.
348 If COND yields nil, and there are no ELSE's, the value is nil. 346 If COND yields nil, and there are no ELSE's, the value is nil.
349 usage: (if COND THEN ELSE...) */) 347 usage: (if COND THEN ELSE...) */)
350 (args) 348 (Lisp_Object args)
351 Lisp_Object args;
352 { 349 {
353 register Lisp_Object cond; 350 register Lisp_Object cond;
354 struct gcpro gcpro1; 351 struct gcpro gcpro1;
355 352
356 GCPRO1 (args); 353 GCPRO1 (args);
370 value is the value of the cond-form. 367 value is the value of the cond-form.
371 If no clause succeeds, cond returns nil. 368 If no clause succeeds, cond returns nil.
372 If a clause has one element, as in (CONDITION), 369 If a clause has one element, as in (CONDITION),
373 CONDITION's value if non-nil is returned from the cond-form. 370 CONDITION's value if non-nil is returned from the cond-form.
374 usage: (cond CLAUSES...) */) 371 usage: (cond CLAUSES...) */)
375 (args) 372 (Lisp_Object args)
376 Lisp_Object args;
377 { 373 {
378 register Lisp_Object clause, val; 374 register Lisp_Object clause, val;
379 struct gcpro gcpro1; 375 struct gcpro gcpro1;
380 376
381 val = Qnil; 377 val = Qnil;
398 } 394 }
399 395
400 DEFUN ("progn", Fprogn, Sprogn, 0, UNEVALLED, 0, 396 DEFUN ("progn", Fprogn, Sprogn, 0, UNEVALLED, 0,
401 doc: /* Eval BODY forms sequentially and return value of last one. 397 doc: /* Eval BODY forms sequentially and return value of last one.
402 usage: (progn BODY...) */) 398 usage: (progn BODY...) */)
403 (args) 399 (Lisp_Object args)
404 Lisp_Object args;
405 { 400 {
406 register Lisp_Object val = Qnil; 401 register Lisp_Object val = Qnil;
407 struct gcpro gcpro1; 402 struct gcpro gcpro1;
408 403
409 GCPRO1 (args); 404 GCPRO1 (args);
421 DEFUN ("prog1", Fprog1, Sprog1, 1, UNEVALLED, 0, 416 DEFUN ("prog1", Fprog1, Sprog1, 1, UNEVALLED, 0,
422 doc: /* Eval FIRST and BODY sequentially; return value from FIRST. 417 doc: /* Eval FIRST and BODY sequentially; return value from FIRST.
423 The value of FIRST is saved during the evaluation of the remaining args, 418 The value of FIRST is saved during the evaluation of the remaining args,
424 whose values are discarded. 419 whose values are discarded.
425 usage: (prog1 FIRST BODY...) */) 420 usage: (prog1 FIRST BODY...) */)
426 (args) 421 (Lisp_Object args)
427 Lisp_Object args;
428 { 422 {
429 Lisp_Object val; 423 Lisp_Object val;
430 register Lisp_Object args_left; 424 register Lisp_Object args_left;
431 struct gcpro gcpro1, gcpro2; 425 struct gcpro gcpro1, gcpro2;
432 register int argnum = 0; 426 register int argnum = 0;
455 DEFUN ("prog2", Fprog2, Sprog2, 2, UNEVALLED, 0, 449 DEFUN ("prog2", Fprog2, Sprog2, 2, UNEVALLED, 0,
456 doc: /* Eval FORM1, FORM2 and BODY sequentially; return value from FORM2. 450 doc: /* Eval FORM1, FORM2 and BODY sequentially; return value from FORM2.
457 The value of FORM2 is saved during the evaluation of the 451 The value of FORM2 is saved during the evaluation of the
458 remaining args, whose values are discarded. 452 remaining args, whose values are discarded.
459 usage: (prog2 FORM1 FORM2 BODY...) */) 453 usage: (prog2 FORM1 FORM2 BODY...) */)
460 (args) 454 (Lisp_Object args)
461 Lisp_Object args;
462 { 455 {
463 Lisp_Object val; 456 Lisp_Object val;
464 register Lisp_Object args_left; 457 register Lisp_Object args_left;
465 struct gcpro gcpro1, gcpro2; 458 struct gcpro gcpro1, gcpro2;
466 register int argnum = -1; 459 register int argnum = -1;
495 Thus, (setq x (1+ y)) sets `x' to the value of `(1+ y)'. 488 Thus, (setq x (1+ y)) sets `x' to the value of `(1+ y)'.
496 The second VAL is not computed until after the first SYM is set, and so on; 489 The second VAL is not computed until after the first SYM is set, and so on;
497 each VAL can use the new value of variables set earlier in the `setq'. 490 each VAL can use the new value of variables set earlier in the `setq'.
498 The return value of the `setq' form is the value of the last VAL. 491 The return value of the `setq' form is the value of the last VAL.
499 usage: (setq [SYM VAL]...) */) 492 usage: (setq [SYM VAL]...) */)
500 (args) 493 (Lisp_Object args)
501 Lisp_Object args;
502 { 494 {
503 register Lisp_Object args_left; 495 register Lisp_Object args_left;
504 register Lisp_Object val, sym; 496 register Lisp_Object val, sym;
505 struct gcpro gcpro1; 497 struct gcpro gcpro1;
506 498
524 } 516 }
525 517
526 DEFUN ("quote", Fquote, Squote, 1, UNEVALLED, 0, 518 DEFUN ("quote", Fquote, Squote, 1, UNEVALLED, 0,
527 doc: /* Return the argument, without evaluating it. `(quote x)' yields `x'. 519 doc: /* Return the argument, without evaluating it. `(quote x)' yields `x'.
528 usage: (quote ARG) */) 520 usage: (quote ARG) */)
529 (args) 521 (Lisp_Object args)
530 Lisp_Object args;
531 { 522 {
532 if (!NILP (Fcdr (args))) 523 if (!NILP (Fcdr (args)))
533 xsignal2 (Qwrong_number_of_arguments, Qquote, Flength (args)); 524 xsignal2 (Qwrong_number_of_arguments, Qquote, Flength (args));
534 return Fcar (args); 525 return Fcar (args);
535 } 526 }
537 DEFUN ("function", Ffunction, Sfunction, 1, UNEVALLED, 0, 528 DEFUN ("function", Ffunction, Sfunction, 1, UNEVALLED, 0,
538 doc: /* Like `quote', but preferred for objects which are functions. 529 doc: /* Like `quote', but preferred for objects which are functions.
539 In byte compilation, `function' causes its argument to be compiled. 530 In byte compilation, `function' causes its argument to be compiled.
540 `quote' cannot do that. 531 `quote' cannot do that.
541 usage: (function ARG) */) 532 usage: (function ARG) */)
542 (args) 533 (Lisp_Object args)
543 Lisp_Object args;
544 { 534 {
545 if (!NILP (Fcdr (args))) 535 if (!NILP (Fcdr (args)))
546 xsignal2 (Qwrong_number_of_arguments, Qfunction, Flength (args)); 536 xsignal2 (Qwrong_number_of_arguments, Qfunction, Flength (args));
547 return Fcar (args); 537 return Fcar (args);
548 } 538 }
563 553
564 To test whether your function was called with `call-interactively', 554 To test whether your function was called with `call-interactively',
565 either (i) add an extra optional argument and give it an `interactive' 555 either (i) add an extra optional argument and give it an `interactive'
566 spec that specifies non-nil unconditionally (such as \"p\"); or (ii) 556 spec that specifies non-nil unconditionally (such as \"p\"); or (ii)
567 use `called-interactively-p'. */) 557 use `called-interactively-p'. */)
568 () 558 (void)
569 { 559 {
570 return (INTERACTIVE && interactive_p (1)) ? Qt : Qnil; 560 return (INTERACTIVE && interactive_p (1)) ? Qt : Qnil;
571 } 561 }
572 562
573 563
589 This function is meant for implementing advice and other 579 This function is meant for implementing advice and other
590 function-modifying features. Instead of using this, it is sometimes 580 function-modifying features. Instead of using this, it is sometimes
591 cleaner to give your function an extra optional argument whose 581 cleaner to give your function an extra optional argument whose
592 `interactive' spec specifies non-nil unconditionally (\"p\" is a good 582 `interactive' spec specifies non-nil unconditionally (\"p\" is a good
593 way to do this), or via (not (or executing-kbd-macro noninteractive)). */) 583 way to do this), or via (not (or executing-kbd-macro noninteractive)). */)
594 (kind) 584 (Lisp_Object kind)
595 Lisp_Object kind;
596 { 585 {
597 return ((INTERACTIVE || !EQ (kind, intern ("interactive"))) 586 return ((INTERACTIVE || !EQ (kind, intern ("interactive")))
598 && interactive_p (1)) ? Qt : Qnil; 587 && interactive_p (1)) ? Qt : Qnil;
599 } 588 }
600 589
651 DEFUN ("defun", Fdefun, Sdefun, 2, UNEVALLED, 0, 640 DEFUN ("defun", Fdefun, Sdefun, 2, UNEVALLED, 0,
652 doc: /* Define NAME as a function. 641 doc: /* Define NAME as a function.
653 The definition is (lambda ARGLIST [DOCSTRING] BODY...). 642 The definition is (lambda ARGLIST [DOCSTRING] BODY...).
654 See also the function `interactive'. 643 See also the function `interactive'.
655 usage: (defun NAME ARGLIST [DOCSTRING] BODY...) */) 644 usage: (defun NAME ARGLIST [DOCSTRING] BODY...) */)
656 (args) 645 (Lisp_Object args)
657 Lisp_Object args;
658 { 646 {
659 register Lisp_Object fn_name; 647 register Lisp_Object fn_name;
660 register Lisp_Object defn; 648 register Lisp_Object defn;
661 649
662 fn_name = Fcar (args); 650 fn_name = Fcar (args);
695 683
696 (doc-string ELT) 684 (doc-string ELT)
697 Set NAME's `doc-string-elt' property to ELT. 685 Set NAME's `doc-string-elt' property to ELT.
698 686
699 usage: (defmacro NAME ARGLIST [DOCSTRING] [DECL] BODY...) */) 687 usage: (defmacro NAME ARGLIST [DOCSTRING] [DECL] BODY...) */)
700 (args) 688 (Lisp_Object args)
701 Lisp_Object args;
702 { 689 {
703 register Lisp_Object fn_name; 690 register Lisp_Object fn_name;
704 register Lisp_Object defn; 691 register Lisp_Object defn;
705 Lisp_Object lambda_list, doc, tail; 692 Lisp_Object lambda_list, doc, tail;
706 693
754 omitted or nil, NEW-ALIAS gets the documentation string of BASE-VARIABLE, 741 omitted or nil, NEW-ALIAS gets the documentation string of BASE-VARIABLE,
755 or of the variable at the end of the chain of aliases, if BASE-VARIABLE is 742 or of the variable at the end of the chain of aliases, if BASE-VARIABLE is
756 itself an alias. If NEW-ALIAS is bound, and BASE-VARIABLE is not, 743 itself an alias. If NEW-ALIAS is bound, and BASE-VARIABLE is not,
757 then the value of BASE-VARIABLE is set to that of NEW-ALIAS. 744 then the value of BASE-VARIABLE is set to that of NEW-ALIAS.
758 The return value is BASE-VARIABLE. */) 745 The return value is BASE-VARIABLE. */)
759 (new_alias, base_variable, docstring) 746 (Lisp_Object new_alias, Lisp_Object base_variable, Lisp_Object docstring)
760 Lisp_Object new_alias, base_variable, docstring;
761 { 747 {
762 struct Lisp_Symbol *sym; 748 struct Lisp_Symbol *sym;
763 749
764 CHECK_SYMBOL (new_alias); 750 CHECK_SYMBOL (new_alias);
765 CHECK_SYMBOL (base_variable); 751 CHECK_SYMBOL (base_variable);
826 load a file defining variables, with this form or with `defconst' or 812 load a file defining variables, with this form or with `defconst' or
827 `defcustom', you should always load that file _outside_ any bindings 813 `defcustom', you should always load that file _outside_ any bindings
828 for these variables. \(`defconst' and `defcustom' behave similarly in 814 for these variables. \(`defconst' and `defcustom' behave similarly in
829 this respect.) 815 this respect.)
830 usage: (defvar SYMBOL &optional INITVALUE DOCSTRING) */) 816 usage: (defvar SYMBOL &optional INITVALUE DOCSTRING) */)
831 (args) 817 (Lisp_Object args)
832 Lisp_Object args;
833 { 818 {
834 register Lisp_Object sym, tem, tail; 819 register Lisp_Object sym, tem, tail;
835 820
836 sym = Fcar (args); 821 sym = Fcar (args);
837 tail = Fcdr (args); 822 tail = Fcdr (args);
899 884
900 If SYMBOL has a local binding, then this form sets the local binding's 885 If SYMBOL has a local binding, then this form sets the local binding's
901 value. However, you should normally not make local bindings for 886 value. However, you should normally not make local bindings for
902 variables defined with this form. 887 variables defined with this form.
903 usage: (defconst SYMBOL INITVALUE [DOCSTRING]) */) 888 usage: (defconst SYMBOL INITVALUE [DOCSTRING]) */)
904 (args) 889 (Lisp_Object args)
905 Lisp_Object args;
906 { 890 {
907 register Lisp_Object sym, tem; 891 register Lisp_Object sym, tem;
908 892
909 sym = Fcar (args); 893 sym = Fcar (args);
910 if (!NILP (Fcdr (Fcdr (Fcdr (args))))) 894 if (!NILP (Fcdr (Fcdr (Fcdr (args)))))
948 \(2) it is customizable (its property list contains a non-nil value 932 \(2) it is customizable (its property list contains a non-nil value
949 of `standard-value' or `custom-autoload'), or 933 of `standard-value' or `custom-autoload'), or
950 \(3) it is an alias for another user variable. 934 \(3) it is an alias for another user variable.
951 Return nil if VARIABLE is an alias and there is a loop in the 935 Return nil if VARIABLE is an alias and there is a loop in the
952 chain of symbols. */) 936 chain of symbols. */)
953 (variable) 937 (Lisp_Object variable)
954 Lisp_Object variable;
955 { 938 {
956 Lisp_Object documentation; 939 Lisp_Object documentation;
957 940
958 if (!SYMBOLP (variable)) 941 if (!SYMBOLP (variable))
959 return Qnil; 942 return Qnil;
996 The value of the last form in BODY is returned. 979 The value of the last form in BODY is returned.
997 Each element of VARLIST is a symbol (which is bound to nil) 980 Each element of VARLIST is a symbol (which is bound to nil)
998 or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM). 981 or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM).
999 Each VALUEFORM can refer to the symbols already bound by this VARLIST. 982 Each VALUEFORM can refer to the symbols already bound by this VARLIST.
1000 usage: (let* VARLIST BODY...) */) 983 usage: (let* VARLIST BODY...) */)
1001 (args) 984 (Lisp_Object args)
1002 Lisp_Object args;
1003 { 985 {
1004 Lisp_Object varlist, val, elt; 986 Lisp_Object varlist, val, elt;
1005 int count = SPECPDL_INDEX (); 987 int count = SPECPDL_INDEX ();
1006 struct gcpro gcpro1, gcpro2, gcpro3; 988 struct gcpro gcpro1, gcpro2, gcpro3;
1007 989
1033 The value of the last form in BODY is returned. 1015 The value of the last form in BODY is returned.
1034 Each element of VARLIST is a symbol (which is bound to nil) 1016 Each element of VARLIST is a symbol (which is bound to nil)
1035 or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM). 1017 or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM).
1036 All the VALUEFORMs are evalled before any symbols are bound. 1018 All the VALUEFORMs are evalled before any symbols are bound.
1037 usage: (let VARLIST BODY...) */) 1019 usage: (let VARLIST BODY...) */)
1038 (args) 1020 (Lisp_Object args)
1039 Lisp_Object args;
1040 { 1021 {
1041 Lisp_Object *temps, tem; 1022 Lisp_Object *temps, tem;
1042 register Lisp_Object elt, varlist; 1023 register Lisp_Object elt, varlist;
1043 int count = SPECPDL_INDEX (); 1024 int count = SPECPDL_INDEX ();
1044 register int argnum; 1025 register int argnum;
1087 DEFUN ("while", Fwhile, Swhile, 1, UNEVALLED, 0, 1068 DEFUN ("while", Fwhile, Swhile, 1, UNEVALLED, 0,
1088 doc: /* If TEST yields non-nil, eval BODY... and repeat. 1069 doc: /* If TEST yields non-nil, eval BODY... and repeat.
1089 The order of execution is thus TEST, BODY, TEST, BODY and so on 1070 The order of execution is thus TEST, BODY, TEST, BODY and so on
1090 until TEST returns nil. 1071 until TEST returns nil.
1091 usage: (while TEST BODY...) */) 1072 usage: (while TEST BODY...) */)
1092 (args) 1073 (Lisp_Object args)
1093 Lisp_Object args;
1094 { 1074 {
1095 Lisp_Object test, body; 1075 Lisp_Object test, body;
1096 struct gcpro gcpro1, gcpro2; 1076 struct gcpro gcpro1, gcpro2;
1097 1077
1098 GCPRO2 (test, body); 1078 GCPRO2 (test, body);
1115 Otherwise, the macro is expanded and the expansion is considered 1095 Otherwise, the macro is expanded and the expansion is considered
1116 in place of FORM. When a non-macro-call results, it is returned. 1096 in place of FORM. When a non-macro-call results, it is returned.
1117 1097
1118 The second optional arg ENVIRONMENT specifies an environment of macro 1098 The second optional arg ENVIRONMENT specifies an environment of macro
1119 definitions to shadow the loaded ones for use in file byte-compilation. */) 1099 definitions to shadow the loaded ones for use in file byte-compilation. */)
1120 (form, environment) 1100 (Lisp_Object form, Lisp_Object environment)
1121 Lisp_Object form;
1122 Lisp_Object environment;
1123 { 1101 {
1124 /* With cleanups from Hallvard Furuseth. */ 1102 /* With cleanups from Hallvard Furuseth. */
1125 register Lisp_Object expander, sym, def, tem; 1103 register Lisp_Object expander, sym, def, tem;
1126 1104
1127 while (1) 1105 while (1)
1195 Then the BODY is executed. 1173 Then the BODY is executed.
1196 Within BODY, a call to `throw' with the same TAG exits BODY and this `catch'. 1174 Within BODY, a call to `throw' with the same TAG exits BODY and this `catch'.
1197 If no throw happens, `catch' returns the value of the last BODY form. 1175 If no throw happens, `catch' returns the value of the last BODY form.
1198 If a throw happens, it specifies the value to return from `catch'. 1176 If a throw happens, it specifies the value to return from `catch'.
1199 usage: (catch TAG BODY...) */) 1177 usage: (catch TAG BODY...) */)
1200 (args) 1178 (Lisp_Object args)
1201 Lisp_Object args;
1202 { 1179 {
1203 register Lisp_Object tag; 1180 register Lisp_Object tag;
1204 struct gcpro gcpro1; 1181 struct gcpro gcpro1;
1205 1182
1206 GCPRO1 (args); 1183 GCPRO1 (args);
1309 } 1286 }
1310 1287
1311 DEFUN ("throw", Fthrow, Sthrow, 2, 2, 0, 1288 DEFUN ("throw", Fthrow, Sthrow, 2, 2, 0,
1312 doc: /* Throw to the catch for TAG and return VALUE from it. 1289 doc: /* Throw to the catch for TAG and return VALUE from it.
1313 Both TAG and VALUE are evalled. */) 1290 Both TAG and VALUE are evalled. */)
1314 (tag, value) 1291 (register Lisp_Object tag, Lisp_Object value)
1315 register Lisp_Object tag, value;
1316 { 1292 {
1317 register struct catchtag *c; 1293 register struct catchtag *c;
1318 1294
1319 if (!NILP (tag)) 1295 if (!NILP (tag))
1320 for (c = catchlist; c; c = c->next) 1296 for (c = catchlist; c; c = c->next)
1330 doc: /* Do BODYFORM, protecting with UNWINDFORMS. 1306 doc: /* Do BODYFORM, protecting with UNWINDFORMS.
1331 If BODYFORM completes normally, its value is returned 1307 If BODYFORM completes normally, its value is returned
1332 after executing the UNWINDFORMS. 1308 after executing the UNWINDFORMS.
1333 If BODYFORM exits nonlocally, the UNWINDFORMS are executed anyway. 1309 If BODYFORM exits nonlocally, the UNWINDFORMS are executed anyway.
1334 usage: (unwind-protect BODYFORM UNWINDFORMS...) */) 1310 usage: (unwind-protect BODYFORM UNWINDFORMS...) */)
1335 (args) 1311 (Lisp_Object args)
1336 Lisp_Object args;
1337 { 1312 {
1338 Lisp_Object val; 1313 Lisp_Object val;
1339 int count = SPECPDL_INDEX (); 1314 int count = SPECPDL_INDEX ();
1340 1315
1341 record_unwind_protect (Fprogn, Fcdr (args)); 1316 record_unwind_protect (Fprogn, Fcdr (args));
1371 Then the value of the last BODY form is returned from the `condition-case' 1346 Then the value of the last BODY form is returned from the `condition-case'
1372 expression. 1347 expression.
1373 1348
1374 See also the function `signal' for more info. 1349 See also the function `signal' for more info.
1375 usage: (condition-case VAR BODYFORM &rest HANDLERS) */) 1350 usage: (condition-case VAR BODYFORM &rest HANDLERS) */)
1376 (args) 1351 (Lisp_Object args)
1377 Lisp_Object args;
1378 { 1352 {
1379 register Lisp_Object bodyform, handlers; 1353 register Lisp_Object bodyform, handlers;
1380 volatile Lisp_Object var; 1354 volatile Lisp_Object var;
1381 1355
1382 var = Fcar (args); 1356 var = Fcar (args);
1659 DATA should be a list. Its elements are printed as part of the error message. 1633 DATA should be a list. Its elements are printed as part of the error message.
1660 See Info anchor `(elisp)Definition of signal' for some details on how this 1634 See Info anchor `(elisp)Definition of signal' for some details on how this
1661 error message is constructed. 1635 error message is constructed.
1662 If the signal is handled, DATA is made available to the handler. 1636 If the signal is handled, DATA is made available to the handler.
1663 See also the function `condition-case'. */) 1637 See also the function `condition-case'. */)
1664 (error_symbol, data) 1638 (Lisp_Object error_symbol, Lisp_Object data)
1665 Lisp_Object error_symbol, data;
1666 { 1639 {
1667 /* When memory is full, ERROR-SYMBOL is nil, 1640 /* When memory is full, ERROR-SYMBOL is nil,
1668 and DATA is (REAL-ERROR-SYMBOL . REAL-DATA). 1641 and DATA is (REAL-ERROR-SYMBOL . REAL-DATA).
1669 That is a special case--don't do this in other situations. */ 1642 That is a special case--don't do this in other situations. */
1670 register struct handler *allhandlers = handlerlist; 1643 register struct handler *allhandlers = handlerlist;
2083 2056
2084 Also, a symbol satisfies `commandp' if its function definition does so. 2057 Also, a symbol satisfies `commandp' if its function definition does so.
2085 2058
2086 If the optional argument FOR-CALL-INTERACTIVELY is non-nil, 2059 If the optional argument FOR-CALL-INTERACTIVELY is non-nil,
2087 then strings and vectors are not accepted. */) 2060 then strings and vectors are not accepted. */)
2088 (function, for_call_interactively) 2061 (Lisp_Object function, Lisp_Object for_call_interactively)
2089 Lisp_Object function, for_call_interactively;
2090 { 2062 {
2091 register Lisp_Object fun; 2063 register Lisp_Object fun;
2092 register Lisp_Object funcar; 2064 register Lisp_Object funcar;
2093 Lisp_Object if_prop = Qnil; 2065 Lisp_Object if_prop = Qnil;
2094 2066
2148 `macro' or t says FUNCTION is really a macro. 2120 `macro' or t says FUNCTION is really a macro.
2149 Third through fifth args give info about the real definition. 2121 Third through fifth args give info about the real definition.
2150 They default to nil. 2122 They default to nil.
2151 If FUNCTION is already defined other than as an autoload, 2123 If FUNCTION is already defined other than as an autoload,
2152 this does nothing and returns nil. */) 2124 this does nothing and returns nil. */)
2153 (function, file, docstring, interactive, type) 2125 (Lisp_Object function, Lisp_Object file, Lisp_Object docstring, Lisp_Object interactive, Lisp_Object type)
2154 Lisp_Object function, file, docstring, interactive, type;
2155 { 2126 {
2156 CHECK_SYMBOL (function); 2127 CHECK_SYMBOL (function);
2157 CHECK_STRING (file); 2128 CHECK_STRING (file);
2158 2129
2159 /* If function is defined and not as an autoload, don't override */ 2130 /* If function is defined and not as an autoload, don't override */
2250 } 2221 }
2251 2222
2252 2223
2253 DEFUN ("eval", Feval, Seval, 1, 1, 0, 2224 DEFUN ("eval", Feval, Seval, 1, 1, 0,
2254 doc: /* Evaluate FORM and return its value. */) 2225 doc: /* Evaluate FORM and return its value. */)
2255 (form) 2226 (Lisp_Object form)
2256 Lisp_Object form;
2257 { 2227 {
2258 Lisp_Object fun, val, original_fun, original_args; 2228 Lisp_Object fun, val, original_fun, original_args;
2259 Lisp_Object funcar; 2229 Lisp_Object funcar;
2260 struct backtrace backtrace; 2230 struct backtrace backtrace;
2261 struct gcpro gcpro1, gcpro2, gcpro3; 2231 struct gcpro gcpro1, gcpro2, gcpro3;
2461 DEFUN ("apply", Fapply, Sapply, 2, MANY, 0, 2431 DEFUN ("apply", Fapply, Sapply, 2, MANY, 0,
2462 doc: /* Call FUNCTION with our remaining args, using our last arg as list of args. 2432 doc: /* Call FUNCTION with our remaining args, using our last arg as list of args.
2463 Then return the value FUNCTION returns. 2433 Then return the value FUNCTION returns.
2464 Thus, (apply '+ 1 2 '(3 4)) returns 10. 2434 Thus, (apply '+ 1 2 '(3 4)) returns 10.
2465 usage: (apply FUNCTION &rest ARGUMENTS) */) 2435 usage: (apply FUNCTION &rest ARGUMENTS) */)
2466 (nargs, args) 2436 (int nargs, Lisp_Object *args)
2467 int nargs;
2468 Lisp_Object *args;
2469 { 2437 {
2470 register int i, numargs; 2438 register int i, numargs;
2471 register Lisp_Object spread_arg; 2439 register Lisp_Object spread_arg;
2472 register Lisp_Object *funcall_args; 2440 register Lisp_Object *funcall_args;
2473 Lisp_Object fun; 2441 Lisp_Object fun;
2527 * sizeof (Lisp_Object)); 2495 * sizeof (Lisp_Object));
2528 GCPRO1 (*funcall_args); 2496 GCPRO1 (*funcall_args);
2529 gcpro1.nvars = 1 + numargs; 2497 gcpro1.nvars = 1 + numargs;
2530 } 2498 }
2531 2499
2532 bcopy (args, funcall_args, nargs * sizeof (Lisp_Object)); 2500 memcpy (funcall_args, args, nargs * sizeof (Lisp_Object));
2533 /* Spread the last arg we got. Its first element goes in 2501 /* Spread the last arg we got. Its first element goes in
2534 the slot that it used to occupy, hence this value of I. */ 2502 the slot that it used to occupy, hence this value of I. */
2535 i = nargs - 1; 2503 i = nargs - 1;
2536 while (!NILP (spread_arg)) 2504 while (!NILP (spread_arg))
2537 { 2505 {
2562 hook; they should use `run-mode-hooks' instead. 2530 hook; they should use `run-mode-hooks' instead.
2563 2531
2564 Do not use `make-local-variable' to make a hook variable buffer-local. 2532 Do not use `make-local-variable' to make a hook variable buffer-local.
2565 Instead, use `add-hook' and specify t for the LOCAL argument. 2533 Instead, use `add-hook' and specify t for the LOCAL argument.
2566 usage: (run-hooks &rest HOOKS) */) 2534 usage: (run-hooks &rest HOOKS) */)
2567 (nargs, args) 2535 (int nargs, Lisp_Object *args)
2568 int nargs;
2569 Lisp_Object *args;
2570 { 2536 {
2571 Lisp_Object hook[1]; 2537 Lisp_Object hook[1];
2572 register int i; 2538 register int i;
2573 2539
2574 for (i = 0; i < nargs; i++) 2540 for (i = 0; i < nargs; i++)
2593 as that may change. 2559 as that may change.
2594 2560
2595 Do not use `make-local-variable' to make a hook variable buffer-local. 2561 Do not use `make-local-variable' to make a hook variable buffer-local.
2596 Instead, use `add-hook' and specify t for the LOCAL argument. 2562 Instead, use `add-hook' and specify t for the LOCAL argument.
2597 usage: (run-hook-with-args HOOK &rest ARGS) */) 2563 usage: (run-hook-with-args HOOK &rest ARGS) */)
2598 (nargs, args) 2564 (int nargs, Lisp_Object *args)
2599 int nargs;
2600 Lisp_Object *args;
2601 { 2565 {
2602 return run_hook_with_args (nargs, args, to_completion); 2566 return run_hook_with_args (nargs, args, to_completion);
2603 } 2567 }
2604 2568
2605 DEFUN ("run-hook-with-args-until-success", Frun_hook_with_args_until_success, 2569 DEFUN ("run-hook-with-args-until-success", Frun_hook_with_args_until_success,
2615 However, if they all return nil, we return nil. 2579 However, if they all return nil, we return nil.
2616 2580
2617 Do not use `make-local-variable' to make a hook variable buffer-local. 2581 Do not use `make-local-variable' to make a hook variable buffer-local.
2618 Instead, use `add-hook' and specify t for the LOCAL argument. 2582 Instead, use `add-hook' and specify t for the LOCAL argument.
2619 usage: (run-hook-with-args-until-success HOOK &rest ARGS) */) 2583 usage: (run-hook-with-args-until-success HOOK &rest ARGS) */)
2620 (nargs, args) 2584 (int nargs, Lisp_Object *args)
2621 int nargs;
2622 Lisp_Object *args;
2623 { 2585 {
2624 return run_hook_with_args (nargs, args, until_success); 2586 return run_hook_with_args (nargs, args, until_success);
2625 } 2587 }
2626 2588
2627 DEFUN ("run-hook-with-args-until-failure", Frun_hook_with_args_until_failure, 2589 DEFUN ("run-hook-with-args-until-failure", Frun_hook_with_args_until_failure,
2636 Then we return nil. However, if they all return non-nil, we return non-nil. 2598 Then we return nil. However, if they all return non-nil, we return non-nil.
2637 2599
2638 Do not use `make-local-variable' to make a hook variable buffer-local. 2600 Do not use `make-local-variable' to make a hook variable buffer-local.
2639 Instead, use `add-hook' and specify t for the LOCAL argument. 2601 Instead, use `add-hook' and specify t for the LOCAL argument.
2640 usage: (run-hook-with-args-until-failure HOOK &rest ARGS) */) 2602 usage: (run-hook-with-args-until-failure HOOK &rest ARGS) */)
2641 (nargs, args) 2603 (int nargs, Lisp_Object *args)
2642 int nargs;
2643 Lisp_Object *args;
2644 { 2604 {
2645 return run_hook_with_args (nargs, args, until_failure); 2605 return run_hook_with_args (nargs, args, until_failure);
2646 } 2606 }
2647 2607
2648 /* ARGS[0] should be a hook symbol. 2608 /* ARGS[0] should be a hook symbol.
2944 DEFUN ("funcall", Ffuncall, Sfuncall, 1, MANY, 0, 2904 DEFUN ("funcall", Ffuncall, Sfuncall, 1, MANY, 0,
2945 doc: /* Call first argument as a function, passing remaining arguments to it. 2905 doc: /* Call first argument as a function, passing remaining arguments to it.
2946 Return the value that function returns. 2906 Return the value that function returns.
2947 Thus, (funcall 'cons 'x 'y) returns (x . y). 2907 Thus, (funcall 'cons 'x 'y) returns (x . y).
2948 usage: (funcall FUNCTION &rest ARGUMENTS) */) 2908 usage: (funcall FUNCTION &rest ARGUMENTS) */)
2949 (nargs, args) 2909 (int nargs, Lisp_Object *args)
2950 int nargs;
2951 Lisp_Object *args;
2952 { 2910 {
2953 Lisp_Object fun, original_fun; 2911 Lisp_Object fun, original_fun;
2954 Lisp_Object funcar; 2912 Lisp_Object funcar;
2955 int numargs = nargs - 1; 2913 int numargs = nargs - 1;
2956 Lisp_Object lisp_numargs; 2914 Lisp_Object lisp_numargs;
3016 } 2974 }
3017 2975
3018 if (XSUBR (fun)->max_args > numargs) 2976 if (XSUBR (fun)->max_args > numargs)
3019 { 2977 {
3020 internal_args = (Lisp_Object *) alloca (XSUBR (fun)->max_args * sizeof (Lisp_Object)); 2978 internal_args = (Lisp_Object *) alloca (XSUBR (fun)->max_args * sizeof (Lisp_Object));
3021 bcopy (args + 1, internal_args, numargs * sizeof (Lisp_Object)); 2979 memcpy (internal_args, args + 1, numargs * sizeof (Lisp_Object));
3022 for (i = numargs; i < XSUBR (fun)->max_args; i++) 2980 for (i = numargs; i < XSUBR (fun)->max_args; i++)
3023 internal_args[i] = Qnil; 2981 internal_args[i] = Qnil;
3024 } 2982 }
3025 else 2983 else
3026 internal_args = args + 1; 2984 internal_args = args + 1;
3221 } 3179 }
3222 3180
3223 DEFUN ("fetch-bytecode", Ffetch_bytecode, Sfetch_bytecode, 3181 DEFUN ("fetch-bytecode", Ffetch_bytecode, Sfetch_bytecode,
3224 1, 1, 0, 3182 1, 1, 0,
3225 doc: /* If byte-compiled OBJECT is lazy-loaded, fetch it now. */) 3183 doc: /* If byte-compiled OBJECT is lazy-loaded, fetch it now. */)
3226 (object) 3184 (Lisp_Object object)
3227 Lisp_Object object;
3228 { 3185 {
3229 Lisp_Object tem; 3186 Lisp_Object tem;
3230 3187
3231 if (COMPILEDP (object) && CONSP (AREF (object, COMPILED_BYTECODE))) 3188 if (COMPILEDP (object) && CONSP (AREF (object, COMPILED_BYTECODE)))
3232 { 3189 {
3454 } 3411 }
3455 3412
3456 DEFUN ("backtrace-debug", Fbacktrace_debug, Sbacktrace_debug, 2, 2, 0, 3413 DEFUN ("backtrace-debug", Fbacktrace_debug, Sbacktrace_debug, 2, 2, 0,
3457 doc: /* Set the debug-on-exit flag of eval frame LEVEL levels down to FLAG. 3414 doc: /* Set the debug-on-exit flag of eval frame LEVEL levels down to FLAG.
3458 The debugger is entered when that frame exits, if the flag is non-nil. */) 3415 The debugger is entered when that frame exits, if the flag is non-nil. */)
3459 (level, flag) 3416 (Lisp_Object level, Lisp_Object flag)
3460 Lisp_Object level, flag;
3461 { 3417 {
3462 register struct backtrace *backlist = backtrace_list; 3418 register struct backtrace *backlist = backtrace_list;
3463 register int i; 3419 register int i;
3464 3420
3465 CHECK_NUMBER (level); 3421 CHECK_NUMBER (level);
3476 } 3432 }
3477 3433
3478 DEFUN ("backtrace", Fbacktrace, Sbacktrace, 0, 0, "", 3434 DEFUN ("backtrace", Fbacktrace, Sbacktrace, 0, 0, "",
3479 doc: /* Print a trace of Lisp function calls currently active. 3435 doc: /* Print a trace of Lisp function calls currently active.
3480 Output stream used is value of `standard-output'. */) 3436 Output stream used is value of `standard-output'. */)
3481 () 3437 (void)
3482 { 3438 {
3483 register struct backtrace *backlist = backtrace_list; 3439 register struct backtrace *backlist = backtrace_list;
3484 register int i; 3440 register int i;
3485 Lisp_Object tail; 3441 Lisp_Object tail;
3486 Lisp_Object tem; 3442 Lisp_Object tem;
3541 the value is (t FUNCTION ARG-VALUES...). 3497 the value is (t FUNCTION ARG-VALUES...).
3542 A &rest arg is represented as the tail of the list ARG-VALUES. 3498 A &rest arg is represented as the tail of the list ARG-VALUES.
3543 FUNCTION is whatever was supplied as car of evaluated list, 3499 FUNCTION is whatever was supplied as car of evaluated list,
3544 or a lambda expression for macro calls. 3500 or a lambda expression for macro calls.
3545 If NFRAMES is more than the number of frames, the value is nil. */) 3501 If NFRAMES is more than the number of frames, the value is nil. */)
3546 (nframes) 3502 (Lisp_Object nframes)
3547 Lisp_Object nframes;
3548 { 3503 {
3549 register struct backtrace *backlist = backtrace_list; 3504 register struct backtrace *backlist = backtrace_list;
3550 register int i; 3505 register int i;
3551 Lisp_Object tem; 3506 Lisp_Object tem;
3552 3507