Mercurial > emacs
changeset 38751:ea3e88f0c205
(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.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Thu, 09 Aug 2001 13:01:38 +0000 |
parents | b9f580ca37a0 |
children | 59cccbc83f43 |
files | src/keyboard.c |
diffstat | 1 files changed, 25 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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);