diff --git a/etc/NEWS b/etc/NEWS index c18872189e4..ccef8a0f1ed 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -189,6 +189,26 @@ This user option controls outline visibility in the output buffer of *** 'C-h m' ('describe-mode') uses outlining by default. Set 'describe-mode-outline' to nil to get back the old behavior. +*** 'C-h k' ('describe-key') shows Unicode name. +For keybindings which produce single characters via translation or input +methods, 'C-h k' now shows the Unicode name of the produced character in +addition to the character itself, e.g. + +'C-h k C-x 8 E' => + + € 'EURO SIGN' (translated from C-x 8 E) + +*** 'C-h b' ('describe-bindings') shows Unicode names. +For keybindings which produce single characters via translation (such as +those using the 'C-x 8' or 'A-' prefix, or 'dead-acute', 'dead-grave', +etc), the Unicode names will now be shown in addition to the character +itself, i.e. + + A-! ¡ INVERTED EXCLAMATION MARK + A-$ ¤ CURRENCY SIGN + +and so on. + ** Emacs now comes with Org v9.7. See the file "etc/ORG-NEWS" for user-visible changes in Org. diff --git a/lisp/help.el b/lisp/help.el index 2feb178ff6c..878dd404256 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -883,7 +883,9 @@ If INSERT (the prefix arg) is non-nil, insert the message in the buffer." (let ((otherstring (help--key-description-fontified untranslated))) (if (equal string otherstring) string - (format "%s (translated from %s)" string otherstring)))))) + (if-let ((char-name (char-to-name (aref string 0)))) + (format "%s '%s' (translated from %s)" string char-name otherstring) + (format "%s (translated from %s)" string otherstring))))))) (defun help--binding-undefined-p (defn) (or (null defn) (integerp defn) (equal defn #'undefined))) @@ -1664,7 +1666,10 @@ Return nil if the key sequence is too long." (defun help--describe-command (definition &optional translation) (cond ((or (stringp definition) (vectorp definition)) (if translation - (insert (key-description definition nil) "\n") + (insert (concat (key-description definition nil) + (when-let ((char-name (char-to-name (aref definition 0)))) + (format "\t%s" char-name)) + "\n")) ;; These should be rare nowadays, replaced by `kmacro's. (insert "Keyboard Macro\n"))) ((keymapp definition)