summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/rmc.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emacs-lisp/rmc.el')
-rw-r--r--lisp/emacs-lisp/rmc.el24
1 files changed, 13 insertions, 11 deletions
diff --git a/lisp/emacs-lisp/rmc.el b/lisp/emacs-lisp/rmc.el
index 90fd8b370e8..522d395eba7 100644
--- a/lisp/emacs-lisp/rmc.el
+++ b/lisp/emacs-lisp/rmc.el
@@ -26,21 +26,23 @@
(require 'seq)
(defun rmc--add-key-description (elem)
- (let* ((name (cadr elem))
- (pos (seq-position name (car elem)))
+ (let* ((char (car elem))
+ (name (cadr elem))
+ (pos (seq-position name char))
+ (desc (key-description (char-to-string char)))
(graphical-terminal
(display-supports-face-attributes-p
'(:underline t) (window-frame)))
(altered-name
(cond
- ;; Not in the name string.
- ((not pos)
- (let ((ch (char-to-string (car elem))))
- (format "[%s] %s"
- (if graphical-terminal
- (propertize ch 'face 'read-multiple-choice-face)
- ch)
- name)))
+ ;; Not in the name string, or a special character.
+ ((or (not pos)
+ (member desc '("ESC" "TAB" "RET" "DEL" "SPC")))
+ (format "[%s] %s"
+ (if graphical-terminal
+ (propertize desc 'face 'read-multiple-choice-face)
+ desc)
+ name))
;; The prompt character is in the name, so highlight
;; it on graphical terminals.
(graphical-terminal
@@ -57,7 +59,7 @@
(upcase (substring name pos (1+ pos)))
"]"
(substring name (1+ pos)))))))
- (cons (car elem) altered-name)))
+ (cons char altered-name)))
(defun rmc--show-help (prompt help-string show-help choices altered-names)
(let* ((buf-name (if (stringp show-help)