# HG changeset patch # User Gerd Moellmann # Date 997362098 0 # Node ID ea3e88f0c205041ab2864bf2eeb779e8c16c2a7d # Parent b9f580ca37a01dbba2fadfa2d47c8a985ab9d855 (Vpre_help_message): New variable. (syms_of_keyboard): Initialize and staticpro it. (show_help_echo): Record current message before displaying a help-echo, and restore that message when clearing the help. diff -r b9f580ca37a0 -r ea3e88f0c205 src/keyboard.c --- a/src/keyboard.c Thu Aug 09 09:48:24 2001 +0000 +++ b/src/keyboard.c Thu Aug 09 13:01:38 2001 +0000 @@ -190,13 +190,21 @@ Lisp_Object Vshow_help_function; +/* If a string, the message displayed before displaying a help-echo + in the echo area. */ + +Lisp_Object Vpre_help_message; + /* Nonzero means do menu prompting. */ + static int menu_prompting; /* Character to see next line of menu prompt. */ + static Lisp_Object menu_prompt_more_char; /* For longjmp to where kbd input is being done. */ + static jmp_buf getcjmp; /* True while doing kbd input. */ @@ -2030,14 +2038,25 @@ { if (STRINGP (help)) { - int count = specpdl_ptr - specpdl; + int count = BINDING_STACK_SIZE (); + + if (!help_echo_showing_p) + Vpre_help_message = current_message (); + specbind (Qmessage_truncate_lines, Qt); message3_nolog (help, STRING_BYTES (XSTRING (help)), STRING_MULTIBYTE (help)); unbind_to (count, Qnil); } + else if (STRINGP (Vpre_help_message)) + { + message3_nolog (Vpre_help_message, + STRING_BYTES (XSTRING (Vpre_help_message)), + STRING_MULTIBYTE (Vpre_help_message)); + Vpre_help_message = Qnil; + } else - message (0); + message (0); } help_echo_showing_p = STRINGP (help); @@ -10165,9 +10184,12 @@ void syms_of_keyboard () { + Vpre_help_message = Qnil; + staticpro (&Vpre_help_message); + Vlispy_mouse_stem = build_string ("mouse"); staticpro (&Vlispy_mouse_stem); - + /* Tool-bars. */ QCimage = intern (":image"); staticpro (&QCimage);