From abd59ad923452cf342ba9d5eadf52bea02a261b0 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 3 Feb 2022 13:00:47 +0200 Subject: [PATCH] Fix "Buffers->Frames" submenu in daemon sessions * lisp/menu-bar.el (menu-bar-update-buffers): Detect the initial frame by its special terminal's name. (Bug#53740) * src/terminal.c (init_initial_terminal): Add comment about using the initial-terminal's name in menu-bar.el. --- lisp/menu-bar.el | 3 ++- src/terminal.c | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index 891cdfd5d59..7678b1ece66 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@ -2346,7 +2346,8 @@ It must accept a buffer as its only required argument.") ;; Ignore the initial frame if present. It can happen if ;; Emacs was started as a daemon. (bug#53740) (dolist (frame (frame-list)) - (unless (eq frame frame-initial-frame) + (unless (equal (terminal-name (frame-terminal frame)) + "initial_terminal") (push frame frames))) ;; Make the menu of buffers proper. (setq buffers-menu diff --git a/src/terminal.c b/src/terminal.c index 3db80f4b1ff..80f3aed7006 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -622,6 +622,8 @@ init_initial_terminal (void) emacs_abort (); initial_terminal = create_terminal (output_initial, NULL); + /* Note: menu-bar.el:menu-bar-update-buffers knows about this + special name of the initial terminal. */ initial_terminal->name = xstrdup ("initial_terminal"); initial_terminal->kboard = initial_kboard; initial_terminal->delete_terminal_hook = &delete_initial_terminal; -- 2.39.5