diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lisp.h | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/lisp.h b/src/lisp.h index b8d22f60077..702e0d5b2f4 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -670,8 +670,20 @@ extern void defvar_int (); | |||
| 670 | #define DEFVAR_PER_BUFFER(lname, vname, type, doc) \ | 670 | #define DEFVAR_PER_BUFFER(lname, vname, type, doc) \ |
| 671 | defvar_per_buffer (lname, vname, type, 0) | 671 | defvar_per_buffer (lname, vname, type, 0) |
| 672 | 672 | ||
| 673 | /* Structure for recording Lisp call stack for backtrace purposes */ | 673 | /* Structure for recording Lisp call stack for backtrace purposes. */ |
| 674 | 674 | ||
| 675 | /* The special binding stack holds the outer values of variables while | ||
| 676 | they are bound by a function application or a let form, stores the | ||
| 677 | code to be executed for Lisp unwind-protect forms, and stores the C | ||
| 678 | functions to be called for record_unwind_protect. | ||
| 679 | |||
| 680 | If func is non-zero, undoing this binding applies func to old_value; | ||
| 681 | This implements record_unwind_protect. | ||
| 682 | If func is zero and symbol is nil, undoing this binding evaluates | ||
| 683 | the list of forms in old_value; this implements Lisp's unwind-protect | ||
| 684 | form. | ||
| 685 | Otherwise, undoing this binding stores old_value as symbol's value; this | ||
| 686 | undoes the bindings made by a let form or function call. */ | ||
| 675 | struct specbinding | 687 | struct specbinding |
| 676 | { | 688 | { |
| 677 | Lisp_Object symbol, old_value; | 689 | Lisp_Object symbol, old_value; |
| @@ -683,13 +695,17 @@ extern struct specbinding *specpdl; | |||
| 683 | extern struct specbinding *specpdl_ptr; | 695 | extern struct specbinding *specpdl_ptr; |
| 684 | extern int specpdl_size; | 696 | extern int specpdl_size; |
| 685 | 697 | ||
| 698 | /* Everything needed to describe an active condition case. */ | ||
| 686 | struct handler | 699 | struct handler |
| 687 | { | 700 | { |
| 701 | /* The handler clauses and variable from the condition-case form. */ | ||
| 688 | Lisp_Object handler; | 702 | Lisp_Object handler; |
| 689 | Lisp_Object var; | 703 | Lisp_Object var; |
| 690 | int poll_suppress_count; /* No error should exit a piece of code | 704 | |
| 691 | in which polling is suppressed. */ | 705 | /* Used to effect the longjump out to the handler. */ |
| 692 | struct catchtag *tag; | 706 | struct catchtag *tag; |
| 707 | |||
| 708 | /* The next enclosing handler. */ | ||
| 693 | struct handler *next; | 709 | struct handler *next; |
| 694 | }; | 710 | }; |
| 695 | 711 | ||