[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 40dcf9c2ab 4/5: read-multiple-choice: Display "SPC" instead of "
From: |
Stefan Kangas |
Subject: |
master 40dcf9c2ab 4/5: read-multiple-choice: Display "SPC" instead of " " |
Date: |
Sun, 26 Dec 2021 11:06:56 -0500 (EST) |
branch: master
commit 40dcf9c2abd62425e599f30548dc53fa58fe2202
Author: Stefan Kangas <stefan@marxist.se>
Commit: Stefan Kangas <stefan@marxist.se>
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.
---
lisp/emacs-lisp/rmc.el | 24 +++++++++++++-----------
test/lisp/emacs-lisp/rmc-tests.el | 9 +++++++--
2 files changed, 20 insertions(+), 13 deletions(-)
diff --git a/lisp/emacs-lisp/rmc.el b/lisp/emacs-lisp/rmc.el
index 90fd8b370e..522d395eba 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)
diff --git a/test/lisp/emacs-lisp/rmc-tests.el
b/test/lisp/emacs-lisp/rmc-tests.el
index a97254c46d..5a79c505ae 100644
--- a/test/lisp/emacs-lisp/rmc-tests.el
+++ b/test/lisp/emacs-lisp/rmc-tests.el
@@ -34,7 +34,9 @@
(should (equal (rmc--add-key-description '(?y "yes"))
'(?y . "yes")))
(should (equal (rmc--add-key-description '(?n "foo"))
- '(?n . "[n] foo")))))
+ '(?n . "[n] foo")))
+ (should (equal (rmc--add-key-description '(?\s "foo bar"))
+ `(?\s . "[SPC] foo bar")))))
(ert-deftest test-rmc--add-key-description/with-attributes ()
(cl-letf (((symbol-function 'display-supports-face-attributes-p) (lambda (_
_) t)))
@@ -43,7 +45,10 @@
`(?y . ,(concat (propertize "y" 'face 'read-multiple-choice-face)
"es"))))
(should (equal-including-properties
(rmc--add-key-description '(?n "foo"))
- `(?n . ,(concat "[" (propertize "n" 'face
'read-multiple-choice-face) "] foo"))))))
+ `(?n . ,(concat "[" (propertize "n" 'face
'read-multiple-choice-face) "] foo"))))
+ (should (equal-including-properties
+ (rmc--add-key-description '(?\s "foo bar"))
+ `(?\s . ,(concat "[" (propertize "SPC" 'face
'read-multiple-choice-face) "] foo bar"))))))
(ert-deftest test-rmc--add-key-description/non-graphical-display ()
(cl-letf (((symbol-function 'display-supports-face-attributes-p) (lambda (_
_) nil)))