emacs-diffs
[Top][All Lists]
Advanced

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]