unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* I can't build from cvs sources on cygwin for some time now
@ 2006-11-12 22:17 Eric Lilja
  2006-11-12 22:23 ` Juanma Barranquero
  2006-11-13 12:21 ` Eric Lilja
  0 siblings, 2 replies; 48+ messages in thread
From: Eric Lilja @ 2006-11-12 22:17 UTC (permalink / raw)


Hello group!

Not sure when it broke, I have a build dated 11:th of september that 
works just fine. But when I tried to build a new version two weeks or so 
ago using the same procedure as before, it wouldn't build. Tried again 
now. Still won't build. Error:
In file included from emacsclient.c:286:
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winsock2.h:103:2: 
warning: #warning "fd_set and associated macros have been defined in 
sys/types.      This may cause runtime problems with W32 sockets"
gcc -o oo-spd/i386/emacsclient.exe   -mno-cygwin 
oo-spd/i386/emacsclient.o oo-spd/i386/getopt.o oo-spd/i386/getopt1.o 
oo-spd/i386/ntlib.o -lwsock32   -ladvapi32
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0x11b): undefined 
reference to `___getreent'
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0x1b9): undefined 
reference to `___getreent'
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0x45b): undefined 
reference to `__imp___ctype_'
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0x473): undefined 
reference to `__imp___ctype_'
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0x4f0): undefined 
reference to `___getreent'
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0x724): undefined 
reference to `___getreent'
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0x7b4): undefined 
reference to `___getreent'
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0x8b9): undefined 
reference to `___getreent'
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0x923): undefined 
reference to `___getreent'
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0xa2f): more undefined 
references to `___getreent' follow
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0xbc5): undefined 
reference to `_errno'
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0xbd4): undefined 
reference to `___getreent'
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0xcfc): undefined 
reference to `__imp___ctype_'
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0xdd2): undefined 
reference to `___getreent'
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0xe5e): undefined 
reference to `___getreent'
oo-spd/i386/emacsclient.o:emacsclient.c:(.text+0xf29): undefined 
reference to `___getreent'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [oo-spd/i386/emacsclient.exe] Error 1
mingw32-make[1]: Leaving directory `c:/cvsemacs/emacs/lib-src'
mingw32-make: *** [all-other-dirs-gmake] Error 2

My steps:
$ export CVS_RSH="ssh"
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs co emacs
$ cd emacs/nt/
$ ./configure.bat --with-gcc --no-cygwin --no-debug
$ mingw32-make bootstrap-clean

Cygwin is fully updated (gcc version is 3.4.4-1), mingw32-make is 
version 3.81. I scanned this group and founds some posts seeming to 
indicate a problem with debug builds of emacs on cygwin using that 
version of gcc. I'm not building a debug build, but I built gcc-4.1.1 
myself a few days ago just to try. Unfortunately, I couldn't build emacs 
using it (sorry, no error log). And even if I has succeeded doing that, 
I really would like to use cygwin's gcc so I can pass it -mno-cygwin 
because I don't want emacs to depend on cygwin1.dll. What should I do? 
I've been enjoying following the cvs version for more than two years 
now. There have been problems compiling before but they were usually 
fixed promptly. Now I don't even see any posts from people having the 
same problems as me... What prompted me to compile a new version from 
cvs was that I wanted to ask about a few problems I'm having and I 
wanted to test the latest sources first to see if they fixed the 
problems before I asked.

/ E

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-12 22:17 I can't build from cvs sources on cygwin for some time now Eric Lilja
@ 2006-11-12 22:23 ` Juanma Barranquero
  2006-11-12 22:29   ` Eric Lilja
  2006-11-13 12:21 ` Eric Lilja
  1 sibling, 1 reply; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-12 22:23 UTC (permalink / raw)
  Cc: emacs-devel

On 11/12/06, Eric Lilja <mindcooler@gmail.com> wrote:

> But when I tried to build a new version two weeks or so
> ago using the same procedure as before, it wouldn't build. Tried again
> now. Still won't build. Error:
> In file included from emacsclient.c:286:
> /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winsock2.h:103:2:
> warning: #warning "fd_set and associated macros have been defined in
> sys/types.      This may cause runtime problems with W32 sockets"

lib-src/emacsclient.c has a

#include <sys/types.h>

near the beginning. Could you please wrap it on

#ifndef CYGWIN
...
#endif

(assuming there's CYGWIN or another define that can be used to detect
that we're compiling under cygwin) and report back?

Just out of curiosity. Did you run ./configure?

                    /L/e/k/t/u

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-12 22:23 ` Juanma Barranquero
@ 2006-11-12 22:29   ` Eric Lilja
  2006-11-12 22:34     ` Juanma Barranquero
  0 siblings, 1 reply; 48+ messages in thread
From: Eric Lilja @ 2006-11-12 22:29 UTC (permalink / raw)


Juanma Barranquero skrev:
> On 11/12/06, Eric Lilja <mindcooler@gmail.com> wrote:
> 
>> But when I tried to build a new version two weeks or so
>> ago using the same procedure as before, it wouldn't build. Tried again
>> now. Still won't build. Error:
>> In file included from emacsclient.c:286:
>> /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winsock2.h:103:2: 
>>
>> warning: #warning "fd_set and associated macros have been defined in
>> sys/types.      This may cause runtime problems with W32 sockets"
> 
> lib-src/emacsclient.c has a
> 
> #include <sys/types.h>
> 
> near the beginning. Could you please wrap it on
> 
> #ifndef CYGWIN
> ...
> #endif

Thanks, done that now and trying to recompile (did a bootstrap-clean so 
it will take a few minutes before I know how it went).

> 
> (assuming there's CYGWIN or another define that can be used to detect
> that we're compiling under cygwin) and report back?
> 
> Just out of curiosity. Did you run ./configure?

I ran configure.bat in the nt subdir as I have always done when building 
emacs on this platform. It was mentioned in "My steps" in my op.

> 
>                    /L/e/k/t/u

Thanks for the quick reply!

/ E

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-12 22:29   ` Eric Lilja
@ 2006-11-12 22:34     ` Juanma Barranquero
  2006-11-12 22:46       ` Eric Lilja
  0 siblings, 1 reply; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-12 22:34 UTC (permalink / raw)
  Cc: emacs-devel

On 11/12/06, Eric Lilja <mindcooler@gmail.com> wrote:

> Thanks, done that now and trying to recompile (did a bootstrap-clean so
> it will take a few minutes before I know how it went).

Did you use "#ifndef CYGWIN"? Does CYGWIN exist?

> I ran configure.bat in the nt subdir as I have always done when building
> emacs on this platform.

I don't understand. If you're doing a Cygwin build, you don't run
nt/configure.bat, just ./configure on the root dir of the source
tarball...

                    /L/e/k/t/u

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-12 22:34     ` Juanma Barranquero
@ 2006-11-12 22:46       ` Eric Lilja
  2006-11-12 22:56         ` Eric Lilja
  2006-11-12 23:01         ` I can't build from cvs sources on cygwin for some time now Juanma Barranquero
  0 siblings, 2 replies; 48+ messages in thread
From: Eric Lilja @ 2006-11-12 22:46 UTC (permalink / raw)


Juanma Barranquero skrev:
> On 11/12/06, Eric Lilja <mindcooler@gmail.com> wrote:
> 
>> Thanks, done that now and trying to recompile (did a bootstrap-clean so
>> it will take a few minutes before I know how it went).
> 
> Did you use "#ifndef CYGWIN"? Does CYGWIN exist?
> 
>> I ran configure.bat in the nt subdir as I have always done when building
>> emacs on this platform.
> 
> I don't understand. If you're doing a Cygwin build, you don't run
> nt/configure.bat, just ./configure on the root dir of the source
> tarball...
> 
>                    /L/e/k/t/u

I'm using the cygwin tools to make mingw build. Nothing weird about it.

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-12 22:46       ` Eric Lilja
@ 2006-11-12 22:56         ` Eric Lilja
  2006-11-12 23:05           ` Juanma Barranquero
  2006-11-13  0:07           ` Jason Rumney
  2006-11-12 23:01         ` I can't build from cvs sources on cygwin for some time now Juanma Barranquero
  1 sibling, 2 replies; 48+ messages in thread
From: Eric Lilja @ 2006-11-12 22:56 UTC (permalink / raw)


Eric Lilja skrev:
> Juanma Barranquero skrev:
>> On 11/12/06, Eric Lilja <mindcooler@gmail.com> wrote:
>>
>>> Thanks, done that now and trying to recompile (did a bootstrap-clean so
>>> it will take a few minutes before I know how it went).
>>
>> Did you use "#ifndef CYGWIN"? Does CYGWIN exist?
>>
>>> I ran configure.bat in the nt subdir as I have always done when building
>>> emacs on this platform.
>>
>> I don't understand. If you're doing a Cygwin build, you don't run
>> nt/configure.bat, just ./configure on the root dir of the source
>> tarball...
>>
>>                    /L/e/k/t/u
> 
> I'm using the cygwin tools to make mingw build. Nothing weird about it.

Didn't help. Somewhere it decides to include <sys/types.h> but it should 
not because I specified --no-cygwin when configuring. Got the same 
warning and error.
CYGWIN is not defined, WINDOWSNT is, still that files gets included 
somewhere and then the compiler warns later when <winsock2.h> is included.
gcc -DWINDOWSNT -DHAVE_GETCWD -DHAVE_STRERROR -c -o 
oo-spd/i386/emacsclient.o emacsclient.c
-mno-cygwin is passed to other files...but not emacsclient.c it seems. Bug?

/ E

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-12 22:46       ` Eric Lilja
  2006-11-12 22:56         ` Eric Lilja
@ 2006-11-12 23:01         ` Juanma Barranquero
  2006-11-12 23:24           ` Eric Lilja
  1 sibling, 1 reply; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-12 23:01 UTC (permalink / raw)
  Cc: emacs-devel

On 11/12/06, Eric Lilja <mindcooler@gmail.com> wrote:

> I'm using the cygwin tools to make mingw build. Nothing weird about it.

You're using the cygwin gcc compiler to do the mingw build, you mean?

I build with the MinGW compiler and it works like a charm.

                    /L/e/k/t/u

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-12 22:56         ` Eric Lilja
@ 2006-11-12 23:05           ` Juanma Barranquero
  2006-11-12 23:22             ` Eric Lilja
  2006-11-13  0:07           ` Jason Rumney
  1 sibling, 1 reply; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-12 23:05 UTC (permalink / raw)
  Cc: emacs-devel

On 11/12/06, Eric Lilja <mindcooler@gmail.com> wrote:

> Didn't help. Somewhere it decides to include <sys/types.h> but it should
> not because I specified --no-cygwin when configuring. Got the same
> warning and error.

What does contain the end of src/config.h? (The part written by configure.bat).

                    /L/e/k/t/u

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-12 23:05           ` Juanma Barranquero
@ 2006-11-12 23:22             ` Eric Lilja
  2006-11-12 23:44               ` Juanma Barranquero
  0 siblings, 1 reply; 48+ messages in thread
From: Eric Lilja @ 2006-11-12 23:22 UTC (permalink / raw)


Juanma Barranquero skrev:
> On 11/12/06, Eric Lilja <mindcooler@gmail.com> wrote:
> 
>> Didn't help. Somewhere it decides to include <sys/types.h> but it should
>> not because I specified --no-cygwin when configuring. Got the same
>> warning and error.
> 
> What does contain the end of src/config.h? (The part written by 
> configure.bat).
> 
>                    /L/e/k/t/u

$ tail ../src/config.h
#else
#define NO_RETURN       /* nothing */
#endif
#endif

/* arch-tag: df720992-aa5a-499a-882d-958dc5eeb5e9
    (do not change this comment) */

/* Start of settings from configure.bat.  */
/* End of settings from configure.bat.  */

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-12 23:01         ` I can't build from cvs sources on cygwin for some time now Juanma Barranquero
@ 2006-11-12 23:24           ` Eric Lilja
  2006-11-12 23:45             ` Juanma Barranquero
  0 siblings, 1 reply; 48+ messages in thread
From: Eric Lilja @ 2006-11-12 23:24 UTC (permalink / raw)


Juanma Barranquero skrev:
> On 11/12/06, Eric Lilja <mindcooler@gmail.com> wrote:
> 
>> I'm using the cygwin tools to make mingw build. Nothing weird about it.
> 
> You're using the cygwin gcc compiler to do the mingw build, you mean?
> 
> I build with the MinGW compiler and it works like a charm.
> 
>                    /L/e/k/t/u

The only pure mingw tool I have installed is the mingw version of gnu 
make. Since I can put cygwins gcc compiler in mingw mode I see no reason 
to install mingws gcc. The steps I described in my OP are more or less 
the same I have used for two years now. And now it wont work, possibly 
due to how make is told to build emacsclient.c?

/ E

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-12 23:22             ` Eric Lilja
@ 2006-11-12 23:44               ` Juanma Barranquero
  2006-11-12 23:52                 ` Eric Lilja
  0 siblings, 1 reply; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-12 23:44 UTC (permalink / raw)
  Cc: emacs-devel

On 11/13/06, Eric Lilja <mindcooler@gmail.com> wrote:
> /* Start of settings from configure.bat.  */
> /* End of settings from configure.bat.  */

And the start of lib-src/Makefile?

                    /L/e/k/t/u

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-12 23:24           ` Eric Lilja
@ 2006-11-12 23:45             ` Juanma Barranquero
  0 siblings, 0 replies; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-12 23:45 UTC (permalink / raw)
  Cc: emacs-devel

On 11/13/06, Eric Lilja <mindcooler@gmail.com> wrote:

> The steps I described in my OP are more or less
> the same I have used for two years now. And now it wont work, possibly
> due to how make is told to build emacsclient.c?

Possibly.

But you're the one that can really research what's happening and
propose a fix. I have no cygwin environment in my computer.

                    /L/e/k/t/u

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-12 23:44               ` Juanma Barranquero
@ 2006-11-12 23:52                 ` Eric Lilja
  0 siblings, 0 replies; 48+ messages in thread
From: Eric Lilja @ 2006-11-12 23:52 UTC (permalink / raw)


Juanma Barranquero skrev:
> On 11/13/06, Eric Lilja <mindcooler@gmail.com> wrote:
>> /* Start of settings from configure.bat.  */
>> /* End of settings from configure.bat.  */
> 
> And the start of lib-src/Makefile?
> 
>                    /L/e/k/t/u

$ head  ../lib-src/Makefile
# Start of settings from configure.bat
COMPILER=gcc
MCPU_FLAG=-mtune=pentium4
NODEBUG=1
NOCYGWIN=1
# End of settings from configure.bat

#  -*- Makefile -*- definition file for building GNU Emacs on Windows NT.
#  Copyright (C) 2000, 2001, 2002, 2003, 2004,
#    2005, 2006 Free Software Foundation, Inc.

Look OK to me...

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-12 22:56         ` Eric Lilja
  2006-11-12 23:05           ` Juanma Barranquero
@ 2006-11-13  0:07           ` Jason Rumney
  2006-11-13  0:49             ` Juanma Barranquero
  1 sibling, 1 reply; 48+ messages in thread
From: Jason Rumney @ 2006-11-13  0:07 UTC (permalink / raw)
  Cc: emacs-devel

Eric Lilja wrote
> gcc -DWINDOWSNT -DHAVE_GETCWD -DHAVE_STRERROR -c -o 
> oo-spd/i386/emacsclient.o emacsclient.c
> -mno-cygwin is passed to other files...but not emacsclient.c it seems. 
> Bug?
I've just checked in a fix for this. You'll need to run configure.bat to 
regenerate the makefiles, but you shouldn't need to bootstrap to test 
the fix.

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-13  0:07           ` Jason Rumney
@ 2006-11-13  0:49             ` Juanma Barranquero
  2006-11-13  2:13               ` Juanma Barranquero
  0 siblings, 1 reply; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-13  0:49 UTC (permalink / raw)
  Cc: Eric Lilja, emacs-devel

On 11/13/06, Jason Rumney <jasonr@gnu.org> wrote:

> I've just checked in a fix for this.

Thanks!

                    /L/e/k/t/u

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-13  0:49             ` Juanma Barranquero
@ 2006-11-13  2:13               ` Juanma Barranquero
  2006-11-13  8:21                 ` Eric Lilja
                                   ` (2 more replies)
  0 siblings, 3 replies; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-13  2:13 UTC (permalink / raw)
  Cc: emacs-devel

On 11/13/06, Juanma Barranquero <lekktu@gmail.com> wrote:

> > I've just checked in a fix for this.

Hmm.  emacsclient doesn't like something in src/config.h. After your
patch, I can only get it to compile by commenting out

#include <config.h>

??

                    /L/e/k/t/u

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-13  2:13               ` Juanma Barranquero
@ 2006-11-13  8:21                 ` Eric Lilja
  2006-11-13 11:37                 ` Jason Rumney
  2006-11-13 11:41                 ` emacsclientw Jason Rumney
  2 siblings, 0 replies; 48+ messages in thread
From: Eric Lilja @ 2006-11-13  8:21 UTC (permalink / raw)


Juanma Barranquero skrev:
> On 11/13/06, Juanma Barranquero <lekktu@gmail.com> wrote:
> 
>> > I've just checked in a fix for this.
> 
> Hmm.  emacsclient doesn't like something in src/config.h. After your
> patch, I can only get it to compile by commenting out
> 
> #include <config.h>
> 
> ??
> 
>                    /L/e/k/t/u

I didn't try your work-around, Juanma, but I am too seing new 
compilation errors after Jason's check-in. Still, I think Jason is on 
the right track. If I specify --no-cygwin when running nt/configure.bat 
all c language source files should be compiled with the flag 
-mno-cygwin, not just most. Thanks for looking into this, Jason.

/ E

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-13  2:13               ` Juanma Barranquero
  2006-11-13  8:21                 ` Eric Lilja
@ 2006-11-13 11:37                 ` Jason Rumney
  2006-11-13 12:25                   ` Juanma Barranquero
  2006-11-13 11:41                 ` emacsclientw Jason Rumney
  2 siblings, 1 reply; 48+ messages in thread
From: Jason Rumney @ 2006-11-13 11:37 UTC (permalink / raw)
  Cc: emacs-devel

Juanma Barranquero wrote:
> Hmm.  emacsclient doesn't like something in src/config.h. After your
> patch, I can only get it to compile by commenting out
>
> #include <config.h>

It seems I didn't follow my own advice for testing this.
I've checked in some changes that give the correct value for 
HAVE_INET_SOCKETS on windows, and I see you beat me to the rest of the 
change (allowing winsock to load).

^ permalink raw reply	[flat|nested] 48+ messages in thread

* emacsclientw
  2006-11-13  2:13               ` Juanma Barranquero
  2006-11-13  8:21                 ` Eric Lilja
  2006-11-13 11:37                 ` Jason Rumney
@ 2006-11-13 11:41                 ` Jason Rumney
  2006-11-13 12:23                   ` emacsclientw Juanma Barranquero
                                     ` (2 more replies)
  2 siblings, 3 replies; 48+ messages in thread
From: Jason Rumney @ 2006-11-13 11:41 UTC (permalink / raw)
  Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 384 bytes --]

Have you tested the emacsclientw.exe build with MSVC?

I think there is also a need for something that starts Emacs if it is 
not already running, so I came up with the following (based on 
runemacs.c), which I intended to check into the nt directory. The 
intention is to use this to associate Emacs with file types in Explorer 
and other applications that allow external editors.



[-- Attachment #2: emacsassoc.c --]
[-- Type: text/plain, Size: 3223 bytes --]

/* Copyright (C) 2006 Free Software Foundation, Inc.

This file is part of GNU Emacs.

GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING.  If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.  */


/*
  Simple program to start emacsclient or emacs with its console window
  hidden.

  This program is provided for conveniently associating emacs with
  files in Windows Explorer and other GUI programs.

  */

#include <windows.h>
#include <string.h>
#include <malloc.h>

int launch_app(char *dir_name, char *app_name, LPSTR cmd_line)
{
  STARTUPINFO start;
  SECURITY_ATTRIBUTES sec_attrs;
  PROCESS_INFORMATION child;
  int wait_for_child = FALSE;
  DWORD priority_class = NORMAL_PRIORITY_CLASS;
  DWORD ret_code = 0;
  char *new_cmd_line;

  new_cmd_line = alloca (MAX_PATH + strlen (cmd_line) + 3);

  /* Quote executable name in case of spaces in the path.  */
  *new_cmd_line = '"';
  strcpy (new_cmd_line + 1, dir_name);

  strcat (new_cmd_line, "\\");
  strcat (new_cmd_line, app_name);
  strcat (new_cmd_line, "\" ");

  /* Append original arguments if any.  */
  strcat (new_cmd_line, cmd_line);

  memset (&start, 0, sizeof (start));
  start.cb = sizeof (start);
  start.dwFlags = STARTF_USESHOWWINDOW | STARTF_USECOUNTCHARS;
  start.wShowWindow = SW_HIDE;
  /* Ensure that we don't waste memory if the user has specified a huge
     default screen buffer for command windows.  */
  start.dwXCountChars = 80;
  start.dwYCountChars = 25;

  sec_attrs.nLength = sizeof (sec_attrs);
  sec_attrs.lpSecurityDescriptor = NULL;
  sec_attrs.bInheritHandle = FALSE;

  if (CreateProcess (NULL, new_cmd_line, &sec_attrs, NULL, TRUE, priority_class,
                     NULL, NULL, &start, &child))
    {
      WaitForSingleObject (child.hProcess, INFINITE);
      GetExitCodeProcess (child.hProcess, &ret_code);

      CloseHandle (child.hThread);
      CloseHandle (child.hProcess);
    }
  else
    ret_code = 1;

  return ret_code;
}

int WINAPI
WinMain (HINSTANCE self, HINSTANCE prev, LPSTR cmd_line, int show)
{
  char dir_name[MAX_PATH];
  char *p;

  /* Figure out what directory this is run from, so we can find the
     emacsclient and emacs executables.  */
  if (!GetModuleFileName (NULL, dir_name, MAX_PATH))
    goto error;
  if ((p = strrchr (dir_name, '\\')) == NULL)
    goto error;
  *p = 0;

  if ((launch_app (dir_name, "emacsclient.exe", cmd_line) == 0)
      || launch_app(dir_name, "emacs.exe", cmd_line) == 0)
    return 0;

 error:
  MessageBox (NULL, "Could not start Emacs", "Error", MB_ICONSTOP);
  return 1;
}


[-- Attachment #3: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-12 22:17 I can't build from cvs sources on cygwin for some time now Eric Lilja
  2006-11-12 22:23 ` Juanma Barranquero
@ 2006-11-13 12:21 ` Eric Lilja
  1 sibling, 0 replies; 48+ messages in thread
From: Eric Lilja @ 2006-11-13 12:21 UTC (permalink / raw)


Eric Lilja skrev:
[snip original problem report]

Thank you Jason and Juanma! With your changes, I was able to 
successfully bootstrap emacs.

Now I can start with trying to solve my problems using emacs. :-)

/ Eric

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 11:41                 ` emacsclientw Jason Rumney
@ 2006-11-13 12:23                   ` Juanma Barranquero
  2006-11-13 16:19                     ` emacsclientw Lennart Borgman
  2006-11-13 12:36                   ` emacsclientw dhruva
  2006-11-13 14:11                   ` emacsclientw Lennart Borgman
  2 siblings, 1 reply; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-13 12:23 UTC (permalink / raw)
  Cc: emacs-devel

On 11/13/06, Jason Rumney <jasonr@gnu.org> wrote:

> Have you tested the emacsclientw.exe build with MSVC?

No, I have not set up a build enviroment for MSVC. Did you try it?

BTW, Lennart's got a bunch of changes to emacsclient that would allow
emacsclient's error messages to go to GUI message boxes when run as
emacsclientw.exe. I'm testing it right now.

> I think there is also a need for something that starts Emacs if it is
> not already running, so I came up with the following (based on
> runemacs.c), which I intended to check into the nt directory. The
> intention is to use this to associate Emacs with file types in Explorer
> and other applications that allow external editors.

Cool.

                    /L/e/k/t/u

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: I can't build from cvs sources on cygwin for some time now
  2006-11-13 11:37                 ` Jason Rumney
@ 2006-11-13 12:25                   ` Juanma Barranquero
  0 siblings, 0 replies; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-13 12:25 UTC (permalink / raw)
  Cc: emacs-devel

On 11/13/06, Jason Rumney <jasonr@gnu.org> wrote:

> It seems I didn't follow my own advice for testing this.

Doesn't it happen to all of us sooner or later? ;)

> I've checked in some changes that give the correct value for
> HAVE_INET_SOCKETS on windows

Thanks.
                    /L/e/k/t/u

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 11:41                 ` emacsclientw Jason Rumney
  2006-11-13 12:23                   ` emacsclientw Juanma Barranquero
@ 2006-11-13 12:36                   ` dhruva
  2006-11-13 12:39                     ` emacsclientw Juanma Barranquero
  2006-11-13 14:11                   ` emacsclientw Lennart Borgman
  2 siblings, 1 reply; 48+ messages in thread
From: dhruva @ 2006-11-13 12:36 UTC (permalink / raw)
  Cc: Juanma Barranquero, emacs-devel

Hi,

I was looking for something like this. Thank you.

On 11/13/06, Jason Rumney <jasonr@gnu.org> wrote:
> Have you tested the emacsclientw.exe build with MSVC?

I built it and tried it under MSVC. It works fine. I feel there is a
need to have emacsclient's "--no-wait" option to be able to set in an
environmental variable. Once I associate the file extensions to open
with emacsclientw, I do not want to keep getting the message in the
minibuffer area warning about clients...This did not happen with
gnuclientw.

-dk

-- 
dhruva (dk)
Contents reflect my personal views only!

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 12:36                   ` emacsclientw dhruva
@ 2006-11-13 12:39                     ` Juanma Barranquero
  2006-11-13 13:14                       ` emacsclientw dhruva
  0 siblings, 1 reply; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-13 12:39 UTC (permalink / raw)
  Cc: emacs-devel, Jason Rumney

On 11/13/06, dhruva <dhruvakm@gmail.com> wrote:

> I feel there is a
> need to have emacsclient's "--no-wait" option to be able to set in an
> environmental variable.

What for?

> Once I associate the file extensions to open
> with emacsclientw, I do not want to keep getting the message in the
> minibuffer area warning about clients...This did not happen with
> gnuclientw.

emacsclientw is like emacsclient. If you don't pass --no-wait (or -n),
it *will* wait, so the message in Emacs' minibuffer is justified. If
you don't want the message, run emacsclient(w) with -n !

                    /L/e/k/t/u

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 12:39                     ` emacsclientw Juanma Barranquero
@ 2006-11-13 13:14                       ` dhruva
  2006-11-13 13:31                         ` emacsclientw Juanma Barranquero
  2006-11-13 22:43                         ` emacsclientw Jason Rumney
  0 siblings, 2 replies; 48+ messages in thread
From: dhruva @ 2006-11-13 13:14 UTC (permalink / raw)
  Cc: emacs-devel, Jason Rumney

Hi,

On 11/13/06, Juanma Barranquero <lekktu@gmail.com> wrote:
> On 11/13/06, dhruva <dhruvakm@gmail.com> wrote:
>
> > Once I associate the file extensions to open
> > with emacsclientw, I do not want to keep getting the message in the
> > minibuffer area warning about clients...This did not happen with
> > gnuclientw.
>
> emacsclientw is like emacsclient. If you don't pass --no-wait (or -n),
> it *will* wait, so the message in Emacs' minibuffer is justified. If
> you don't want the message, run emacsclient(w) with -n !

I could do that if I run it from a shell or dos prompt. If I double
click on the explorer to open the file, I cannot pass that extra
parameter. When I open multiple files 9also through ctags), it can be
rather tiresome to keep pressing 'y' to all the messages. The default
key bound to "server-edit" requires 4 key strokes (C-x & S-5 to get #)
and can be cumbersome too (though I can write a small lisp function to
check if the buffer is from server and decide to call the
corresponding kill buffer).

Also, I am seeing a strange behavior. I associate a file extension
'.C' to run emacsclientw.exe. With no Emacs running, I double click on
a '.C' file from explorer. It launches Emacs (with the splash screen).
I go to the buffer containing the file I have opened and close it and
do not see any message in the minibuffer. I double click on another
'C' file and open it. When I close the second file, I get to see the
message. This seems inconsistent.

-dk

-- 
dhruva (dk)
Contents reflect my personal views only!

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 13:14                       ` emacsclientw dhruva
@ 2006-11-13 13:31                         ` Juanma Barranquero
  2006-11-13 22:43                         ` emacsclientw Jason Rumney
  1 sibling, 0 replies; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-13 13:31 UTC (permalink / raw)
  Cc: emacs-devel, Jason Rumney

On 11/13/06, dhruva <dhruvakm@gmail.com> wrote:

> I could do that if I run it from a shell or dos prompt. If I double
> click on the explorer to open the file, I cannot pass that extra
> parameter.

Why not? How was the association to run Emacs created?

> When I open multiple files 9also through ctags), it can be
> rather tiresome to keep pressing 'y' to all the messages.

I think I don't follow you. What messages require you to answer 'y'?
Are you receiving messages about local variables?

> Also, I am seeing a strange behavior. I associate a file extension
> '.C' to run emacsclientw.exe. With no Emacs running, I double click on
> a '.C' file from explorer. It launches Emacs (with the splash screen).

That's only possible if you've defined ALTERNATE_EDITOR, or passing it
with -a to emacsclient.exe...

> I go to the buffer containing the file I have opened and close it and
> do not see any message in the minibuffer. I double click on another
> 'C' file and open it. When I close the second file, I get to see the
> message. This seems inconsistent.

If emacsclient.exe runs Emacs (through --alternate-editor or
ALTERNATE_EDITOR), Emacs does not necessarily start the server, and if
it does, it has no way to know the file passed on the command line
(which is what emacsclient does: run the alternate editor passing it
the rest of its command line) should be processed by server.el. In
fact, even if it did, the emacsclient.exe that started Emacs is no
longer running.

The second time, emacsclient.exe connects with the running server, so
it does wait indeed.

(In my opinion, if you're gonna use emacsclient that way, it is better
to have an always running instance of Emacs, but I digress.)

To do the "right" thing there, emacsclient should know how to run
Emacs as a subprocess, and specifically how to run it with server.el
active. I don't think that kind of intelligence belongs on
emacsclient.

The next best thing is doing what I'm doing now: instead of running
emacs.exe, or runemacs.exe, or emacsclient.exe, I run a .BAT script
which first tries to run emacsclient, and if it fails, starts emacs
and then retries emacsclient. Unfortunately my script runs on a
proprietary CMD replacement, and I haven't yet got the time to adapt
it to CMD. I will, with time.

                    /L/e/k/t/u

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 11:41                 ` emacsclientw Jason Rumney
  2006-11-13 12:23                   ` emacsclientw Juanma Barranquero
  2006-11-13 12:36                   ` emacsclientw dhruva
@ 2006-11-13 14:11                   ` Lennart Borgman
  2006-11-13 14:40                     ` emacsclientw Juanma Barranquero
  2006-11-13 20:12                     ` emacsclientw Eli Zaretskii
  2 siblings, 2 replies; 48+ messages in thread
From: Lennart Borgman @ 2006-11-13 14:11 UTC (permalink / raw)
  Cc: Juanma Barranquero, emacs-devel

Jason Rumney wrote:
> Have you tested the emacsclientw.exe build with MSVC?
>
> I think there is also a need for something that starts Emacs if it is 
> not already running, so I came up with the following (based on 
> runemacs.c), which I intended to check into the nt directory. The 
> intention is to use this to associate Emacs with file types in 
> Explorer and other applications that allow external editors.

I like the idea but I think it will need some enhancement to take care 
of the --no-wait flag in the case when Emacs is not running from the 
beginning.

Actually I would prefer that this code made it into emacsclient. If it 
were it would be easier to take care of the --no-wait flag.

Another thing would like is to have emacsclient optionally request that 
emacs runs `server-start´ when starting emacs. Is not that much easier 
for new emacs users? Does not that also makes it easier to take care of 
the --server-file option? (I added the feature to start emacs to 
gnuclient on w32 before and it seems like users like it.)

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 14:11                   ` emacsclientw Lennart Borgman
@ 2006-11-13 14:40                     ` Juanma Barranquero
  2006-11-13 19:36                       ` emacsclientw Stefan Monnier
  2006-11-13 20:12                     ` emacsclientw Eli Zaretskii
  1 sibling, 1 reply; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-13 14:40 UTC (permalink / raw)
  Cc: emacs-devel, Jason Rumney

[-- Attachment #1: Type: text/plain, Size: 1070 bytes --]

On 11/13/06, Lennart Borgman <lennart.borgman.073@student.lu.se> wrote:

> Another thing would like is to have emacsclient optionally request that
> emacs runs `server-start´ when starting emacs. Is not that much easier
> for new emacs users? Does not that also makes it easier to take care of
> the --server-file option?

How do you propose to do that in a generic way? You'll have to add
environment variables or new args to allow customizing it. For
example, I don't run `server-start', but `server-mode', because the
later runs `server-mode-hook', which I need. How do you know how much
to wait before retrying emacsclient? (Depending on the size and
complexity of your .emacs, Emacs will delay from a few fractions of a
second to more than a few seconds before server.el is ready to process
incoming connections.) Will you pass to Emacs the server-name?

That's my only objection to what you propose: that emacsclient should
know nothing about how I do run my Emacs. So, if it doesn't, you'll
have to pass it somehow. So more args.

                    /L/e/k/t/u

[-- Attachment #2: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 12:23                   ` emacsclientw Juanma Barranquero
@ 2006-11-13 16:19                     ` Lennart Borgman
  0 siblings, 0 replies; 48+ messages in thread
From: Lennart Borgman @ 2006-11-13 16:19 UTC (permalink / raw)
  Cc: Juanma Barranquero

[-- Attachment #1: Type: text/plain, Size: 576 bytes --]

Juanma Barranquero wrote:
> On 11/13/06, Jason Rumney <jasonr@gnu.org> wrote:
>
>> Have you tested the emacsclientw.exe build with MSVC?
>
> No, I have not set up a build enviroment for MSVC. Did you try it?
>
> BTW, Lennart's got a bunch of changes to emacsclient that would allow
> emacsclient's error messages to go to GUI message boxes when run as
> emacsclientw.exe. I'm testing it right now.

I have attached this patch. Neither Juanma nor I can test it on for 
example GNU/Linux. Can someone please do that? (It should in effect 
change nothing at all except on w32.)


[-- Attachment #2: emacsclient-messagebox.diff --]
[-- Type: text/plain, Size: 9731 bytes --]

Index: emacsclient.c
===================================================================
RCS file: /cvsroot/emacs/emacs/lib-src/emacsclient.c,v
retrieving revision 1.89
diff -u -r1.89 emacsclient.c
--- emacsclient.c	10 Nov 2006 15:41:44 -0000	1.89
+++ emacsclient.c	13 Nov 2006 00:31:08 -0000
@@ -30,6 +30,7 @@
 
 # include <malloc.h>
 # include <stdlib.h>
+# include <windows.h>
 
 # define HAVE_SOCKETS
 # define HAVE_INET_SOCKETS
@@ -142,6 +143,109 @@
   { 0, 0, 0, 0 }
 };
 
+/* Message functions. */
+
+#ifdef WINDOWSNT
+int w32_console_app = 0;
+
+void
+w32_check_console_app()
+{
+  /* Did not work, found also in nonconsole app: stdinhandle =
+     GetStdHandle(STD_OUTPUT_HANDLE);
+   */
+  /* Test for console title */
+  TCHAR szOldTitle[MAX_PATH];
+  DWORD titlen;
+
+  titlen = GetConsoleTitle(szOldTitle, MAX_PATH);
+  if (titlen) {
+    //MessageBox ( NULL, szOldTitle, "testing", MB_ICONINFORMATION);
+    w32_console_app = 1;
+  } else {
+    //MessageBox ( NULL, "no title", "testing", MB_ICONINFORMATION);
+  }
+  //exit (EXIT_FAILURE);
+}
+#endif
+
+void
+message_internal(msg, is_error)
+     char *msg;
+     int is_error;
+{
+#ifdef WINDOWSNT
+  if (!w32_console_app) {
+    if (is_error) {
+      MessageBox (NULL, msg, "Emacsclient", MB_ICONINFORMATION);
+    } else {
+      MessageBox (NULL, msg, "Emacsclient ERROR", MB_ICONINFORMATION);
+    }
+  } else {
+#endif
+    //MessageBox (NULL, "here 0", "Emacsclient ERROR", MB_ICONINFORMATION);
+    if (is_error) {
+      //MessageBox (NULL, "here 1", "Emacsclient ERROR", MB_ICONINFORMATION);
+      fprintf(stderr, msg);
+    } else {
+      //MessageBox (NULL, "here 2", "Emacsclient ERROR", MB_ICONINFORMATION);
+      printf(msg);
+    }
+#ifdef WINDOWSNT
+  }
+#endif
+}
+
+void
+errormsg(msg)
+     char *msg;
+{
+  message_internal(msg, 1);
+}
+
+void
+errormsg1(msg, par1)
+     char *msg;
+     char *par1;
+{
+  char buf[2048];
+  sprintf(buf, msg, par1);
+  message_internal(buf, 1);
+}
+
+void
+errormsg2(msg, par1, par2)
+     char *msg;
+     char *par1;
+     char *par2;
+{
+  char buf[2048];
+  sprintf(buf, msg, par1, par2);
+  message_internal(buf, 1);
+}
+
+void
+errormsg3(msg, par1, par2, par3)
+     char *msg;
+     char *par1;
+     char *par2;
+     char *par3;
+{
+  char buf[2048];
+  sprintf(buf, msg, par1, par2, par3);
+  message_internal(buf, 1);
+}
+
+void
+message1(msg, par1)
+     char *msg;
+     char *par1;
+{
+  char buf[2048];
+  sprintf(buf, msg, par1);
+  message_internal(buf, 1);
+}
+
 /* Decode the options from argv and argc.
    The global variable `optind' will say how many arguments we used up.  */
 
@@ -199,7 +303,7 @@
 	  break;
 
 	case 'V':
-	  printf ("emacsclient %s\n", VERSION);
+	  message1 ("emacsclient %s\n", VERSION);
 	  exit (EXIT_SUCCESS);
 	  break;
 
@@ -208,7 +312,7 @@
 	  break;
 
 	default:
-	  fprintf (stderr, "Try `%s --help' for more information\n", progname);
+	  errormsg1 ("Try `%s --help' for more information\n", progname);
 	  exit (EXIT_FAILURE);
 	  break;
 	}
@@ -218,7 +322,7 @@
 void
 print_help_and_exit ()
 {
-  printf (
+  message1 (
 	  "Usage: %s [OPTIONS] FILE...\n\
 Tell the Emacs server to visit the specified files.\n\
 Every FILE can be either just a FILENAME or [+LINE[:COLUMN]] FILENAME.\n\
@@ -259,7 +363,7 @@
       argv[i] = (char *)alternate_editor;
 #endif
       execvp (alternate_editor, argv + i);
-      fprintf (stderr, "%s: error executing alternate editor \"%s\"\n",
+      errormsg2 ("%s: error executing alternate editor \"%s\"\n",
                progname, alternate_editor);
     }
   exit (EXIT_FAILURE);
@@ -273,9 +377,8 @@
      int argc;
      char **argv;
 {
-  fprintf (stderr, "%s: Sorry, the Emacs server is supported only\n",
+  errormsg1 ("%s: Sorry, the Emacs server is supported only\non systems with Berkely sockets.\n",
 	   argv[0]);
-  fprintf (stderr, "on systems with Berkeley sockets.\n");
 
   fail (argc, argv);
 }
@@ -424,7 +527,7 @@
 
   if (WSAStartup (MAKEWORD (2, 0), &wsaData))
     {
-      fprintf (stderr, "%s: error initializing WinSock2", progname);
+      errormsg1 ("%s: error initializing WinSock2", progname);
       exit (EXIT_FAILURE);
     }
 
@@ -480,7 +583,7 @@
     }
   else
     {
-      fprintf (stderr, "%s: invalid configuration info", progname);
+      errormsg1 ("%s: invalid configuration info", progname);
       exit (EXIT_FAILURE);
     }
 
@@ -490,7 +593,7 @@
 
   if (! fread (authentication, AUTH_KEY_LENGTH, 1, config))
     {
-      fprintf (stderr, "%s: cannot read authentication info", progname);
+      errormsg1 ("%s: cannot read authentication info", progname);
       exit (EXIT_FAILURE);
     }
 
@@ -535,7 +638,7 @@
     return INVALID_SOCKET;
 
   if (server.sin_addr.s_addr != inet_addr ("127.0.0.1"))
-    fprintf (stderr, "%s: connected to remote socket at %s\n",
+    errormsg2 ("%s: connected to remote socket at %s\n",
              progname, inet_ntoa (server.sin_addr));
 
   /*
@@ -543,8 +646,8 @@
    */
   if ((s = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
     {
-      fprintf (stderr, "%s: ", progname);
-      perror ("socket");
+      errormsg2 ("%s: socket: %s\n", progname, strerror(errno));
+      //perror ("socket");
       return INVALID_SOCKET;
     }
 
@@ -553,8 +656,8 @@
    */
   if (connect (s, (struct sockaddr *) &server, sizeof server) < 0)
     {
-      fprintf (stderr, "%s: ", progname);
-      perror ("connect");
+      errormsg2 ("%s: connect: %s\n", progname, strerror(errno));
+      //perror ("connect");
       return INVALID_SOCKET;
     }
 
@@ -606,8 +709,8 @@
 
   if ((s = socket (AF_UNIX, SOCK_STREAM, 0)) < 0)
     {
-      fprintf (stderr, "%s: ", progname);
-      perror ("socket");
+      errormsg2 ("%s: socket: %s\n", progname, strerror(errno));
+      //perror ("socket");
       return INVALID_SOCKET;
     }
 
@@ -637,7 +740,7 @@
       strcpy (server.sun_path, socket_name);
     else
       {
-	fprintf (stderr, "%s: socket-name %s too long",
+	errormsg2 ("%s: socket-name %s too long",
 		 progname, socket_name);
 	exit (EXIT_FAILURE);
       }
@@ -672,7 +775,7 @@
 		  strcpy (server.sun_path, socket_name);
 		else
 		  {
-		    fprintf (stderr, "%s: socket-name %s too long",
+		    errormsg2 ("%s: socket-name %s too long",
 			     progname, socket_name);
 		    exit (EXIT_FAILURE);
 		  }
@@ -692,7 +795,7 @@
            we are root. */
         if (0 != geteuid ())
           {
-            fprintf (stderr, "%s: Invalid socket owner\n", progname);
+            errormsg1 ("%s: Invalid socket owner\n", progname);
 	    return INVALID_SOCKET;
           }
         break;
@@ -700,12 +803,12 @@
       case 2:
         /* `stat' failed */
         if (saved_errno == ENOENT)
-          fprintf (stderr,
+          errormsg1 (
                    "%s: can't find socket; have you started the server?\n\
 To start the server in Emacs, type \"M-x server-start\".\n",
 		   progname);
         else
-          fprintf (stderr, "%s: can't stat %s: %s\n",
+          errormsg3 ("%s: can't stat %s: %s\n",
 		   progname, server.sun_path, strerror (saved_errno));
         return INVALID_SOCKET;
       }
@@ -714,8 +817,8 @@
   if (connect (s, (struct sockaddr *) &server, strlen (server.sun_path) + 2)
       < 0)
     {
-      fprintf (stderr, "%s: ", progname);
-      perror ("connect");
+      errormsg2 ("%s: connect: %s\n", progname, strerror(errno));
+      //perror ("connect");
       return INVALID_SOCKET;
     }
 
@@ -738,7 +841,7 @@
       if ((s != INVALID_SOCKET) || alternate_editor)
         return s;
 
-      fprintf (stderr, "%s: error accessing socket \"%s\"",
+      errormsg2 ("%s: error accessing socket \"%s\"",
                progname, socket_name);
       exit (EXIT_FAILURE);
     }
@@ -754,7 +857,7 @@
       if ((s != INVALID_SOCKET) || alternate_editor)
         return s;
 
-      fprintf (stderr, "%s: error accessing server file \"%s\"",
+      errormsg2 ("%s: error accessing server file \"%s\"",
                progname, server_file);
       exit (EXIT_FAILURE);
     }
@@ -773,7 +876,7 @@
     return s;
 
   /* No implicit or explicit socket, and no alternate editor.  */
-  fprintf (stderr, "%s: No socket or alternate editor.  Please use:\n\n"
+  errormsg1 ("%s: No socket or alternate editor.  Please use:\n\n"
 #ifndef NO_SOCKETS_IN_FILE_SYSTEM
 "\t--socket-name\n"
 #endif
@@ -793,6 +896,10 @@
   char *cwd;
   char string[BUFSIZ+1];
 
+#ifdef WINDOWSNT
+  w32_check_console_app();
+#endif
+
   progname = argv[0];
 
   /* Process options.  */
@@ -800,8 +907,8 @@
 
   if ((argc - optind < 1) && !eval)
     {
-      fprintf (stderr, "%s: file name or argument required\n", progname);
-      fprintf (stderr, "Try `%s --help' for more information\n", progname);
+      errormsg2 ("%s: file name or argument required\nTry `%s --help' for more information\n",
+              progname, progname);
       exit (EXIT_FAILURE);
     }
 
@@ -817,10 +924,10 @@
     {
       /* getwd puts message in STRING if it fails.  */
 #ifdef HAVE_GETCWD
-      fprintf (stderr, "%s: %s (%s)\n", progname,
+      errormsg3 ("%s: %s (%s)\n", progname,
 	       "Cannot get current working directory", strerror (errno));
 #else
-      fprintf (stderr, "%s: %s (%s)\n", progname, string, strerror (errno));
+      errormsg3 ("%s: %s (%s)\n", progname, string, strerror (errno));
 #endif
       fail (argc, argv);
     }

[-- Attachment #3: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 14:40                     ` emacsclientw Juanma Barranquero
@ 2006-11-13 19:36                       ` Stefan Monnier
  2006-11-13 20:08                         ` emacsclientw Juanma Barranquero
  0 siblings, 1 reply; 48+ messages in thread
From: Stefan Monnier @ 2006-11-13 19:36 UTC (permalink / raw)
  Cc: Lennart Borgman, Jason Rumney, emacs-devel

>> Another thing would like is to have emacsclient optionally request that
>> emacs runs `server-start´ when starting emacs. Is not that much easier
>> for new emacs users? Does not that also makes it easier to take care of
>> the --server-file option?

> How do you propose to do that in a generic way? You'll have to add
> environment variables or new args to allow customizing it.

I don't see much problem here: just start Emacs with something like
"emacs <file> --eval (server-mode 1)".

> For example, I don't run `server-start', but `server-mode', because the
> later runs `server-mode-hook', which I need.

I consider `server-start' as a left over from the past.

> How do you know how much to wait before retrying emacsclient?

One way is to not wait: let this Emacs server handle the request
immediately, without going through emacsclient/server.  The server is only
started as a convenience for subsequent uses of emacsclient.

> Will you pass to Emacs the server-name?

We should, yes.


        Stefan

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 19:36                       ` emacsclientw Stefan Monnier
@ 2006-11-13 20:08                         ` Juanma Barranquero
  2006-11-13 21:33                           ` emacsclientw Stefan Monnier
  0 siblings, 1 reply; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-13 20:08 UTC (permalink / raw)
  Cc: Lennart Borgman, Jason Rumney, emacs-devel

On 11/13/06, Stefan Monnier <monnier@iro.umontreal.ca> wrote:

> I consider `server-start' as a left over from the past.

Well, as I've said, `server-mode-hook' is useful.

> One way is to not wait: let this Emacs server handle the request
> immediately, without going through emacsclient/server.  The server is only
> started as a convenience for subsequent uses of emacsclient.

And what if emacsclient was run from a tool that needs to wait for
Emacs (i.e., the user) to do something to the file and send it back?

                    /L/e/k/t/u

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 14:11                   ` emacsclientw Lennart Borgman
  2006-11-13 14:40                     ` emacsclientw Juanma Barranquero
@ 2006-11-13 20:12                     ` Eli Zaretskii
  1 sibling, 0 replies; 48+ messages in thread
From: Eli Zaretskii @ 2006-11-13 20:12 UTC (permalink / raw)
  Cc: lekktu, emacs-devel, jasonr

> Date: Mon, 13 Nov 2006 15:11:38 +0100
> From: Lennart Borgman <lennart.borgman.073@student.lu.se>
> Cc: Juanma Barranquero <lekktu@gmail.com>, emacs-devel@gnu.org
> 
> Actually I would prefer that this code made it into emacsclient.

Is it a good idea?  What if I want to run an $EDITOR from a console
program?  In that case, usually the program should wait for Emacs to
finish editing before it continues.  I think your suggestion would
cause the invoking program to continue without waiting.

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 20:08                         ` emacsclientw Juanma Barranquero
@ 2006-11-13 21:33                           ` Stefan Monnier
  2006-11-13 22:23                             ` emacsclientw Lennart Borgman
  2006-11-13 22:40                             ` emacsclientw Juanma Barranquero
  0 siblings, 2 replies; 48+ messages in thread
From: Stefan Monnier @ 2006-11-13 21:33 UTC (permalink / raw)
  Cc: Lennart Borgman, emacs-devel, Jason Rumney

>> I consider `server-start' as a left over from the past.
> Well, as I've said, `server-mode-hook' is useful.

So we're in violent agreement, aren't we?

>> One way is to not wait: let this Emacs server handle the request
>> immediately, without going through emacsclient/server.  The server is only
>> started as a convenience for subsequent uses of emacsclient.
> And what if emacsclient was run from a tool that needs to wait for
> Emacs (i.e., the user) to do something to the file and send it back?

Hmm... good point.  Well, then we can start the server, then wait for some
signal that it's ready, then start emacsclient.  Nothing insurmountable,


        Stefan

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 21:33                           ` emacsclientw Stefan Monnier
@ 2006-11-13 22:23                             ` Lennart Borgman
  2006-11-13 22:40                             ` emacsclientw Juanma Barranquero
  1 sibling, 0 replies; 48+ messages in thread
From: Lennart Borgman @ 2006-11-13 22:23 UTC (permalink / raw)
  Cc: Juanma Barranquero, Jason Rumney, emacs-devel

Stefan Monnier wrote:
>> And what if emacsclient was run from a tool that needs to wait for
>> Emacs (i.e., the user) to do something to the file and send it back?
>>     
>
> Hmm... good point.  Well, then we can start the server, then wait for some
> signal that it's ready, then start emacsclient.  Nothing insurmountable,
>   

I have been coding this today, but had some problems recompiling at the 
moment. Coming back.

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 21:33                           ` emacsclientw Stefan Monnier
  2006-11-13 22:23                             ` emacsclientw Lennart Borgman
@ 2006-11-13 22:40                             ` Juanma Barranquero
  2006-11-13 22:54                               ` emacsclientw Lennart Borgman
  2006-11-13 23:20                               ` emacsclientw Jason Rumney
  1 sibling, 2 replies; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-13 22:40 UTC (permalink / raw)
  Cc: emacs-devel

On 11/13/06, Stefan Monnier <monnier@iro.umontreal.ca> wrote:

> So we're in violent agreement, aren't we?

Yes, sorry. I somehow read it as if you had said that `server-mode'
was a leftover, not `server-start'.

> Hmm... good point.  Well, then we can start the server, then wait for some
> signal that it's ready, then start emacsclient.  Nothing insurmountable,

Yeah, but I don't think that belongs to emacsclient. I think that
should be another application; perhaps the "launch emacs" app that
Jason has started.

                    /L/e/k/t/u

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 13:14                       ` emacsclientw dhruva
  2006-11-13 13:31                         ` emacsclientw Juanma Barranquero
@ 2006-11-13 22:43                         ` Jason Rumney
  2006-11-13 22:56                           ` emacsclientw Lennart Borgman
  2006-11-14  3:32                           ` emacsclientw dhruva
  1 sibling, 2 replies; 48+ messages in thread
From: Jason Rumney @ 2006-11-13 22:43 UTC (permalink / raw)
  Cc: Juanma Barranquero, emacs-devel

dhruva wrote:
> Also, I am seeing a strange behavior. I associate a file extension
> '.C' to run emacsclientw.exe. With no Emacs running, I double click on
> a '.C' file from explorer. It launches Emacs (with the splash screen).

That is strange indeed, since emacsclient does not launch Emacs in such 
circumstances, and emacsclientw is just emacsclient compiled with 
different options.

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 22:40                             ` emacsclientw Juanma Barranquero
@ 2006-11-13 22:54                               ` Lennart Borgman
  2006-11-13 23:10                                 ` emacsclientw Juanma Barranquero
  2006-11-13 23:20                               ` emacsclientw Jason Rumney
  1 sibling, 1 reply; 48+ messages in thread
From: Lennart Borgman @ 2006-11-13 22:54 UTC (permalink / raw)
  Cc: Stefan Monnier, emacs-devel

Juanma Barranquero wrote:
> On 11/13/06, Stefan Monnier <monnier@iro.umontreal.ca> wrote:
>
>> So we're in violent agreement, aren't we?
>
> Yes, sorry. I somehow read it as if you had said that `server-mode'
> was a leftover, not `server-start'.
>
>> Hmm... good point.  Well, then we can start the server, then wait for 
>> some
>> signal that it's ready, then start emacsclient.  Nothing insurmountable,
>
> Yeah, but I don't think that belongs to emacsclient. I think that
> should be another application; perhaps the "launch emacs" app that
> Jason has started.
>
>                    /L/e/k/t/u

I think it will be just a few lines in emacsclient.c. Though I am unsure 
about some details ... - if setup of a network socket fails, is it then 
ok to try again later? I mean I assume that the socket setup failed 
because there was no emacs server running. Can those cases be recognized?

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 22:43                         ` emacsclientw Jason Rumney
@ 2006-11-13 22:56                           ` Lennart Borgman
  2006-11-14  3:32                           ` emacsclientw dhruva
  1 sibling, 0 replies; 48+ messages in thread
From: Lennart Borgman @ 2006-11-13 22:56 UTC (permalink / raw)
  Cc: emacs-devel, Juanma Barranquero

Jason Rumney wrote:
> dhruva wrote:
>> Also, I am seeing a strange behavior. I associate a file extension
>> '.C' to run emacsclientw.exe. With no Emacs running, I double click on
>> a '.C' file from explorer. It launches Emacs (with the splash screen).
>
> That is strange indeed, since emacsclient does not launch Emacs in 
> such circumstances, and emacsclientw is just emacsclient compiled with 
> different options.

What does "assoc .c" and ftype of the result of assoc show?

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 22:54                               ` emacsclientw Lennart Borgman
@ 2006-11-13 23:10                                 ` Juanma Barranquero
  2006-11-14  0:45                                   ` emacsclientw Lennart Borgman
  0 siblings, 1 reply; 48+ messages in thread
From: Juanma Barranquero @ 2006-11-13 23:10 UTC (permalink / raw)
  Cc: Stefan Monnier, emacs-devel

On 11/13/06, Lennart Borgman <lennart.borgman.073@student.lu.se> wrote:

> Though I am unsure
> about some details ... - if setup of a network socket fails, is it then
> ok to try again later? I mean I assume that the socket setup failed
> because there was no emacs server running. Can those cases be recognized?

That's one of the reasons I don't like this. emacsclient is based upon
the idea that you try to connect to Emacs, and if you can't, you just
run the alternate editor. Now, you're going to be forced to
distinguish between running the alternate editor, and running Emacs,
because they should be treated in two very different ways, and have
all sort of configuration options for the case that you run Emacs.
Unless you're thinking of getting rid of --alternate-editor, which
wouldn't be a good idea.

It would be far easier, I think, to have a second program (let's call
it launchemacs) that does:

  1) Run Emacs and wait until Emacs is running the server. The program
should have options to start Emacs the way the user wants (either a
config file, command line options, environmente variables, whatever)
  2) Once the seerver is running, execvp emacsclient(w?).exe with the
original arguments passed to launchemacs.

The trick is that then you can do

  emacsclient --alternate-editor=launchemacs myfile.txt

and you don't have to modify emacsclient *at all*.

                    /L/e/k/t/u

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 22:40                             ` emacsclientw Juanma Barranquero
  2006-11-13 22:54                               ` emacsclientw Lennart Borgman
@ 2006-11-13 23:20                               ` Jason Rumney
  1 sibling, 0 replies; 48+ messages in thread
From: Jason Rumney @ 2006-11-13 23:20 UTC (permalink / raw)
  Cc: Stefan Monnier, emacs-devel

Juanma Barranquero wrote:
> Yeah, but I don't think that belongs to emacsclient. I think that
> should be another application; perhaps the "launch emacs" app that
> Jason has started.
Actually, I think the functionality I was trying to provide is covered 
by ALTERNATE_EDITOR and emacsclientw.exe, so I don't see any point in my 
extra app any more. The solution is probably to improve the 
ALTERNATE_EDITOR handling to recognise Emacs as a special case, or at 
least delay exit until the spawned editor is done.

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 23:10                                 ` emacsclientw Juanma Barranquero
@ 2006-11-14  0:45                                   ` Lennart Borgman
  0 siblings, 0 replies; 48+ messages in thread
From: Lennart Borgman @ 2006-11-14  0:45 UTC (permalink / raw)
  Cc: Stefan Monnier, emacs-devel

Juanma Barranquero wrote:
> On 11/13/06, Lennart Borgman <lennart.borgman.073@student.lu.se> wrote:
>
>> Though I am unsure
>> about some details ... - if setup of a network socket fails, is it then
>> ok to try again later? I mean I assume that the socket setup failed
>> because there was no emacs server running. Can those cases be 
>> recognized?
>
> That's one of the reasons I don't like this. emacsclient is based upon
> the idea that you try to connect to Emacs, and if you can't, you just
> run the alternate editor. Now, you're going to be forced to
> distinguish between running the alternate editor, and running Emacs,
> because they should be treated in two very different ways, and have
> all sort of configuration options for the case that you run Emacs.
> Unless you're thinking of getting rid of --alternate-editor, which
> wouldn't be a good idea.
>
> It would be far easier, I think, to have a second program (let's call
> it launchemacs) that does:
>
>  1) Run Emacs and wait until Emacs is running the server. The program
> should have options to start Emacs the way the user wants (either a
> config file, command line options, environmente variables, whatever)
>  2) Once the seerver is running, execvp emacsclient(w?).exe with the
> original arguments passed to launchemacs.
>
> The trick is that then you can do
>
>  emacsclient --alternate-editor=launchemacs myfile.txt
>
> and you don't have to modify emacsclient *at all*.

My idea is a little, little bit different. Keep --alternative-editor. 
Add a new option --start-timeout=[seconds]. If this new option is given 
then wait max that many seconds for emacs server to be available after 
launching --alternative-editor.

Let the default for --alternative-editor be "emacs" (or "runemacs" on 
w32). With full path taken from emacsclient path.

Doing it this way no second program is needed and it is (I hope) easy to 
wait for emacs server.

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-13 22:43                         ` emacsclientw Jason Rumney
  2006-11-13 22:56                           ` emacsclientw Lennart Borgman
@ 2006-11-14  3:32                           ` dhruva
  2006-11-14  7:18                             ` emacsclientw Mathias Dahl
  2006-11-14  7:30                             ` emacsclientw Jason Rumney
  1 sibling, 2 replies; 48+ messages in thread
From: dhruva @ 2006-11-14  3:32 UTC (permalink / raw)
  Cc: Juanma Barranquero, emacs-devel

Hi,

On 11/14/06, Jason Rumney <jasonr@gnu.org> wrote:
> dhruva wrote:
> > Also, I am seeing a strange behavior. I associate a file extension
> > '.C' to run emacsclientw.exe. With no Emacs running, I double click on
> > a '.C' file from explorer. It launches Emacs (with the splash screen).
>
> That is strange indeed, since emacsclient does not launch Emacs in such
> circumstances, and emacsclientw is just emacsclient compiled with
> different options.

I just re-confirmed. "emacsclientw.exe" launches emacs if it is not
running. I have built the whole stuff using MSVC on WXP.

-dk

-- 
dhruva (dk)
Contents reflect my personal views only!

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-14  3:32                           ` emacsclientw dhruva
@ 2006-11-14  7:18                             ` Mathias Dahl
  2006-11-14  7:34                               ` emacsclientw Jason Rumney
  2006-11-14  8:39                               ` emacsclientw dhruva
  2006-11-14  7:30                             ` emacsclientw Jason Rumney
  1 sibling, 2 replies; 48+ messages in thread
From: Mathias Dahl @ 2006-11-14  7:18 UTC (permalink / raw)
  Cc: Juanma Barranquero, emacs-devel, Jason Rumney

> I just re-confirmed. "emacsclientw.exe" launches emacs if it is not
> running. I have built the whole stuff using MSVC on WXP.

Just the way I would like it. Reading the latest message gets me a bit
scared: one of the nice things with gnuserv/gnuclient/gnudoit on
Windows is that Emacs is started if it is not started already.
Splitting this into two different clients seems no good, IMHO. Trying
to get collegues to use Emacs is hard as it is, they barely accept
using gnuclient(w).exe (they wonder why they just cannot associate the
emacs exe directly with certain file types without getting multiple
copies running).

My 0.2 Euro.

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-14  3:32                           ` emacsclientw dhruva
  2006-11-14  7:18                             ` emacsclientw Mathias Dahl
@ 2006-11-14  7:30                             ` Jason Rumney
  1 sibling, 0 replies; 48+ messages in thread
From: Jason Rumney @ 2006-11-14  7:30 UTC (permalink / raw)
  Cc: Juanma Barranquero, emacs-devel

dhruva wrote:
> I just re-confirmed. "emacsclientw.exe" launches emacs if it is not
> running. I have built the whole stuff using MSVC on WXP.

And emacsclientw does not create a command prompt window when you use it 
from the GUI? That is what I'm more interested in, as the -mwindows link 
option seems an elegant solution to the problem of superfluous command 
prompt windows, but it is not documented as being recognized by the 
microsoft linker, only by GNU ld.

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-14  7:18                             ` emacsclientw Mathias Dahl
@ 2006-11-14  7:34                               ` Jason Rumney
  2006-11-14  8:44                                 ` emacsclientw Mathias Dahl
  2006-11-14  8:39                               ` emacsclientw dhruva
  1 sibling, 1 reply; 48+ messages in thread
From: Jason Rumney @ 2006-11-14  7:34 UTC (permalink / raw)
  Cc: emacs-devel, Juanma Barranquero

Mathias Dahl wrote:
> (they wonder why they just cannot associate the
> emacs exe directly with certain file types without getting multiple
> copies running).

They can't do that with any other program either without knowing the 
internals of what DDE commands it uses, and setting them up in the 
association.

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-14  7:18                             ` emacsclientw Mathias Dahl
  2006-11-14  7:34                               ` emacsclientw Jason Rumney
@ 2006-11-14  8:39                               ` dhruva
  1 sibling, 0 replies; 48+ messages in thread
From: dhruva @ 2006-11-14  8:39 UTC (permalink / raw)
  Cc: Juanma Barranquero, emacs-devel, Jason Rumney

On 11/14/06, Mathias Dahl <mathias.dahl@gmail.com> wrote:
> > I just re-confirmed. "emacsclientw.exe" launches emacs if it is not
> > running. I have built the whole stuff using MSVC on WXP.
>
> Just the way I would like it. Reading the latest message gets me a bit
> scared: one of the nice things with gnuserv/gnuclient/gnudoit on
> Windows is that Emacs is started if it is not started already.
> Splitting this into two different clients seems no good, IMHO. Trying
> to get collegues to use Emacs is hard as it is, they barely accept
> using gnuclient(w).exe (they wonder why they just cannot associate the
> emacs exe directly with certain file types without getting multiple
> copies running).

I take back my words, I did a cvs update (now) and built emacs from
scratch (bootstrap). The resulting emacsclientw does not start emacs
if it is not running! I remember a quote by a fellow developer long
back when a nice feature that worked just stopped working "All good
things must come to an end sooner or later...."
I was very happy with the behavior except that I wanted an option to
set the "--no-wait" as default so that I will not be prompted by emacs
before killing every file visited using emacsclientw (or emacsclient).

The minibuffer prompt I get:
Buffer `_emacs' still has clients; kill it? (y or n)

-dk

-- 
dhruva (dk)
Contents reflect my personal views only!

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-14  7:34                               ` emacsclientw Jason Rumney
@ 2006-11-14  8:44                                 ` Mathias Dahl
  2006-12-05 23:15                                   ` emacsclientw Stuart D. Herring
  0 siblings, 1 reply; 48+ messages in thread
From: Mathias Dahl @ 2006-11-14  8:44 UTC (permalink / raw)
  Cc: emacs-devel, Juanma Barranquero

> > (they wonder why they just cannot associate the
> > emacs exe directly with certain file types without getting multiple
> > copies running).
>
> They can't do that with any other program either without knowing the
> internals of what DDE commands it uses, and setting them up in the
> association.

I did not know that.

^ permalink raw reply	[flat|nested] 48+ messages in thread

* Re: emacsclientw
  2006-11-14  8:44                                 ` emacsclientw Mathias Dahl
@ 2006-12-05 23:15                                   ` Stuart D. Herring
  0 siblings, 0 replies; 48+ messages in thread
From: Stuart D. Herring @ 2006-12-05 23:15 UTC (permalink / raw)
  Cc: Juanma Barranquero, emacs-devel, Jason Rumney

Not attempting to raise the dead (threads) here, but I realized I never
actually replied to this:

>> > (they wonder why they just cannot associate the
>> > emacs exe directly with certain file types without getting multiple
>> > copies running).
>>
>> They can't do that with any other program either without knowing the
>> internals of what DDE commands it uses, and setting them up in the
>> association.
>
> I did not know that.

It's not entirely true.  Explorer (the shell) is capable of remembering
DDE commands for a file type and executing them itself when the program is
already running, and many installers arrange for this to happen (because
it's too complicated to do manually).  (Obviously such an installer could
be developed for emacsclient, but it's also a valid goal to minimize the
complexity of installation.)

However, nothing prevents a program that is so-minded from detecting that
it is already running (this is particularly easy on Windows), executing a
DDE transaction with said established process that corresponds to its
command-line arguments, and then exiting.

Many if not most "professional" Windows programs do this, as their
monolithic (often MDI with a complicated GUI) design heavily favors having
precisely 0 or 1 copies running at any time.  Unfortunately, many of them
do this without providing any alternative behavior.

The emacsclient design is arguably better, where the decision between
communication and execution is made by a separate process with its own
customizable logic.  However, it is not true that Windows users will
automatically accept as reasonable the situation where said separate
program must be the one associated with their files, because the
automatic/monolithic behavior is so common.

Davis

-- 
This product is sold by volume, not by mass.  If it appears too dense or
too sparse, it is because mass-energy conversion has occurred during
shipping.

^ permalink raw reply	[flat|nested] 48+ messages in thread

end of thread, other threads:[~2006-12-05 23:15 UTC | newest]

Thread overview: 48+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-11-12 22:17 I can't build from cvs sources on cygwin for some time now Eric Lilja
2006-11-12 22:23 ` Juanma Barranquero
2006-11-12 22:29   ` Eric Lilja
2006-11-12 22:34     ` Juanma Barranquero
2006-11-12 22:46       ` Eric Lilja
2006-11-12 22:56         ` Eric Lilja
2006-11-12 23:05           ` Juanma Barranquero
2006-11-12 23:22             ` Eric Lilja
2006-11-12 23:44               ` Juanma Barranquero
2006-11-12 23:52                 ` Eric Lilja
2006-11-13  0:07           ` Jason Rumney
2006-11-13  0:49             ` Juanma Barranquero
2006-11-13  2:13               ` Juanma Barranquero
2006-11-13  8:21                 ` Eric Lilja
2006-11-13 11:37                 ` Jason Rumney
2006-11-13 12:25                   ` Juanma Barranquero
2006-11-13 11:41                 ` emacsclientw Jason Rumney
2006-11-13 12:23                   ` emacsclientw Juanma Barranquero
2006-11-13 16:19                     ` emacsclientw Lennart Borgman
2006-11-13 12:36                   ` emacsclientw dhruva
2006-11-13 12:39                     ` emacsclientw Juanma Barranquero
2006-11-13 13:14                       ` emacsclientw dhruva
2006-11-13 13:31                         ` emacsclientw Juanma Barranquero
2006-11-13 22:43                         ` emacsclientw Jason Rumney
2006-11-13 22:56                           ` emacsclientw Lennart Borgman
2006-11-14  3:32                           ` emacsclientw dhruva
2006-11-14  7:18                             ` emacsclientw Mathias Dahl
2006-11-14  7:34                               ` emacsclientw Jason Rumney
2006-11-14  8:44                                 ` emacsclientw Mathias Dahl
2006-12-05 23:15                                   ` emacsclientw Stuart D. Herring
2006-11-14  8:39                               ` emacsclientw dhruva
2006-11-14  7:30                             ` emacsclientw Jason Rumney
2006-11-13 14:11                   ` emacsclientw Lennart Borgman
2006-11-13 14:40                     ` emacsclientw Juanma Barranquero
2006-11-13 19:36                       ` emacsclientw Stefan Monnier
2006-11-13 20:08                         ` emacsclientw Juanma Barranquero
2006-11-13 21:33                           ` emacsclientw Stefan Monnier
2006-11-13 22:23                             ` emacsclientw Lennart Borgman
2006-11-13 22:40                             ` emacsclientw Juanma Barranquero
2006-11-13 22:54                               ` emacsclientw Lennart Borgman
2006-11-13 23:10                                 ` emacsclientw Juanma Barranquero
2006-11-14  0:45                                   ` emacsclientw Lennart Borgman
2006-11-13 23:20                               ` emacsclientw Jason Rumney
2006-11-13 20:12                     ` emacsclientw Eli Zaretskii
2006-11-12 23:01         ` I can't build from cvs sources on cygwin for some time now Juanma Barranquero
2006-11-12 23:24           ` Eric Lilja
2006-11-12 23:45             ` Juanma Barranquero
2006-11-13 12:21 ` Eric Lilja

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).