Subject: Re: bug#3442: 23.0.94; "C-x 5 1" (delete-other-frames) kills daemon

From: Dan Nicolaescu <[email-masked]>
Date: Thu, 4 Jun 2009 18:25:09 -0700 (PDT)

Stefan Monnier <[email-masked]> writes:

  > >> When Emacs daemon is running and a client frame is active, executing
  > >> delete-other-frames command (C-x 5 1) kills the daemon and makes the
  > >> Emacs session just a normal server session which requires that one frame
  > >> exists. To reproduce:
  > 
  > > Indeed, C-x 5 1 should only delete the frames on the current terminal,
  > > whereas it currently kills *all* the frames on all terminals (including
  > > the special internal terminal used for the daemon).
  > 
  > I've installed a patch that makes C-x 5 1 only delete frames on the same
  > terminal, which should fix this issue.

That's a behavior change, isn't it?
Maybe people use C-x 5 1 to remove the rest of the frames on all
terminals... (I personally have never used C-x 5 1)

If we don't want to change the C-x 5 1 behavior, we can just avoid
deleting the daaemon special frame, i.e.:

+      (unless (or (eq (frame-parameter frame 'minibuffer) 'only)
+                 ;; Take care not to delete the special frame that
+                 ;; the daemon uses.
+                 (and is-daemon (eq frame terminal-frame)))

where is-daemon is let bound to (daemonp)