emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacs-29 9ac12592781: Fix display of menu-bar bindings of commands in *H


From: Eli Zaretskii
Subject: emacs-29 9ac12592781: Fix display of menu-bar bindings of commands in *Help* buffers
Date: Wed, 19 Apr 2023 13:48:01 -0400 (EDT)

branch: emacs-29
commit 9ac12592781934bcd934bc0cae71a637311119ec
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>

    Fix display of menu-bar bindings of commands in *Help* buffers
    
    * lisp/help-fns.el (help-fns--insert-menu-bindings): Propertize
    with 'help-key-binding' face only the menu items, not the arrows
    between successive items.  This is because 'char-displayable-p' is
    unreliable when we propertize the character with an arbitrary
    face: that face could specify a font which doesn't support the
    character after all, while 'char-displayable-p' assumes there are
    no restrictions on fonts that can be used for displaying the
    character.  Also, make the code more efficient by avoiding the
    call to 'char-displayable-p' inside the loop.
---
 lisp/help-fns.el | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index a1fc2267564..be13d40cfa3 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -592,22 +592,22 @@ the C sources, too."
     ;; First collect all the printed representations of menus.
     (dolist (menu menus)
       (let ((map (lookup-key global-map (seq-take menu 1)))
-            (string nil))
+            (string nil)
+            (sep (if (char-displayable-p ?→) " → " " => ")))
         (seq-do-indexed
          (lambda (entry level)
            (when (symbolp map)
              (setq map (symbol-function map)))
            (when-let ((elem (assq entry (cdr map))))
              (when (> level 0)
-               (push (if (char-displayable-p ?→)
-                         " → "
-                       " => ")
-                     string))
+               (push sep string))
              (if (eq (nth 1 elem) 'menu-item)
                  (progn
-                   (push (nth 2 elem) string)
+                   (push (propertize (nth 2 elem) 'face 'help-key-binding)
+                         string)
                    (setq map (cadddr elem)))
-               (push (nth 1 elem) string)
+               (push (propertize (nth 1 elem) 'face 'help-key-binding)
+                     string)
                (setq map (cddr elem)))))
          (cdr (seq-into menu 'list)))
         (when string
@@ -622,8 +622,7 @@ the C sources, too."
           (cond ((zerop i) "")
                 ((= i (1- (length menus))) " and ")
                 (t ", "))
-          (propertize (string-join (nreverse string))
-                      'face 'help-key-binding)))
+          (string-join (nreverse string))))
        strings))))
 
 (defun help-fns--compiler-macro (function)



reply via email to

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