From: Gerd Moellmann Date: Thu, 9 Aug 2001 13:01:38 +0000 (+0000) Subject: (Vpre_help_message): New variable. X-Git-Tag: emacs-pretest-21.0.105~239 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f0c1cc56a032bf5a6bbaa4850bc68608521b375f;p=emacs.git (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 --git a/src/keyboard.c b/src/keyboard.c index 754df8bbda1..8043d71c168 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -190,13 +190,21 @@ extern struct backtrace *backtrace_list; 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 @@ show_help_echo (help, window, object, pos, ok_to_overwrite_keystroke_echo) { 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 @@ struct event_head head_table[] = { 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);