diff options
author | Gerd Moellmann <gerd@gnu.org> | 2000-10-05 19:27:17 +0000 |
---|---|---|
committer | Gerd Moellmann <gerd@gnu.org> | 2000-10-05 19:27:17 +0000 |
commit | 1db0076e78b71009e98fc30cf02019c502da96b2 (patch) | |
tree | 2a4c38ca51f21d4147e63ed0cd5e78c6bc20f6dd /src/keyboard.c | |
parent | a18c0a477e917eee64654a043b595258174e9d88 (diff) | |
download | emacs-1db0076e78b71009e98fc30cf02019c502da96b2.tar.gz |
(Frecursive_edit): Make sure redisplay can happen.
(show_help_echo): Use safe_call instead of
call_function; use safe_eval instead of eval_form.
Diffstat (limited to 'src/keyboard.c')
-rw-r--r-- | src/keyboard.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index 754a80fe74b..16df84b80f5 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -939,6 +939,18 @@ This function is called by the editor initialization to begin editing.") 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 @@ show_help_echo (help, window, object, pos, ok_to_overwrite_keystroke_echo) 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; |