Subject: Re: bug#57372: no-toolkit menu popups do not respect emacs font configuration

From: Tomas Hlavaty <[email-masked]>
Date: Thu, 25 Aug 2022 21:07:25 +0200

On Thu 25 Aug 2022 at 09:51, Eli Zaretskii <[email-masked]> wrote:
> If you need to use the File menu, you shouldn't be bothered about the
> Edit menu.

If I want to use the Edit menu, it disappears half way through getting
to it.

> If you have a mouse that works on the TTY frames (either GPM or
> xterm-mouse mode), you can click directly at Edit and open the Edit
> menu instead of (the default) File menu.  Otherwise, use the arrow
> keys or C-f/C-b to move between the top-level menus.

The problem is not with mouse or keyboard.  The problem is with how the
selected menu-bar item is presented.

Anyway, it seems to me that all the existing menu implementations are
dead end for what I want to achieve, except tmm-menubar.

>> Is there a reason, why is tmm-menubar restricted to tty?
>
> It isn't.  It's only the F10 binding that works differently on TTY
> frames, for reasons of backward compatibility (before TTY menus were
> available).  On GUI frames, you need to invoke tmm-menubar by name
> instead.  (You can, of course, bind F10 to tmm-menubar globally, if
> that's what you want.)

I tried binding tmm-menubar to F10 but that does not work:

$ emacs -q \
--eval "(global-set-key [F10] 'tmm-menubar)" \
--eval '(describe-key [F10])'

This shows that tmm-menubar is bound to <F10> and M-`.
Pressing M-` opens tmm-menubar which is correct.
But pressing F10 pops up the X resources based menu which is wrong.
It seems that something in Emacs does not respect my F10 key binding.

>> It would be nicer, if the cond in menu-bar-open was replaced
>> with run-hook-with-args-until-success and a customizable
>> open-menu-bar-functions variable.
>
> That's a lot of complexity for very little gain.  Binding F10 globally
> is much easier.

Agree that it would be much easier, if it worked.

> And, given the fact that almost no one uses tmm-menubar on GUI frames,
> I don't see the justification for the added complexity.

It seems to me that tmm-menubar is the only menu implementation which
respects faces and does not depend on anything alien which means I can
customize it the usual Emacs way and change it dynamically.  That is a
huge plus and looks like the way to go for what I want to achieve.
Thanks again for the pointer.

It looks quite nice with this customisation:
(setq tmm-mid-prompt " ")
(setq tmm-completion-prompt nil)

However, if I click on the menu-bar I still get the X resource based
menu instead of tmm-menubar.  What do I need to do to get tmm-menubar
after clicking on the menubar (not only after pressing F10 or M-`)?

I tried to discover, what gets called in such case.  Unfortunatelly, C-h
k (describe-key) does not work in that case.  How can one discover, what
code handles particular click?

Unlike other implementations, it seems that tmm-menubar does not show
checkboxes.