Subject: Re: bug#21833: 24.4; desktop-kill, which is interactive, is in kill-emacs-hook

From: Eli Zaretskii <[email-masked]>
Date: Thu, 12 Nov 2015 22:50:01 +0200

> From: Stelian Iancu <[email-masked]>
> Date: Thu, 12 Nov 2015 21:24:36 +0100
> Cc: [email-masked]
> 
> On 12/11/15 21:11, Glenn Morris wrote:
> >
> > The point is that kill-emacs-hook is not supposed to contain interactive
> > things.
> >
> 
> Thanks for the clarification.
> 
> I've had a look at the code and desktop-kill is added to the 
> kill-emacs-hook in desktop.el:
> 
> (unless noninteractive
> (add-hook 'kill-emacs-hook 'desktop-kill))
> 
> So I guess the fix would be to remove these two lines, right?

Not exactly.  From the ELisp manual:

   -- Variable: kill-emacs-hook
       This normal hook is run by `kill-emacs', before it kills Emacs.

       Because `kill-emacs' can be called in situations where user
       interaction is impossible (e.g., when the terminal is
       disconnected), functions on this hook should not attempt to
       interact with the user.  If you want to interact with the user
       when Emacs is shutting down, use `kill-emacs-query-functions',
       described below.

So I think the hook should be added to kill-emacs-query-functions,
since we still want to ask the user that question, when appropriate.