aboutsummaryrefslogtreecommitdiffstats
path: root/src/keyboard.c
diff options
context:
space:
mode:
authorGerd Moellmann <[email protected]>2001-08-09 13:01:38 +0000
committerGerd Moellmann <[email protected]>2001-08-09 13:01:38 +0000
commitf0c1cc56a032bf5a6bbaa4850bc68608521b375f (patch)
tree463c1a03705d7b28b6178314988fa1909da8ee12 /src/keyboard.c
parenteaa2319f354bcab70e7cb543b769b78c17816265 (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.c28
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);