diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2008-05-20 00:13:37 +0000 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2008-05-20 00:13:37 +0000 |
commit | 40a69fac46d1c66275912ed98beb4b34a64164bb (patch) | |
tree | c837c8b298dfc6705b0494283dc11ecb91106123 | |
parent | 12a28ea34cf170499991df5ac70abedb3884137f (diff) | |
download | emacs-40a69fac46d1c66275912ed98beb4b34a64164bb.tar.gz |
* xdisp.c (select_frame_for_redisplay): Adjust for last change to
indirect_variable.
* eval.c (lisp_indirect_variable): New fun.
(Fuser_variable_p): Use it.
-rw-r--r-- | src/ChangeLog | 7 | ||||
-rw-r--r-- | src/eval.c | 9 | ||||
-rw-r--r-- | src/xdisp.c | 13 |
3 files changed, 22 insertions, 7 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 0232ce4a1ca..9eb5f95b5fb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2008-05-20 Stefan Monnier <monnier@iro.umontreal.ca> + + * xdisp.c (select_frame_for_redisplay): Adjust for last change to + indirect_variable. + * eval.c (lisp_indirect_variable): New fun. + (Fuser_variable_p): Use it. + 2008-05-19 Stefan Monnier <monnier@iro.umontreal.ca> * lisp.h (indirect_variable): diff --git a/src/eval.c b/src/eval.c index 2652064e064..076ac91cb6f 100644 --- a/src/eval.c +++ b/src/eval.c @@ -934,6 +934,13 @@ user_variable_p_eh (ignore) return Qnil; } +static Lisp_Object +lisp_indirect_variable (Lisp_Object sym) +{ + XSETSYMBOL (sym, indirect_variable (XSYMBOL (sym))); + return sym; +} + DEFUN ("user-variable-p", Fuser_variable_p, Suser_variable_p, 1, 1, 0, doc: /* Return t if VARIABLE is intended to be set and modified by users. \(The alternative is a variable used internally in a Lisp program.) @@ -954,7 +961,7 @@ chain of symbols. */) /* If indirect and there's an alias loop, don't check anything else. */ if (XSYMBOL (variable)->indirect_variable - && NILP (internal_condition_case_1 (indirect_variable, variable, + && NILP (internal_condition_case_1 (lisp_indirect_variable, variable, Qt, user_variable_p_eh))) return Qnil; diff --git a/src/xdisp.c b/src/xdisp.c index 9f0c173d5b7..83e84861425 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -11033,8 +11033,9 @@ static void select_frame_for_redisplay (frame) Lisp_Object frame; { - Lisp_Object tail, sym, val; + Lisp_Object tail, symbol, val; Lisp_Object old = selected_frame; + struct Lisp_Symbol *sym; xassert (FRAMEP (frame) && FRAME_LIVE_P (XFRAME (frame))); @@ -11044,15 +11045,15 @@ select_frame_for_redisplay (frame) { for (tail = XFRAME (frame)->param_alist; CONSP (tail); tail = XCDR (tail)) if (CONSP (XCAR (tail)) - && (sym = XCAR (XCAR (tail)), - SYMBOLP (sym)) - && (sym = indirect_variable (sym), - val = SYMBOL_VALUE (sym), + && (symbol = XCAR (XCAR (tail)), + SYMBOLP (symbol)) + && (sym = indirect_variable (XSYMBOL (symbol)), + val = sym->value, (BUFFER_LOCAL_VALUEP (val))) && XBUFFER_LOCAL_VALUE (val)->check_frame) /* Use find_symbol_value rather than Fsymbol_value to avoid an error if it is void. */ - find_symbol_value (sym); + find_symbol_value (symbol); } while (!EQ (frame, old) && (frame = old, 1)); } |