comparison src/keyboard.c @ 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 6c61e0dbf542
children 9b2a0dc393a4
comparison
equal deleted inserted replaced
32173:fea92799d3e9 32174:13415f4f854a
936 { 936 {
937 int count = specpdl_ptr - specpdl; 937 int count = specpdl_ptr - specpdl;
938 938
939 command_loop_level++; 939 command_loop_level++;
940 update_mode_lines = 1; 940 update_mode_lines = 1;
941
942 /* This function may have been called from a debugger called from
943 within redisplay, for instance by Edebugging a function called
944 from fontification-functions. We want to allow redisplay in
945 the debugging session.
946
947 The recursive edit is left with a `(throw exit ...)'. The `exit'
948 tag is not caught anywhere in redisplay, i.e. when we leave the
949 recursive edit, the original redisplay leading to the recursive
950 edit will be unwound. The outcome should therefore be safe. */
951 specbind (Qinhibit_redisplay, Qnil);
952 redisplaying_p = 0;
941 953
942 record_unwind_protect (recursive_edit_unwind, 954 record_unwind_protect (recursive_edit_unwind,
943 (command_loop_level 955 (command_loop_level
944 && current_buffer != XBUFFER (XWINDOW (selected_window)->buffer)) 956 && current_buffer != XBUFFER (XWINDOW (selected_window)->buffer))
945 ? Fcurrent_buffer () 957 ? Fcurrent_buffer ()
1958 Lisp_Object args[4]; 1970 Lisp_Object args[4];
1959 args[0] = help; 1971 args[0] = help;
1960 args[1] = window; 1972 args[1] = window;
1961 args[2] = object; 1973 args[2] = object;
1962 args[3] = pos; 1974 args[3] = pos;
1963 help = call_function (4, args); 1975 help = safe_call (4, args);
1964 } 1976 }
1965 else 1977 else
1966 help = eval_form (help); 1978 help = safe_eval (help);
1967 1979
1968 if (!STRINGP (help)) 1980 if (!STRINGP (help))
1969 return; 1981 return;
1970 } 1982 }
1971 1983