read-multiple-choice: Display "SPC" instead of " "

* lisp/emacs-lisp/rmc.el (rmc--add-key-description): Improve display
of the keys TAB, RET, SPC, DEL, and ESC.  This fixes a bug where " "
was highlighted in the description in a confusing way.
* test/lisp/emacs-lisp/rmc-tests.el
(test-rmc--add-key-description)
(test-rmc--add-key-description/with-attributes): Update tests for the
above change.
This commit is contained in:
Stefan Kangas 2021-12-26 06:47:15 +01:00
parent 1e7786437d
commit 40dcf9c2ab
2 changed files with 20 additions and 13 deletions

View file

@ -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)