GNU bug report logs - #73734
[PATCH] Fix tmm menu layout

Previous Next

Package: emacs;

Reported by: Manuel Giraud <manuel <at> ledu-giraud.fr>

Date: Thu, 10 Oct 2024 13:54:01 UTC

Severity: normal

Tags: patch

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Eli Zaretskii <eliz <at> gnu.org>
To: Manuel Giraud <manuel <at> ledu-giraud.fr>
Cc: rudalics <at> gmx.at, 73734 <at> debbugs.gnu.org
Subject: bug#73734: [PATCH] Fix tmm menu layout
Date: Fri, 11 Oct 2024 12:26:12 +0300
> From: Manuel Giraud <manuel <at> ledu-giraud.fr>
> Cc: rudalics <at> gmx.at,  73734 <at> debbugs.gnu.org
> Date: Fri, 11 Oct 2024 10:10:25 +0200
> 
> With the following patch:
> 
> diff --git a/lisp/tmm.el b/lisp/tmm.el
> index 1e3942761a1..8d1f9b15e82 100644
> --- a/lisp/tmm.el
> +++ b/lisp/tmm.el
> @@ -484,13 +484,12 @@ 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 (max 2 (- colwidth (string-width str)
> +                                       (string-width binding)))))
>                  (setq str
>                        (concat str
> -                              (make-string (max 2 (- colwidth
> -                                                     (string-width str)
> -                                                     (string-width binding)))
> -                                           ?\s)
> +                              (propertize " " 'display `(space . (:width ,spaces)))
>                                binding)))))))
>        (and km (stringp km) (setq str km))
>        ;; Verify that the command is enabled;
> 
> 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.

Now, I don't know what is wrong with the code you used that it caused
wrapping, but your code is more complex because it attempts to
calculate the number of spaces required to show the menu, whereas the
method I suggested doesn't.




This bug report was last modified 270 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.