[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [h-e-w] Windows Emacs 22.1 does not start if called from cygwin bash
From: |
Reiner Hammer |
Subject: |
Re: [h-e-w] Windows Emacs 22.1 does not start if called from cygwin bash |
Date: |
Sat, 03 May 2008 22:28:27 +0200 |
User-agent: |
Thunderbird 2.0.0.14 (Windows/20080421) |
Jason and Eli, thanks a lot for your consideration and suggestions.
I did some more tests, but still haven't succeeded.
Currently I still have two complete emacs installations (downloaded
Windows binaries), the older emacs-21.3 and the new emacs-22.1, in
parallel directories. Both run fine if called from Windows. My
cygwin bash environment is free of emacs'ish stuff (tested with "set |
grep -i emacs"). Even when I change directory into the respective
emacs-xx.x/bin directories, add "." to the beginning my cygwin PATH
and then call directly "./runemacs.exe" from my bash shell, then
emacs-21.3 again starts up correctly, whereas emacs-22.1 just brings
up an empty, nonresponsive window that I must ultimately kill manually
(and answer "no" to Windows' suggestion to send an error report).
Therefore the problem is not related to my older method of using symlinks.
In my previous mail I described a script that pushed everything into
the environment that emacs normally stores in the Windows registry,
before finally calling emacs. You are right: these environment
variables did not make a difference.
There is one small exception, however: EMACSLOADPATH (see script
below): If I DON't set this variable in the environment either, then
the old emacs-21.3 comes up fine, whereas the new 22.1 produces that
nasty unresponsive empty window.
If I DO set and export this variable with paths written in DOS style
(see script), the old emacs produces nothing, the new one again the
unresponsive window. But if the paths are written in Unix style (see
script), both the old and new emacs pop up an error window saying they
can't find "term/w32-win.el".
Here's the simple script (where various parts were alternatingly
commented out during these tests):
#!/bin/sh -x
edir="C:\Programme\Emacs\emacs-22.1"
#edir="/cygdrive/c/Programme/Emacs/emacs-22.1"
EMACSLOADPATH="$edir/site_lisp;$edir/lisp"
export EMACSLOADPATH
#eval /cygdrive/c/Programme/Emacs/emacs-21.3/bin/runemacs.exe "$*"
eval /cygdrive/c/Programme/Emacs/emacs-22.1/bin/runemacs.exe "$*"
From this I conclude that you're right: One should NOT set these
environment variables at all.
But yet the new version of emacs doesn't come up in a working fashion.
As I said, I don't think my other environment variables are
responsible. I also checked that I had not set anything special for
the old executable (such as a Windows execution exemption - sorry, I
don't know how this is called in an English version of Windows; mine
is German.) I also updated all of my installed cygwin packages last
night before these tests.
The problem might have to do with dynamic libraries, as suggested in
another mail by Eli. On our Solaris boxes at work, I would simply
type "ldd <executable>" to see which library versions the executable
links against if called. But under cygwin there seems to be no "ldd",
and I don't know what other tools one should use instead; I never did
any development in that environment.
Any further suggestions?
Thanks again -Reiner
Jason Rumney wrote on 03.05.2008 12:15:
Jason Rumney wrote:
Reiner Hammer wrote:
#!/bin/sh
edir="/cygdrive/c/Programme/Emacs/emacs-22.1"
Don't use Cygwin paths for non-Cygwin programs. You shouldn't need to
set any environment variables anyway, as Emacs will pick up the
registry entries (assuming they are correct), or if the registry
entries are not there, it will find the files it needs relative to
where emacs.exe is located.
Actually, its probably this last bit that's failing, since you're using
a Cygwin symlink to start Emacs, so emacs may be getting confused about
the location of emacs.exe. So setting the environment variables may be
needed, but use a Windows path, not a Cygwin one.