* bug#16087: Setting HOME environment variable in Emacs on Windows has side effects
@ 2013-12-07 20:45 SDS
2013-12-08 17:38 ` Eli Zaretskii
0 siblings, 1 reply; 6+ messages in thread
From: SDS @ 2013-12-07 20:45 UTC (permalink / raw)
To: 16087
Package: emacs
Version: 24.3.1
When running "emacs.exe -Q" for precompiled Emacs binaries on Windows,
and after setting the HOME environment variable to a path different than
the registry's HKCU\SOFTWARE\GNU\Emacs\HOME, attempting to access the
old HOME directory returns the new HOME directory.
The steps to reproduce the bug are as follows:
1) Set the registry key "HKCU\SOFTWARE\GNU\Emacs\HOME" to "C:\Old\Home"
2) Run "emacs.exe -Q"
3) In a scratch buffer, evaluate "(setenv "HOME" "C:/New/Home")"
4) Using Dired (C-x d), open "C:\Old\Home"
5) The directory in the new Dired buffer is "C:\New\Home"
Cheers,
SDS
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#16087: Setting HOME environment variable in Emacs on Windows has side effects
2013-12-07 20:45 bug#16087: Setting HOME environment variable in Emacs on Windows has side effects SDS
@ 2013-12-08 17:38 ` Eli Zaretskii
2013-12-08 19:44 ` bug#16087: " SDS
0 siblings, 1 reply; 6+ messages in thread
From: Eli Zaretskii @ 2013-12-08 17:38 UTC (permalink / raw)
To: SDS; +Cc: 16087
> Date: Sat, 07 Dec 2013 15:45:01 -0500
> From: SDS <sds.biz.main@gmail.com>
>
> When running "emacs.exe -Q" for precompiled Emacs binaries on Windows,
> and after setting the HOME environment variable to a path different than
> the registry's HKCU\SOFTWARE\GNU\Emacs\HOME, attempting to access the
> old HOME directory returns the new HOME directory.
This is in no way specific to Windows. I tried similar steps on
GNU/Linux, and saw very similar signs of trouble. Of course, there's
no registry on Unix, but it is enough to start with step #2.
> The steps to reproduce the bug are as follows:
> 1) Set the registry key "HKCU\SOFTWARE\GNU\Emacs\HOME" to "C:\Old\Home"
> 2) Run "emacs.exe -Q"
> 3) In a scratch buffer, evaluate "(setenv "HOME" "C:/New/Home")"
> 4) Using Dired (C-x d), open "C:\Old\Home"
> 5) The directory in the new Dired buffer is "C:\New\Home"
FWIW, I wouldn't expect this to work. Every buffer has its default
directory stored as a string in its buffer object. If you change
where the home directory points to, most, if not all, of these
directories will become invalid, because their expansions, which
always go through "~" if possible, will not exist, except by chance.
And Emacs uses the default directories of the buffers freely when it
manipulates file names.
OTOH, the use case for supporting such a strange change in the middle
of an Emacs session is entirely not clear to me. On the contrary, it
seems to me like doing this is asking for a lot of trouble, and not
only in Emacs (because 'setenv' modifies process-environment, so every
subprocess will get this new value of HOME, so, e.g., the shell will
not find its init files). Could you please describe why you needed
this?
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#16087: Re: bug#16087: Setting HOME environment variable in Emacs on Windows has side effects
2013-12-08 17:38 ` Eli Zaretskii
@ 2013-12-08 19:44 ` SDS
2013-12-08 20:09 ` Eli Zaretskii
0 siblings, 1 reply; 6+ messages in thread
From: SDS @ 2013-12-08 19:44 UTC (permalink / raw)
To: eliz; +Cc: 16087
On 12/8/2013 12:38 PM, Eli Zaretskii wrote:
> OTOH, the use case for supporting such a strange change in the middle
> of an Emacs session is entirely not clear to me. On the contrary, it
> seems to me like doing this is asking for a lot of trouble, and not
> only in Emacs (because 'setenv' modifies process-environment, so every
> subprocess will get this new value of HOME, so, e.g., the shell will
> not find its init files). Could you please describe why you needed
> this?
On Windows, I have two versions of Emacs running: a Cygwin port
(Emacs-w32) and a GNU port (NT-Emacs). I was originally using Emacs-w32
because it supports some Cygwin utilities that aren't supported by
NT-Emacs (e.g. Cygwin bash, Cygwin OpenSSH). However, Cygwin's port was
aborting frequently. The Cygwin Emacs maintainer said it was another
application interfering, but I had removed all that I had installed from
their list of such applications (BLODA) and it hadn't fixed the
aborting. I didn't have the time to debug the issue any further, so I
decided to switch workflow to NT-Emacs until I could fix Emacs-w32.
At the moment, I have two separate .emacs.d directories for each of the
two ports. I didn't want to use a single .emacs.d directory for both
ports because I'm not sure if they would play nicely with each other. I
also don't want issues with one to be carried over to the other. So I
have my HKCU\SOFTWARE\GNU\Emacs\HOME registry key pointing to a
directory with the .emacs.d for NT-Emacs, while my .emacs.d for
Emacs-w32 is in my Cygwin HOME directory.
Ultimately, I'd like my HOME variable in NT-Emacs to point to the Cygwin
HOME directory. This allows any Cygwin utilities used by NT-Emacs to
have HOME set correctly. Also, I'd like ~ to be set to the Cygwin HOME
directory. I tried changing it in init.el, and that's where this issue
arose.
Cheers,
SDS
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#16087: Setting HOME environment variable in Emacs on Windows has side effects
2013-12-08 19:44 ` bug#16087: " SDS
@ 2013-12-08 20:09 ` Eli Zaretskii
2013-12-08 21:14 ` SDS
0 siblings, 1 reply; 6+ messages in thread
From: Eli Zaretskii @ 2013-12-08 20:09 UTC (permalink / raw)
To: SDS; +Cc: 16087
> Date: Sun, 08 Dec 2013 14:44:55 -0500
> From: SDS <sds.biz.main@gmail.com>
> CC: 16087@debbugs.gnu.org
>
> Ultimately, I'd like my HOME variable in NT-Emacs to point to the Cygwin
> HOME directory. This allows any Cygwin utilities used by NT-Emacs to
> have HOME set correctly. Also, I'd like ~ to be set to the Cygwin HOME
> directory. I tried changing it in init.el, and that's where this issue
> arose.
Thanks. So this sounds like a one-time issue, which, once solved to
your satisfaction, should never pop up again, right?
As for setting this up, my suggestion would be to set HOME in the
environment to point to the Cygwin's HOME, and augment that by
whatever you need in the Bash init files.
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#16087: Setting HOME environment variable in Emacs on Windows has side effects
2013-12-08 20:09 ` Eli Zaretskii
@ 2013-12-08 21:14 ` SDS
2013-12-09 3:43 ` Eli Zaretskii
0 siblings, 1 reply; 6+ messages in thread
From: SDS @ 2013-12-08 21:14 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 16087
On 12/8/2013 3:09 PM, Eli Zaretskii wrote:
> Thanks. So this sounds like a one-time issue, which, once solved to
> your satisfaction, should never pop up again, right?
A workaround which directly or indirectly prevents this from happening
is fine. It hasn't even really been an issue unless I'm trying to access
files within the directory containing the .emacs.d for NT-Emacs. I
noticed it when I tried to open .emacs.d/init.el for NT-Emacs and it
opened the init.el for Emacs-w32 instead.
I could isolate the .emacs.d for NT-Emacs inside its own directory, and
point to that in HKCU\SOFTWARE\GNU\Emacs\HOME before changing HOME in
init.el. That way it's only a problem when trying to edit the init.el
for NT-Emacs, which I could workaround by invoking NT-Emacs with --no-init.
I just wasn't sure if there were any other apparent side effects to
changing the HOME directory in the init.el file. I figured out already
that doing so requires changing HOME at the end of init.el, and setting
some directory variables to the full path pointing to .emacs.d for
NT-Emacs. I also wasn't sure if a better/simpler workaround existed.
> As for setting this up, my suggestion would be to set HOME in the
> environment to point to the Cygwin's HOME, and augment that by
> whatever you need in the Bash init files.
Won't that require merging the .emacs.d directories for the two ports?
Is there a way of doing this without having them interfere with each other?
Cheers,
SDS
^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#16087: Setting HOME environment variable in Emacs on Windows has side effects
2013-12-08 21:14 ` SDS
@ 2013-12-09 3:43 ` Eli Zaretskii
0 siblings, 0 replies; 6+ messages in thread
From: Eli Zaretskii @ 2013-12-09 3:43 UTC (permalink / raw)
To: SDS; +Cc: 16087
> Date: Sun, 08 Dec 2013 16:14:11 -0500
> From: SDS <sds.biz.main@gmail.com>
> CC: 16087@debbugs.gnu.org
>
> > Thanks. So this sounds like a one-time issue, which, once solved to
> > your satisfaction, should never pop up again, right?
>
> A workaround which directly or indirectly prevents this from happening
> is fine. It hasn't even really been an issue unless I'm trying to access
> files within the directory containing the .emacs.d for NT-Emacs. I
> noticed it when I tried to open .emacs.d/init.el for NT-Emacs and it
> opened the init.el for Emacs-w32 instead.
>
> I could isolate the .emacs.d for NT-Emacs inside its own directory, and
> point to that in HKCU\SOFTWARE\GNU\Emacs\HOME before changing HOME in
> init.el. That way it's only a problem when trying to edit the init.el
> for NT-Emacs, which I could workaround by invoking NT-Emacs with --no-init.
I don't understand why you need to use HOME or the Registry to access
any directory on your system. Each one of them has its own unique
absolute file name, doesn't it? Just use that. What am I missing?
> > As for setting this up, my suggestion would be to set HOME in the
> > environment to point to the Cygwin's HOME, and augment that by
> > whatever you need in the Bash init files.
>
> Won't that require merging the .emacs.d directories for the two ports?
> Is there a way of doing this without having them interfere with each other?
Depends on what you have in that directory. In general, I see no
reasons why two builds couldn't use the same .emacs.d. Which parts do
you think will cause trouble?
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-12-09 3:43 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-07 20:45 bug#16087: Setting HOME environment variable in Emacs on Windows has side effects SDS
2013-12-08 17:38 ` Eli Zaretskii
2013-12-08 19:44 ` bug#16087: " SDS
2013-12-08 20:09 ` Eli Zaretskii
2013-12-08 21:14 ` SDS
2013-12-09 3:43 ` Eli Zaretskii
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).