aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorStefan Monnier2008-05-19 18:38:55 +0000
committerStefan Monnier2008-05-19 18:38:55 +0000
commitad97b375e8189e1826d562898ea78e4f3bb94bda (patch)
tree4b24a048a633d964e947b4263c1e89ec39958a9e /src/buffer.c
parent61bd39a3bd199e2ad73dfa74105ff062dcf26580 (diff)
downloademacs-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.c33
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
4552void 4554void
4553buffer_slot_type_mismatch (sym, type) 4555buffer_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