aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorStefan Monnier2007-11-22 20:29:48 +0000
committerStefan Monnier2007-11-22 20:29:48 +0000
commit8787dd7335ebf649c9d092b4419b65d2397ec4ac (patch)
treed0e74a77780258651c2afd51fa1ba0e132145cd9 /src
parentd0a3b8c2742982086d18a7bdd61b2a7b818072c7 (diff)
downloademacs-8787dd7335ebf649c9d092b4419b65d2397ec4ac.tar.gz
emacs-8787dd7335ebf649c9d092b4419b65d2397ec4ac.zip
(do_symval_forwarding): Use same code as in find_symbol_value.
(find_symbol_value): Use do_symval_forwarding.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog3
-rw-r--r--src/data.c35
2 files changed, 8 insertions, 30 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index d6a4d2a7151..49c9e8e9974 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,8 @@
12007-11-22 Stefan Monnier <monnier@iro.umontreal.ca> 12007-11-22 Stefan Monnier <monnier@iro.umontreal.ca>
2 2
3 * data.c (do_symval_forwarding): Use same code as in find_symbol_value.
4 (find_symbol_value): Use do_symval_forwarding.
5
3 * data.c (set_internal): Set the value in the `cons-cell' (for 6 * data.c (set_internal): Set the value in the `cons-cell' (for
4 Buffer_Local_values) not only for frame-local variables. 7 Buffer_Local_values) not only for frame-local variables.
5 8
diff --git a/src/data.c b/src/data.c
index 787e81c9aed..0e3987ae540 100644
--- a/src/data.c
+++ b/src/data.c
@@ -864,7 +864,6 @@ do_symval_forwarding (valcontents)
864 register Lisp_Object valcontents; 864 register Lisp_Object valcontents;
865{ 865{
866 register Lisp_Object val; 866 register Lisp_Object val;
867 int offset;
868 if (MISCP (valcontents)) 867 if (MISCP (valcontents))
869 switch (XMISCTYPE (valcontents)) 868 switch (XMISCTYPE (valcontents))
870 { 869 {
@@ -879,11 +878,10 @@ do_symval_forwarding (valcontents)
879 return *XOBJFWD (valcontents)->objvar; 878 return *XOBJFWD (valcontents)->objvar;
880 879
881 case Lisp_Misc_Buffer_Objfwd: 880 case Lisp_Misc_Buffer_Objfwd:
882 offset = XBUFFER_OBJFWD (valcontents)->offset; 881 return PER_BUFFER_VALUE (current_buffer,
883 return PER_BUFFER_VALUE (current_buffer, offset); 882 XBUFFER_OBJFWD (valcontents)->offset);
884 883
885 case Lisp_Misc_Kboard_Objfwd: 884 case Lisp_Misc_Kboard_Objfwd:
886 offset = XKBOARD_OBJFWD (valcontents)->offset;
887 /* We used to simply use current_kboard here, but from Lisp 885 /* We used to simply use current_kboard here, but from Lisp
888 code, it's value is often unexpected. It seems nicer to 886 code, it's value is often unexpected. It seems nicer to
889 allow constructions like this to work as intuitively expected: 887 allow constructions like this to work as intuitively expected:
@@ -895,7 +893,8 @@ do_symval_forwarding (valcontents)
895 last-command and real-last-command, and people may rely on 893 last-command and real-last-command, and people may rely on
896 that. I took a quick look at the Lisp codebase, and I 894 that. I took a quick look at the Lisp codebase, and I
897 don't think anything will break. --lorentey */ 895 don't think anything will break. --lorentey */
898 return *(Lisp_Object *)(offset + (char *)FRAME_KBOARD (SELECTED_FRAME ())); 896 return *(Lisp_Object *)(XKBOARD_OBJFWD (valcontents)->offset
897 + (char *)FRAME_KBOARD (SELECTED_FRAME ()));
899 } 898 }
900 return valcontents; 899 return valcontents;
901} 900}
@@ -1104,31 +1103,7 @@ find_symbol_value (symbol)
1104 if (BUFFER_LOCAL_VALUEP (valcontents)) 1103 if (BUFFER_LOCAL_VALUEP (valcontents))
1105 valcontents = swap_in_symval_forwarding (symbol, valcontents); 1104 valcontents = swap_in_symval_forwarding (symbol, valcontents);
1106 1105
1107 if (MISCP (valcontents)) 1106 return do_symval_forwarding (valcontents);
1108 {
1109 switch (XMISCTYPE (valcontents))
1110 {
1111 case Lisp_Misc_Intfwd:
1112 XSETINT (val, *XINTFWD (valcontents)->intvar);
1113 return val;
1114
1115 case Lisp_Misc_Boolfwd:
1116 return (*XBOOLFWD (valcontents)->boolvar ? Qt : Qnil);
1117
1118 case Lisp_Misc_Objfwd:
1119 return *XOBJFWD (valcontents)->objvar;
1120
1121 case Lisp_Misc_Buffer_Objfwd:
1122 return PER_BUFFER_VALUE (current_buffer,
1123 XBUFFER_OBJFWD (valcontents)->offset);
1124
1125 case Lisp_Misc_Kboard_Objfwd:
1126 return *(Lisp_Object *)(XKBOARD_OBJFWD (valcontents)->offset
1127 + (char *)FRAME_KBOARD (SELECTED_FRAME ()));
1128 }
1129 }
1130
1131 return valcontents;
1132} 1107}
1133 1108
1134DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0, 1109DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0,