changeset 32174:13415f4f854a

(Frecursive_edit): Make sure redisplay can happen. (show_help_echo): Use safe_call instead of call_function; use safe_eval instead of eval_form.
author Gerd Moellmann <gerd@gnu.org>
date Thu, 05 Oct 2000 19:27:17 +0000
parents fea92799d3e9
children e5d99e8cbd94
files src/keyboard.c
diffstat 1 files changed, 14 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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;