]> git.eshelyaron.com Git - emacs.git/commitdiff
Add face help-key-binding in help-char echo
authorStefan Kangas <stefankangas@gmail.com>
Wed, 5 Oct 2022 13:23:39 +0000 (15:23 +0200)
committerStefan Kangas <stefankangas@gmail.com>
Wed, 5 Oct 2022 13:23:39 +0000 (15:23 +0200)
* src/keyboard.c (echo_add_key): Add help-key-binding face to the
"?" key in 'help-char' echo.  (Bug#57906)
(syms_of_keyboard) <Qhelp_key_binding>: New DEFSYM.

src/keyboard.c

index da244904a4ac90f319f8133209f2220a19adbde6..8ab4a451b4560599ad9c6bd738fa215c42029b63 100644 (file)
@@ -499,27 +499,18 @@ echo_add_key (Lisp_Object c)
                        STRING_MULTIBYTE (name), 1);
     }
 
+  Lisp_Object new_string = make_string (buffer, ptr - buffer);
   if ((NILP (echo_string) || SCHARS (echo_string) == 0)
       && help_char_p (c))
     {
-      static const char text[] = " (Type ? for further options)";
-      int len = sizeof text - 1;
-
-      if (size - (ptr - buffer) < len)
-       {
-         ptrdiff_t offset = ptr - buffer;
-         size += len;
-         buffer = SAFE_ALLOCA (size);
-         ptr = buffer + offset;
-       }
-
-      memcpy (ptr, text, len);
-      ptr += len;
+      AUTO_STRING (str, " (Type ? for further options)");
+      AUTO_LIST2 (props, Qface, Qhelp_key_binding);
+      Fadd_text_properties (make_fixnum (7), make_fixnum (8), props, str);
+      new_string = concat2 (new_string, str);
     }
 
-  kset_echo_string
-    (current_kboard,
-     concat2 (echo_string, make_string (buffer, ptr - buffer)));
+  kset_echo_string (current_kboard,
+                   concat2 (echo_string, new_string));
   SAFE_FREE ();
 }
 
@@ -12252,6 +12243,8 @@ syms_of_keyboard (void)
 
   DEFSYM (Qhelp_form_show, "help-form-show");
 
+  DEFSYM (Qhelp_key_binding, "help-key-binding");
+
   DEFSYM (Qecho_keystrokes, "echo-keystrokes");
 
   Fset (Qinput_method_exit_on_first_char, Qnil);