diff options
Diffstat (limited to 'src/keymap.c')
| -rw-r--r-- | src/keymap.c | 25 |
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 | ||
| 2849 | static Lisp_Object fontify_key_properties; | ||
| 2850 | |||
| 2851 | static Lisp_Object | ||
| 2852 | describe_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 | |||
| 2849 | DEFUN ("help--describe-vector", Fhelp__describe_vector, Shelp__describe_vector, 7, 7, 0, | 2864 | DEFUN ("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. |
| 2851 | Call DESCRIBER to insert the description of one value found in VECTOR. | 2866 | Call 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); |