aboutsummaryrefslogtreecommitdiffstats
path: root/src/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/keymap.c')
-rw-r--r--src/keymap.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/keymap.c b/src/keymap.c
index 782931fadff..bb26b6389d4 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -2846,6 +2846,21 @@ DESCRIBER is the output function used; nil means use `princ'. */)
2846 return unbind_to (count, Qnil); 2846 return unbind_to (count, Qnil);
2847} 2847}
2848 2848
2849static Lisp_Object fontify_key_properties;
2850
2851static Lisp_Object
2852describe_key_maybe_fontify (Lisp_Object str, Lisp_Object prefix,
2853 bool keymap_p)
2854{
2855 Lisp_Object key_desc = Fkey_description (str, prefix);
2856 if (keymap_p)
2857 Fadd_text_properties (make_fixnum (0),
2858 make_fixnum (SCHARS (key_desc)),
2859 fontify_key_properties,
2860 key_desc);
2861 return key_desc;
2862}
2863
2849DEFUN ("help--describe-vector", Fhelp__describe_vector, Shelp__describe_vector, 7, 7, 0, 2864DEFUN ("help--describe-vector", Fhelp__describe_vector, Shelp__describe_vector, 7, 7, 0,
2850 doc: /* Insert in the current buffer a description of the contents of VECTOR. 2865 doc: /* Insert in the current buffer a description of the contents of VECTOR.
2851Call DESCRIBER to insert the description of one value found in VECTOR. 2866Call DESCRIBER to insert the description of one value found in VECTOR.
@@ -3021,7 +3036,7 @@ describe_vector (Lisp_Object vector, Lisp_Object prefix, Lisp_Object args,
3021 if (!NILP (elt_prefix)) 3036 if (!NILP (elt_prefix))
3022 insert1 (elt_prefix); 3037 insert1 (elt_prefix);
3023 3038
3024 insert1 (Fkey_description (kludge, prefix)); 3039 insert1 (describe_key_maybe_fontify (kludge, prefix, keymap_p));
3025 3040
3026 /* Find all consecutive characters or rows that have the same 3041 /* Find all consecutive characters or rows that have the same
3027 definition. But, if VECTOR is a char-table, we had better 3042 definition. But, if VECTOR is a char-table, we had better
@@ -3071,7 +3086,7 @@ describe_vector (Lisp_Object vector, Lisp_Object prefix, Lisp_Object args,
3071 if (!NILP (elt_prefix)) 3086 if (!NILP (elt_prefix))
3072 insert1 (elt_prefix); 3087 insert1 (elt_prefix);
3073 3088
3074 insert1 (Fkey_description (kludge, prefix)); 3089 insert1 (describe_key_maybe_fontify (kludge, prefix, keymap_p));
3075 } 3090 }
3076 3091
3077 /* Print a description of the definition of this character. 3092 /* Print a description of the definition of this character.
@@ -3200,6 +3215,12 @@ be preferred. */);
3200 staticpro (&where_is_cache); 3215 staticpro (&where_is_cache);
3201 staticpro (&where_is_cache_keymaps); 3216 staticpro (&where_is_cache_keymaps);
3202 3217
3218 DEFSYM (Qfont_lock_face, "font-lock-face");
3219 DEFSYM (Qhelp_key_binding, "help-key-binding");
3220 staticpro (&fontify_key_properties);
3221 fontify_key_properties = Fcons (Qfont_lock_face,
3222 Fcons (Qhelp_key_binding, Qnil));
3223
3203 defsubr (&Skeymapp); 3224 defsubr (&Skeymapp);
3204 defsubr (&Skeymap_parent); 3225 defsubr (&Skeymap_parent);
3205 defsubr (&Skeymap_prompt); 3226 defsubr (&Skeymap_prompt);