I've normally used ~/.emacs
for my config file, but I've noticed others using ~/.emacs.d/init.el
. Are there advantages to the init.el
location? Any disadvantages?
Yes, there are. Quoting lunaryorn on Reddit:
It keeps the
$HOME
directory uncluttered, because all of Emacs' files are neatly contained in a single directory. For the same reason, all modern Emacs packages write their caches, histories, etc. into~/.emacs.d/
.It makes version control easier, especially if you split your init.el into different files in
~/.emacs.d
. You can just commitinit.el
like every other file, andgit clone /my/emacs/config.git ~/.emacs.d
on a new system gives you all of your Emacs configuration, without having to link a file into$HOME
.
-
3How does it make version control easier? You can split your init file without using
.emacs.d
. – Gilles♦ Sep 23 '14 at 19:01 -
3It doesn't make version control easier if you only have .emacs file, but if you have other emacs files in .emacs.d, it does. For example
custom
saves files into .emacs.d and if you keep init.el in their all of your version controlled emacs files are in one directory. – Ted Roden Sep 23 '14 at 19:38 -
4By versioning your .emacs.d/ directory completely, you can also keep under version control the packages you install via packages.el (ELPA, MELPA…). This make easier to share your configuration between multiple computers and to find where a regression was introduced in your configuration (you track your dependencies). The bad side is that it makes a pretty heavy repository. – tuxella Sep 23 '14 at 20:40
-
11Version control systems don't version just one file -- they want to version a folder. So you version
~/
, and add just your.emacs
. But now, you have to make sure you don't commit any other files, so you .hgignore or .gitignore every other file in~/
. But now you can't track any other files in~/
, like~/.bashrc
or~/.bash_aliases
. – zck Sep 23 '14 at 21:38 -
One additional advantage: if everything is in .emacs.d
, you can keep your Emacs configuration on Dropbox (or an alternative) and symlink the whole configuration to your home directory. That makes syncing across computers trivial.
If all you need to set up Emacs the way you like is an init file, it doesn't make a difference if it's ~/.emacs
or ~/.emacs.d/init.el
. But it makes sense to create a directory the moment you start splitting your init file, or adding Emacs-related configs, a Cask file for example. Also, it's the place where you'll save the file with abbrev definitions, the file for custom options (M-x customize
), etc.
Keep everything neatly tucked in ~/.emacs.d
.
Emacs 27 will introduce a new initialisation file early-init-file
under user-emacs-directory
, namely at ~/.emacs.d/early-init.el
. So a further benefit to using ~/.emacs.d/init.el
instead of ~/.emacs
for user-init-file
is that the former will place both initialisation files under the same roof, for consistency.
Until Emacs 27 is released, you can find the documentation for this new feature in the following files of the Emacs source tree:
etc/NEWS
doc/emacs/custom.texi
, node(emacs) Early Init File
Not sure if this really makes a difference in terms of speed, but you can byte-compile your setup more easily if your configuration is in .emacs.d/init.el
(i.e. create .emacs.d/init.elc
)
-
1
user-init-file
. This will be.emacs
if you already had a.emacs
, andinit.el
if you used that instead. – Radon Rosborough Mar 26 '17 at 22:53~/.emacs.d/init.el
neglecting the disadvantages. I'll answer that part: it has no disadvantages at all! – Omar Jul 27 '18 at 1:10