Subject: bug#76772: 29.4; Emacsclient doesn't display warnings emitted during daemon startup

From: Artiom Balan <[email-masked]>
Date: Thu, 6 Mar 2025 16:33:08 +0200

With the --eval I tried to simulate an error happening during the execution
of the init.el, for example.

I don't understand why it shouldn't be the case (at least in principle)
that the client automatically displays the warnings that were emitted
during the server startup. How else should you be notified of the warnings?
Are you supposed to remember to display it manually or hack your way around
it?

On Thu, Mar 6, 2025, 4:18 PM Eli Zaretskii <[email-masked]> wrote:

> > From: Stefan Kangas <[email-masked]>
> > Date: Thu, 6 Mar 2025 01:25:37 -0800
> > Cc: [email-masked]
> >
> > Eli Zaretskii <[email-masked]> writes:
> >
> > > tags 76772 notabug
> > > thanks
> > >
> > >> From: Artiom Balan <[email-masked]>
> > >> Date: Wed, 5 Mar 2025 23:47:26 +0200
> > >>
> > >> Steps to reproduce:
> > >> 1. Run emacs: emacs -Q --eval "(display-warning 'type \"message\"))"
> > >> 2. Notice the warning is displayed
> > >> 3. Start emacs server: emacs -Q --fg-daemon --eval "(display-warning
> 'type \"message\"))"
> > >> 4. Open a client: emacsclient -c
> > >> 5. Notice the warning is not displayed
> > >>
> > >> I expected that the warnings buffer would be displayed in the exact
> > >> same way in the emacsclient as in the first scenario.
> > >
> > > Thanks.
> > >
> > > The *Warnings* buffer is there, it's just that the client frame
> > > doesn't show it.  Why should it? how should it know you want that
> > > particular buffer displayed without any indication from you?
> >
> > We show it unconditionally in regular Emacs sessions, so it is at the
> > very least surprising that it is not displayed in the scenario described
> > above.
>
> When emacsclient connects, the new frame that it starts shows what
> emacsclient tells the server to display, and if it doesn't, then the
> default is the current buffer.  The server never displays anything
> without being told, and emacsclient cannot know what were the
> command-line arguments with which the daemon was invoked.
>
> In general, the client frame shows what emacsclient tells it to show,
> not something from the time the daemon started.
>
> So I think the analogy cannot work, at least due to technical reasons
> if not in principle.
>