# HG changeset patch # User Karl Heuer # Date 802659330 0 # Node ID 12720a817d83976c9ed1d021922ce3f3dd7ef1dc # Parent 4aa248ba0abb121d8e97aff607189910224cbe6a (Vhelp_event_list): New var. (syms_of_keyboard): Set up Lisp var. (help_char_p): New function. (read_char, echo_char, read_key_sequence): Use help_char_p. diff -r 4aa248ba0abb -r 12720a817d83 src/keyboard.c --- a/src/keyboard.c Fri Jun 09 00:53:44 1995 +0000 +++ b/src/keyboard.c Fri Jun 09 00:55:30 1995 +0000 @@ -148,6 +148,9 @@ /* Character to recognize as the help char. */ Lisp_Object Vhelp_char; +/* List of other event types to recognize as meaning "help". */ +Lisp_Object Vhelp_event_list; + /* Form to execute when help char is typed. */ Lisp_Object Vhelp_form; @@ -563,7 +566,7 @@ } if (current_kboard->echoptr == current_kboard->echobuf - && EQ (c, Vhelp_char)) + && help_char_p (c)) { strcpy (ptr, " (Type ? for further options)"); ptr += strlen (ptr); @@ -2050,7 +2053,7 @@ num_input_chars++; /* Process the help character specially if enabled */ - if (EQ (c, Vhelp_char) && !NILP (Vhelp_form)) + if (!NILP (Vhelp_form) && help_char_p (c)) { Lisp_Object tem0; count = specpdl_ptr - specpdl; @@ -2082,6 +2085,22 @@ return c; } +/* Return 1 if should recognize C as "the help character". */ + +int +help_char_p (c) + Lisp_Object c; +{ + Lisp_Object tail; + + if (EQ (c, Vhelp_char)) + return 1; + for (tail = Vhelp_event_list; CONSP (tail); tail = XCONS (tail)->cdr) + if (EQ (c, XCONS (tail)->car)) + return 1; + return 0; +} + /* Record the input event C in various ways. */ static void @@ -5444,7 +5463,7 @@ Lisp_Object head; head = EVENT_HEAD (key); - if (EQ (head, Vhelp_char)) + if (help_char_p (head)) { read_key_sequence_cmd = Vprefix_help_command; keybuf[t++] = key; @@ -6965,6 +6984,11 @@ If the value of `help-form' is nil, this char can be read normally."); XSETINT (Vhelp_char, Ctl ('H')); + DEFVAR_LISP ("help-event-list", &Vhelp_event_list, + "List of input events to recognize as meaning Help.\n\ +These work just like the value of `help-char' (see that)."); + Vhelp_event_list = Qnil; + DEFVAR_LISP ("help-form", &Vhelp_form, "Form to execute when character `help-char' is read.\n\ If the form returns a string, that string is displayed.\n\