Subject: Re: bug#2138: 23.0.60; --daemon and ediff-window-setup-function

From: Dan Nicolaescu <[email-masked]>
Date: Sun, 1 Feb 2009 06:50:11 -0800 (PST)

Stephen Berman <[email-masked]> writes:

  > On Sat, 31 Jan 2009 22:05:07 -0800 (PST) Dan Nicolaescu <[email-masked]> wrote:
  > 
  > > Stephen Berman <[email-masked]> writes:
  > >
  > >   > Start Emacs like this:
  > >   > 
  > >   > 1. emacs -Q --eval "(require 'ediff)"
  > >   > 2. emacsclient -c
  > >   > 3. C-h v ediff-window-setup-function
  > >   > => ediff-setup-windows-multiframe
  > >   > 
  > >   > Now start Emacs like this:
  > >   > 
  > >   > 1. emacs -Q --daemon --eval "(require 'ediff)"
  > >   > 2. emacsclient -c
  > >   > 3. C-h v ediff-window-setup-function
  > >   > => ediff-setup-windows-plain
  > >   > 
  > >   > 
  > >   > I haven't tried debugging this, but my first guess is that
  > >   > ediff-setup-windows-multiframe requires non-nil window-system but (still
  > >   > guessing) when there is no frame window-system evaluates to nil.
  > >
  > > You can take --daemon out of this equation, you'd  get the same when
  > > doing 
  > > emacs -Q and emacs -Q -nw
  > 
  > I should have been more explicit about the point of this bug report,
  > which is this: when I invoke `emacsclient -c' under X11, I expect the
  > usual behavior under X11, but in the above case, --daemon apparently
  > circumvents this behavior.

Again, you get the same problem if you do:
emacs -Q -nw -f server-start  --eval "(require 'ediff)"
emacsclient -c 
M-x ediff

and you have a problem if you do
emacs -Q -f server-start  --eval "(require 'ediff)"
emacsclient -t
M-x ediff

  > I cannot tell from the current documentation when using --daemon has
  > this effect and when it doesn't.  Hence I cannot tell whether this is a
  > bug or a limitation of the current implementation.  So I hope this and
  > similar bug reports lead to both more complete documentation and either
  > a bug fix or, at some point, a more feature-rich implementation.

Not really, this is not a problem with --daemon, it's a problem in the
ediff implementation that it evaluates ediff-window-setup-function at
load time.  This is not appropriate anymore now when you can have both
X11 and tty frames in the same emacs session.