Subject: Re: bug#74740: 31.0.50; tty menus not displaying separators

From: Gerd Möllmann <[email-masked]>
Date: Mon, 09 Dec 2024 05:29:43 +0100

Eli Zaretskii <[email-masked]> writes:

>> From: Gerd Möllmann <[email-masked]>
>> Cc: [email-masked]
>> Date: Sun, 08 Dec 2024 19:46:35 +0100
>> 
>> Eli Zaretskii <[email-masked]> writes:
>> 
>> >> From: Gerd Möllmann <[email-masked]>
>> >> Date: Sun, 08 Dec 2024 18:34:33 +0100
>> >> 
>> >> To see this, emacs -nw -q and open a menu from the menubar. Simple
>> >> separators there are displayed as "--".
>> >
>> > What did you expect instead?  I think this always worked like that on
>> > TTY frames.
>> >
>> >> More generally, all separator types are displayed as they appear in the
>> >> menu item definition, '--double-line' as "--double-line" and so on.
>> 
>> I expected a horizontal line for "--".
>> 
>> > What do you mean by that? where do we have such separators, and how do
>> > you display the menus which show them?  I don't think I see them in
>> > the default menu bar.
>> 
>> Concerning the separator types, Elisp Info says
>> 
>>   23.18.1.3 Menu Separators
>>   .........................
>> 
>>   A menu separator is a kind of menu item that doesn't display any
>>   text--instead, it divides the menu into subparts with a horizontal line.
>>   A separator looks like this in the menu keymap:
>> 
>>        (menu-item SEPARATOR-TYPE)
>> 
>>   where SEPARATOR-TYPE is a string starting with two or more dashes.
>> 
>> followed by a list of separator types, among them the --double-line I
>> mentioned.
>> 
>> One can get these from 3rd-party packages. Minion is an example, where
>> --double-line appears in a popup menu on the mode line.
>
> This was never supported in TTY menus (I think I was completely
> unaware of this feature when I wrote the code).  Patches to support it
> will be most welcome.

The following patch displays "--" for all separator types. I'd say
that's good enough, WDYT?

>From 09917757737d65fbb5bbcd57427a8e0528b87119 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gerd=20M=C3=B6llmann?= <[email-masked]>
Date: Mon, 9 Dec 2024 05:20:29 +0100
Subject: [PATCH] Support menu separator types in tty menus (bug#74740)

* src/xdisp.c (display_tty_menu_item): Display "--" If a menu item's
text looks like a separator.
---
 src/xdisp.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/xdisp.c b/src/xdisp.c
index 534c0520240..abbe665a2fd 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -27333,6 +27333,9 @@ display_tty_menu_item (const char *item_text, int width, int face_id,
       display_string (" >", Qnil, Qnil, 0, 0, &it, width, 0,
 		      FRAME_COLS (f) - 1, -1);
     }
+  else if (menu_separator_name_p (item_text))
+    display_string ("--", Qnil, Qnil, 0, 0, &it,
+		    width, 0, FRAME_COLS (f) - 1, -1);
   else
     display_string (item_text, Qnil, Qnil, 0, 0, &it,
 		    width, 0, FRAME_COLS (f) - 1, -1);
-- 
2.47.1