# HG changeset patch # User Gerd Moellmann # Date 970774037 0 # Node ID 13415f4f854a2392dddcdf7afa74c5ee3f9e99f4 # Parent fea92799d3e9b936be1bbc24d5d1af2c546cd39a (Frecursive_edit): Make sure redisplay can happen. (show_help_echo): Use safe_call instead of call_function; use safe_eval instead of eval_form. diff -r fea92799d3e9 -r 13415f4f854a src/keyboard.c --- a/src/keyboard.c Thu Oct 05 19:26:09 2000 +0000 +++ b/src/keyboard.c Thu Oct 05 19:27:17 2000 +0000 @@ -939,6 +939,18 @@ command_loop_level++; update_mode_lines = 1; + /* This function may have been called from a debugger called from + within redisplay, for instance by Edebugging a function called + from fontification-functions. We want to allow redisplay in + the debugging session. + + The recursive edit is left with a `(throw exit ...)'. The `exit' + tag is not caught anywhere in redisplay, i.e. when we leave the + recursive edit, the original redisplay leading to the recursive + edit will be unwound. The outcome should therefore be safe. */ + specbind (Qinhibit_redisplay, Qnil); + redisplaying_p = 0; + record_unwind_protect (recursive_edit_unwind, (command_loop_level && current_buffer != XBUFFER (XWINDOW (selected_window)->buffer)) @@ -1960,10 +1972,10 @@ args[1] = window; args[2] = object; args[3] = pos; - help = call_function (4, args); + help = safe_call (4, args); } else - help = eval_form (help); + help = safe_eval (help); if (!STRINGP (help)) return;