diff options
author | Gerd Moellmann <[email protected]> | 2001-08-09 13:01:38 +0000 |
---|---|---|
committer | Gerd Moellmann <[email protected]> | 2001-08-09 13:01:38 +0000 |
commit | f0c1cc56a032bf5a6bbaa4850bc68608521b375f (patch) | |
tree | 463c1a03705d7b28b6178314988fa1909da8ee12 /src/keyboard.c | |
parent | eaa2319f354bcab70e7cb543b769b78c17816265 (diff) |
(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.
Diffstat (limited to 'src/keyboard.c')
-rw-r--r-- | src/keyboard.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index 754df8bbda..8043d71c16 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); |