diff options
| author | Stefan Monnier | 2008-05-19 18:38:55 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2008-05-19 18:38:55 +0000 |
| commit | ad97b375e8189e1826d562898ea78e4f3bb94bda (patch) | |
| tree | 4b24a048a633d964e947b4263c1e89ec39958a9e /src/buffer.c | |
| parent | 61bd39a3bd199e2ad73dfa74105ff062dcf26580 (diff) | |
| download | emacs-ad97b375e8189e1826d562898ea78e4f3bb94bda.tar.gz emacs-ad97b375e8189e1826d562898ea78e4f3bb94bda.zip | |
* lisp.h (indirect_variable):
* data.c (indirect_variable, let_shadows_buffer_binding_p):
Use Lisp_Symbol pointers rather than Lisp_Object. Adjust callers.
* buffer.c (buffer_slot_type_mismatch): Use wrong-type-argument.
To this end, change calling-convention.
Diffstat (limited to 'src/buffer.c')
| -rw-r--r-- | src/buffer.c | 33 |
1 files changed, 12 insertions, 21 deletions
diff --git a/src/buffer.c b/src/buffer.c index 5633b29f5f9..86ba8263ab1 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -927,12 +927,14 @@ is the default binding of the variable. */) | |||
| 927 | { | 927 | { |
| 928 | register struct buffer *buf; | 928 | register struct buffer *buf; |
| 929 | register Lisp_Object result; | 929 | register Lisp_Object result; |
| 930 | struct Lisp_Symbol *sym; | ||
| 930 | 931 | ||
| 931 | CHECK_SYMBOL (variable); | 932 | CHECK_SYMBOL (variable); |
| 932 | CHECK_BUFFER (buffer); | 933 | CHECK_BUFFER (buffer); |
| 933 | buf = XBUFFER (buffer); | 934 | buf = XBUFFER (buffer); |
| 934 | 935 | ||
| 935 | variable = indirect_variable (variable); | 936 | sym = indirect_variable (XSYMBOL (variable)); |
| 937 | XSETSYMBOL (variable, sym); | ||
| 936 | 938 | ||
| 937 | /* Look in local_var_list */ | 939 | /* Look in local_var_list */ |
| 938 | result = Fassoc (variable, buf->local_var_alist); | 940 | result = Fassoc (variable, buf->local_var_alist); |
| @@ -969,7 +971,7 @@ is the default binding of the variable. */) | |||
| 969 | Lisp_Object current_alist_element; | 971 | Lisp_Object current_alist_element; |
| 970 | 972 | ||
| 971 | /* What binding is loaded right now? */ | 973 | /* What binding is loaded right now? */ |
| 972 | valcontents = SYMBOL_VALUE (variable); | 974 | valcontents = sym->value; |
| 973 | current_alist_element | 975 | current_alist_element |
| 974 | = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); | 976 | = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr); |
| 975 | 977 | ||
| @@ -4550,32 +4552,21 @@ evaporate_overlays (pos) | |||
| 4550 | in the slot with offset OFFSET. */ | 4552 | in the slot with offset OFFSET. */ |
| 4551 | 4553 | ||
| 4552 | void | 4554 | void |
| 4553 | buffer_slot_type_mismatch (sym, type) | 4555 | buffer_slot_type_mismatch (newval, type) |
| 4554 | Lisp_Object sym; | 4556 | Lisp_Object newval; |
| 4555 | int type; | 4557 | int type; |
| 4556 | { | 4558 | { |
| 4557 | char *type_name; | 4559 | Lisp_Object predicate; |
| 4558 | 4560 | ||
| 4559 | switch (type) | 4561 | switch (type) |
| 4560 | { | 4562 | { |
| 4561 | case Lisp_Int: | 4563 | case Lisp_Int: predicate = Qintegerp; break; |
| 4562 | type_name = "integers"; | 4564 | case Lisp_String: predicate = Qstringp; break; |
| 4563 | break; | 4565 | case Lisp_Symbol: predicate = Qsymbolp; break; |
| 4564 | 4566 | default: abort (); | |
| 4565 | case Lisp_String: | ||
| 4566 | type_name = "strings"; | ||
| 4567 | break; | ||
| 4568 | |||
| 4569 | case Lisp_Symbol: | ||
| 4570 | type_name = "symbols"; | ||
| 4571 | break; | ||
| 4572 | |||
| 4573 | default: | ||
| 4574 | abort (); | ||
| 4575 | } | 4567 | } |
| 4576 | 4568 | ||
| 4577 | error ("Only %s should be stored in the buffer-local variable %s", | 4569 | wrong_type_argument (predicate, newval); |
| 4578 | type_name, SDATA (SYMBOL_NAME (sym))); | ||
| 4579 | } | 4570 | } |
| 4580 | 4571 | ||
| 4581 | 4572 | ||