GNU bug report logs - #72294
29.2; Emacs --init-directory=... puts user-init-file elsewhere

Previous Next

Package: emacs;

Reported by: Sean Devlin <spd <at> toadstyle.org>

Date: Thu, 25 Jul 2024 16:13:01 UTC

Severity: normal

Found in version 29.2

Done: Daan Ro <daanturo <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 72294 in the body.
You can then email your comments to 72294 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#72294; Package emacs. (Thu, 25 Jul 2024 16:13:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Sean Devlin <spd <at> toadstyle.org>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Thu, 25 Jul 2024 16:13:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Sean Devlin <spd <at> toadstyle.org>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.2; Emacs --init-directory=... puts user-init-file elsewhere
Date: Thu, 25 Jul 2024 12:12:07 -0400
Hi folks,

Recipe:

1. emacs --init-directory=/tmp/emacs
2. M-: user-init-file RET

The user-init-file is ~/.emacs, despite the flag to use /tmp/emacs as
the init directory.

Maybe this is intended behavior, but I found it confusing. The manual
says this about the flag:

"Specify the directory to use when looking for the Emacs init files."

I interpreted this to mean all init files, including the user-init-file.

A workaround is to create /tmp/emacs/init.el before starting Emacs:

1. mkdir -p /tmp/emacs
2. touch /tmp/emacs/init.el
3. emacs --init-directory=/tmp/emacs

Thanks!

In GNU Emacs 29.2 (build 1, aarch64-apple-darwin21.6.0, NS
appkit-2113.60 Version 12.6.6 (Build 21G646)) of 2024-01-18 built on
armbob.lan
Windowing system distributor 'Apple'
System Description:  macOS

Configured using:
'configure --with-ns '--enable-locallisppath=/Library/Application
Support/Emacs/${version}/site-lisp:/Library/Application
Support/Emacs/site-lisp' --with-modules 'CFLAGS=-DFD_SETSIZE=10000
-DDARWIN_UNLIMITED_SELECT' --with-x-toolkit=no'

Configured features:
ACL GLIB GMP GNUTLS JPEG JSON LIBXML2 MODULES NOTIFY KQUEUE NS PDUMPER
PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Fundamental

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  blink-cursor-mode: t
  buffer-read-only: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date subr-x mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
cl-extra cl-print byte-opt gv bytecomp byte-compile thingatpt help-fns
radix-tree help-mode cl-loaddefs cl-lib rmc iso-transl tooltip cconv
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/ns-win ns-win ucs-normalize mule-util
term/common-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads kqueue cocoa ns multi-tty make-network-process emacs)

Memory information:
((conses 16 53484 8633)
(symbols 48 5930 0)
(strings 32 18349 1801)
(string-bytes 1 515950)
(vectors 16 12602)
(vector-slots 8 182812 16189)
(floats 8 28 22)
(intervals 56 232 1)
(buffers 984 12))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#72294; Package emacs. (Thu, 25 Jul 2024 18:57:02 GMT) Full text and rfc822 format available.

Message #8 received at 72294 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Sean Devlin <spd <at> toadstyle.org>
Cc: 72294 <at> debbugs.gnu.org
Subject: Re: bug#72294: 29.2;
 Emacs --init-directory=... puts user-init-file elsewhere
Date: Thu, 25 Jul 2024 21:56:15 +0300
> From: Sean Devlin <spd <at> toadstyle.org>
> Date: Thu, 25 Jul 2024 12:12:07 -0400
> 
> 1. emacs --init-directory=/tmp/emacs
> 2. M-: user-init-file RET
> 
> The user-init-file is ~/.emacs, despite the flag to use /tmp/emacs as
> the init directory.
> 
> Maybe this is intended behavior, but I found it confusing. The manual
> says this about the flag:
> 
> "Specify the directory to use when looking for the Emacs init files."
> 
> I interpreted this to mean all init files, including the user-init-file.

That option sets user-emacs-directory, it doesn't directly affect
user-init-file.

Emacs by default sets user-emacs-directory to the directory where it
actually finds the init file.  This option overrides that.

> A workaround is to create /tmp/emacs/init.el before starting Emacs:
> 
> 1. mkdir -p /tmp/emacs
> 2. touch /tmp/emacs/init.el
> 3. emacs --init-directory=/tmp/emacs

It isn't a workaround, it's how you should do it.

I don't think this is a bug.  The search for init file and the setting
of user-emacs-directory that follows are complex issues, not easily
explained in a few words.

May I ask why you needed to use this option?  It should not be
generally needed.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#72294; Package emacs. (Thu, 25 Jul 2024 20:02:02 GMT) Full text and rfc822 format available.

Message #11 received at 72294 <at> debbugs.gnu.org (full text, mbox):

From: Sean Devlin <spd <at> toadstyle.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 72294 <at> debbugs.gnu.org
Subject: Re: bug#72294: 29.2; Emacs --init-directory=... puts user-init-file
 elsewhere
Date: Thu, 25 Jul 2024 15:59:45 -0400
Hi,

> I don't think this is a bug.

Fair enough.

> May I ask why you needed to use this option?  It should not be
> generally needed.

Lately, I run Emacs from the emacs-30 branch with some local tweaks. I
found a bug in Org, and I was trying to reproduce it in a stable version
of Emacs with default configuration. The bug is in Org 9.7+, which is
newer than what ships in Emacs 29.

Since I knew I would need to install a package, I checked the manual for
the command-line flags to specify the user-emacs-directory, and I found
the --init-directory option. I opened an instance of Emacs 29.2 with
--init-directory=/tmp/bug, and I installed Org via ELPA.

Then, for an unrelated task, I opened an instance of my main Emacs
installation, and I was surprised to see it load without any of my
configuration. I discovered the Emacs 29 instance had written a file to
~/.emacs, shadowing my own configuration in ~/.emacs.d/init.el. That it
wrote the user-init-file outside the user-emacs-directory I specified
was surprising to me.





bug closed, send any further explanations to 72294 <at> debbugs.gnu.org and Sean Devlin <spd <at> toadstyle.org> Request was from Daan Ro <daanturo <at> gmail.com> to control <at> debbugs.gnu.org. (Fri, 26 Jul 2024 04:24:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#72294; Package emacs. (Fri, 26 Jul 2024 06:17:02 GMT) Full text and rfc822 format available.

Message #16 received at 72294 <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: Sean Devlin <spd <at> toadstyle.org>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 72294 <at> debbugs.gnu.org
Subject: Re: bug#72294: 29.2; Emacs --init-directory=... puts user-init-file
 elsewhere
Date: Fri, 26 Jul 2024 08:15:01 +0200
>>>>> On Thu, 25 Jul 2024 15:59:45 -0400, Sean Devlin <spd <at> toadstyle.org> said:

    Sean> Hi,
    >> I don't think this is a bug.

    Sean> Fair enough.

    >> May I ask why you needed to use this option?  It should not be
    >> generally needed.

    Sean> Lately, I run Emacs from the emacs-30 branch with some local tweaks. I
    Sean> found a bug in Org, and I was trying to reproduce it in a stable version
    Sean> of Emacs with default configuration. The bug is in Org 9.7+, which is
    Sean> newer than what ships in Emacs 29.

    Sean> Since I knew I would need to install a package, I checked the manual for
    Sean> the command-line flags to specify the user-emacs-directory, and I found
    Sean> the --init-directory option. I opened an instance of Emacs 29.2 with
    Sean> --init-directory=/tmp/bug, and I installed Org via ELPA.

The emacs info file says

    ‘--init-directory’
         Specify the directory to use when looking for the Emacs init files.

and '.emacs' is an Emacs init file, so I guess the confusion is
understandable. Maybe we should add "(except '.emacs')" to that
statement.

    Sean> Then, for an unrelated task, I opened an instance of my main Emacs
    Sean> installation, and I was surprised to see it load without any of my
    Sean> configuration. I discovered the Emacs 29 instance had written a file to
    Sean> ~/.emacs, shadowing my own configuration in ~/.emacs.d/init.el. That it
    Sean> wrote the user-init-file outside the user-emacs-directory I specified
    Sean> was surprising to me.

    HOME=/tmp/emacs emacs

is how I do that kind of testing.

Robert
-- 




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#72294; Package emacs. (Fri, 26 Jul 2024 06:17:02 GMT) Full text and rfc822 format available.

Message #19 received at 72294-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Sean Devlin <spd <at> toadstyle.org>
Cc: 72294-done <at> debbugs.gnu.org
Subject: Re: bug#72294: 29.2; Emacs --init-directory=... puts user-init-file
 elsewhere
Date: Fri, 26 Jul 2024 09:16:12 +0300
> From: Sean Devlin <spd <at> toadstyle.org>
> Date: Thu, 25 Jul 2024 15:59:45 -0400
> Cc: 72294 <at> debbugs.gnu.org
> 
> Hi,
> 
> > I don't think this is a bug.
> 
> Fair enough.
> 
> > May I ask why you needed to use this option?  It should not be
> > generally needed.
> 
> Lately, I run Emacs from the emacs-30 branch with some local tweaks. I
> found a bug in Org, and I was trying to reproduce it in a stable version
> of Emacs with default configuration. The bug is in Org 9.7+, which is
> newer than what ships in Emacs 29.
> 
> Since I knew I would need to install a package, I checked the manual for
> the command-line flags to specify the user-emacs-directory, and I found
> the --init-directory option. I opened an instance of Emacs 29.2 with
> --init-directory=/tmp/bug, and I installed Org via ELPA.
> 
> Then, for an unrelated task, I opened an instance of my main Emacs
> installation, and I was surprised to see it load without any of my
> configuration. I discovered the Emacs 29 instance had written a file to
> ~/.emacs, shadowing my own configuration in ~/.emacs.d/init.el. That it
> wrote the user-init-file outside the user-emacs-directory I specified
> was surprising to me.

Thanks, I used this to improve the documentation of --init-directory
on the emacs-30 branch and make it more accurate, and I'm therefore
closing this bug.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#72294; Package emacs. (Fri, 26 Jul 2024 10:35:02 GMT) Full text and rfc822 format available.

Message #22 received at 72294 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Robert Pluim <rpluim <at> gmail.com>
Cc: spd <at> toadstyle.org, 72294 <at> debbugs.gnu.org
Subject: Re: bug#72294: 29.2; Emacs --init-directory=... puts user-init-file
 elsewhere
Date: Fri, 26 Jul 2024 13:34:07 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Cc: Eli Zaretskii <eliz <at> gnu.org>,  72294 <at> debbugs.gnu.org
> Date: Fri, 26 Jul 2024 08:15:01 +0200
> 
> >>>>> On Thu, 25 Jul 2024 15:59:45 -0400, Sean Devlin <spd <at> toadstyle.org> said:
> 
> The emacs info file says
> 
>     ‘--init-directory’
>          Specify the directory to use when looking for the Emacs init files.
> 
> and '.emacs' is an Emacs init file, so I guess the confusion is
> understandable. Maybe we should add "(except '.emacs')" to that
> statement.

That would be inaccurate, AFAIU.  If the .emacs file is there, it will
be used from that directory.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#72294; Package emacs. (Fri, 26 Jul 2024 12:02:02 GMT) Full text and rfc822 format available.

Message #25 received at 72294 <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: spd <at> toadstyle.org, 72294 <at> debbugs.gnu.org
Subject: Re: bug#72294: 29.2; Emacs --init-directory=... puts user-init-file
 elsewhere
Date: Fri, 26 Jul 2024 14:00:22 +0200
>>>>> On Fri, 26 Jul 2024 13:34:07 +0300, Eli Zaretskii <eliz <at> gnu.org> said:

    >> From: Robert Pluim <rpluim <at> gmail.com>
    >> Cc: Eli Zaretskii <eliz <at> gnu.org>,  72294 <at> debbugs.gnu.org
    >> Date: Fri, 26 Jul 2024 08:15:01 +0200
    >> 
    >> >>>>> On Thu, 25 Jul 2024 15:59:45 -0400, Sean Devlin <spd <at> toadstyle.org> said:
    >> 
    >> The emacs info file says
    >> 
    >> ‘--init-directory’
    >> Specify the directory to use when looking for the Emacs init files.
    >> 
    >> and '.emacs' is an Emacs init file, so I guess the confusion is
    >> understandable. Maybe we should add "(except '.emacs')" to that
    >> statement.

    Eli> That would be inaccurate, AFAIU.  If the .emacs file is there, it will
    Eli> be used from that directory.

Thatʼs not what I observe:

~/.emacs:

        (message "Home dir")

/tmp/emacs-30/.emacs:

        (message "Temp dir")

src/emacs --init-directory=/tmp/emacs-30

=> *Messages* contains "Home dir"

So it looks like this option only affects `user-emacs-directory'.

I agree it would be less confusing if it used the ".emacs" in
"/tmp/emacs-30", but I think the ship has sailed on that one.

Robert
-- 




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#72294; Package emacs. (Fri, 26 Jul 2024 12:07:01 GMT) Full text and rfc822 format available.

Message #28 received at 72294 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Robert Pluim <rpluim <at> gmail.com>
Cc: spd <at> toadstyle.org, 72294 <at> debbugs.gnu.org
Subject: Re: bug#72294: 29.2; Emacs --init-directory=... puts user-init-file
 elsewhere
Date: Fri, 26 Jul 2024 15:03:41 +0300
> From: Robert Pluim <rpluim <at> gmail.com>
> Cc: spd <at> toadstyle.org,  72294 <at> debbugs.gnu.org
> Date: Fri, 26 Jul 2024 14:00:22 +0200
> 
> >>>>> On Fri, 26 Jul 2024 13:34:07 +0300, Eli Zaretskii <eliz <at> gnu.org> said:
> 
>     >> From: Robert Pluim <rpluim <at> gmail.com>
>     >> Cc: Eli Zaretskii <eliz <at> gnu.org>,  72294 <at> debbugs.gnu.org
>     >> Date: Fri, 26 Jul 2024 08:15:01 +0200
>     >> 
>     >> >>>>> On Thu, 25 Jul 2024 15:59:45 -0400, Sean Devlin <spd <at> toadstyle.org> said:
>     >> 
>     >> The emacs info file says
>     >> 
>     >> ‘--init-directory’
>     >> Specify the directory to use when looking for the Emacs init files.
>     >> 
>     >> and '.emacs' is an Emacs init file, so I guess the confusion is
>     >> understandable. Maybe we should add "(except '.emacs')" to that
>     >> statement.
> 
>     Eli> That would be inaccurate, AFAIU.  If the .emacs file is there, it will
>     Eli> be used from that directory.
> 
> Thatʼs not what I observe:
> 
> ~/.emacs:
> 
>         (message "Home dir")
> 
> /tmp/emacs-30/.emacs:
> 
>         (message "Temp dir")
> 
> src/emacs --init-directory=/tmp/emacs-30
> 
> => *Messages* contains "Home dir"
> 
> So it looks like this option only affects `user-emacs-directory'.

Sean said that an existing init file was being used from that
directory.  This contradicts your observations.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#72294; Package emacs. (Fri, 26 Jul 2024 12:16:02 GMT) Full text and rfc822 format available.

Message #31 received at 72294 <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: spd <at> toadstyle.org, 72294 <at> debbugs.gnu.org
Subject: Re: bug#72294: 29.2; Emacs --init-directory=... puts user-init-file
 elsewhere
Date: Fri, 26 Jul 2024 14:14:27 +0200
>>>>> On Fri, 26 Jul 2024 15:03:41 +0300, Eli Zaretskii <eliz <at> gnu.org> said:

    >> ~/.emacs:
    >> 
    >> (message "Home dir")
    >> 
    >> /tmp/emacs-30/.emacs:
    >> 
    >> (message "Temp dir")
    >> 
    >> src/emacs --init-directory=/tmp/emacs-30
    >> 
    >> => *Messages* contains "Home dir"
    >> 
    >> So it looks like this option only affects `user-emacs-directory'.

    Eli> Sean said that an existing init file was being used from that
    Eli> directory.  This contradicts your observations.

An existing "init.el" file, if "~/.emacs" does not exist. Not a
".emacs" file in the directory specified by
'--init-directory'. Because --init-directory changes
`user-emacs-directory'.

Robert
-- 




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#72294; Package emacs. (Fri, 26 Jul 2024 13:50:01 GMT) Full text and rfc822 format available.

Message #34 received at 72294 <at> debbugs.gnu.org (full text, mbox):

From: Sean Devlin <spd <at> toadstyle.org>
To: Robert Pluim <rpluim <at> gmail.com>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 72294 <at> debbugs.gnu.org
Subject: Re: bug#72294: 29.2; Emacs --init-directory=... puts user-init-file
 elsewhere
Date: Fri, 26 Jul 2024 09:48:11 -0400
> On Jul 26, 2024, at 8:14 AM, Robert Pluim <rpluim <at> gmail.com> wrote:
> 
>>>>>> On Fri, 26 Jul 2024 15:03:41 +0300, Eli Zaretskii <eliz <at> gnu.org> said:
> 
>>> ~/.emacs:
>>> 
>>> (message "Home dir")
>>> 
>>> /tmp/emacs-30/.emacs:
>>> 
>>> (message "Temp dir")
>>> 
>>> src/emacs --init-directory=/tmp/emacs-30
>>> 
>>> => *Messages* contains "Home dir"
>>> 
>>> So it looks like this option only affects `user-emacs-directory'.
> 
>    Eli> Sean said that an existing init file was being used from that
>    Eli> directory.  This contradicts your observations.
> 
> An existing "init.el" file, if "~/.emacs" does not exist. Not a
> ".emacs" file in the directory specified by
> '--init-directory'. Because --init-directory changes
> `user-emacs-directory’.

Correct, I only tested with a file named init.el, not .emacs.






Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#72294; Package emacs. (Fri, 26 Jul 2024 13:51:01 GMT) Full text and rfc822 format available.

Message #37 received at 72294-done <at> debbugs.gnu.org (full text, mbox):

From: Sean Devlin <spd <at> toadstyle.org>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 72294-done <at> debbugs.gnu.org
Subject: Re: bug#72294: 29.2; Emacs --init-directory=... puts user-init-file
 elsewhere
Date: Fri, 26 Jul 2024 09:49:03 -0400
> On Jul 26, 2024, at 2:16 AM, Eli Zaretskii <eliz <at> gnu.org> wrote:
> 
> ...
> 
> Thanks, I used this to improve the documentation of --init-directory
> on the emacs-30 branch and make it more accurate, and I'm therefore
> closing this bug.

Thanks!



Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#72294; Package emacs. (Fri, 26 Jul 2024 13:53:02 GMT) Full text and rfc822 format available.

Message #40 received at 72294 <at> debbugs.gnu.org (full text, mbox):

From: Robert Pluim <rpluim <at> gmail.com>
To: Sean Devlin <spd <at> toadstyle.org>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 72294 <at> debbugs.gnu.org
Subject: Re: bug#72294: 29.2; Emacs --init-directory=... puts user-init-file
 elsewhere
Date: Fri, 26 Jul 2024 15:51:34 +0200
>>>>> On Fri, 26 Jul 2024 09:48:11 -0400, Sean Devlin <spd <at> toadstyle.org> said:
    >> An existing "init.el" file, if "~/.emacs" does not exist. Not a
    >> ".emacs" file in the directory specified by
    >> '--init-directory'. Because --init-directory changes
    >> `user-emacs-directory’.

    Sean> Correct, I only tested with a file named init.el, not .emacs.

Perhaps we should have a '--be-more-modern' flag that disables
searching for ".emacs" completely 😺 (I kid, I kid).

Robert
-- 




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 24 Aug 2024 11:24:13 GMT) Full text and rfc822 format available.

This bug report was last modified 176 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.