]> git.eshelyaron.com Git - emacs.git/commitdiff
(Frecursive_edit): Make sure redisplay can happen.
authorGerd Moellmann <gerd@gnu.org>
Thu, 5 Oct 2000 19:27:17 +0000 (19:27 +0000)
committerGerd Moellmann <gerd@gnu.org>
Thu, 5 Oct 2000 19:27:17 +0000 (19:27 +0000)
(show_help_echo): Use safe_call instead of
call_function; use safe_eval instead of eval_form.

src/keyboard.c

index 754a80fe74b392d79093ab57eb70d78f07b85c8b..16df84b80f51466730aad048f2044c1be769b024 100644 (file)
@@ -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;