Subject: Re: bug#73734: [PATCH] Fix tmm menu layout

From: Manuel Giraud <[email-masked]>
Date: Fri, 11 Oct 2024 12:45:21 +0200

Eli Zaretskii <[email-masked]> writes:

[...]

>> The result is even worse because now there is wrapping involved:
>
> This is not what I suggested.  I suggested to leave the spaces in the
> string intact and just put on each of them a display property whose
> value is '(space . (:width 1)).  This cannot possibly cause wrapping,
> unless the original string already does, because we don't change how
> many SPC characters are used, we just force each one of them to take
> exactly one canonical column.

Sorry, I did not understand that.  Do you mean something like this:
diff --git a/lisp/tmm.el b/lisp/tmm.el
index 1e3942761a1..4ddf61cc9b3 100644
--- a/lisp/tmm.el
+++ b/lisp/tmm.el
@@ -484,13 +484,16 @@ tmm-get-keymap
             (when binding
               (setq binding (key-description binding))
               ;; Try to align the keybindings.
-              (let ((colwidth (- (/ (frame-width) 3) 15)))
+              (let* ((colwidth (min 30 (- (/ (window-width) 2) 10)))
+                     (spaces (make-string (max 2 (- colwidth
+                                                    (string-width str)
+                                                    (string-width binding)))
+                                          ?\s)))
+                (dotimes (i (length spaces))
+                  (put-text-property i (1+ i) 'display '(space . (:width 1)) spaces))
                 (setq str
                       (concat str
-                              (make-string (max 2 (- colwidth
-                                                     (string-width str)
-                                                     (string-width binding)))
-                                           ?\s)
+                              spaces
                               binding)))))))
       (and km (stringp km) (setq str km))
       ;; Verify that the command is enabled;

But then, the result is that, now, the keybinding is placed just *one*
space after its menu entry's name.  So yes, the confusion I was talking
about is gone but we completly loose the spacing between entry name and
keybinding as well as the vertical alignment of keybindings.
-- 
Manuel Giraud