END ;; DELIMITER ; </code></pre> Where can I find my .emacs file for Emacs running on Windows?

There's further information at HOME and Startup Directories on MS-Windows.

92987 次浏览

I tried looking for the .emacs file for my Windows installation for Emacs, but I could not find it. Does it have the same filename under Windows as in Unix?

Copy and pasted from the Emacs FAQ, http://www.gnu.org/software/emacs/windows/:

Do I have to create it myself? If so, under what specific directory does it go?

Where do I put my init file?

file.html#Location-of-init-file" rel="noreferrer">Where do I put my init file?

On Windows, the .emacs file may be called _emacs for backward compatibility with DOS and FAT filesystems where filenames could not start with a dot. Some users prefer to continue using such a name, because Windows Explorer cannot create a file with a name starting with a dot, even though the filesystem and most other programs can handle it. In Emacs 22 and later, the init file may also be called .emacs.d/init.el. Many of the other files that are created by Lisp packages are now stored in the .emacs.d directory too, so this keeps all your Emacs related files in one place.

On Windows, the .emacs file may be called _emacs for backward compatibility with DOS and FAT filesystems where filenames could not start with a dot. Some users prefer to continue using such a name, because Windows Explorer cannot create a file with a name starting with a dot, even though the filesystem and most other programs can handle it. In Emacs 22 and later, the init file may also be called .emacs.d/init.el. Many of the other files that are created by Lisp packages are now stored in the .emacs.d directory too, so this keeps all your Emacs related files in one place.

All the files mentioned above should go in your HOME directory. The HOME directory is determined by following the steps below:

    All the files mentioned above should go in your HOME directory. The HOME directory is determined by following the steps below:

    1. If the environment variable HOME is set, use the directory it indicates.
    2. If the environment variable HOME is set, use the directory it indicates.
    3. If the registry entry HKCU\SOFTWARE\GNU\Emacs\HOME is set, use the directory it indicates.
    4. If the registry entry HKLM\SOFTWARE\GNU\Emacs\HOME is set, use the directory it indicates. Not recommended, as it results in users sharing the same HOME directory.
    5. If C:\.emacs exists, then use C:/. This is for backward compatibility, as previous versions defaulted to C:/ if HOME was not set.
    6. If the registry entry HKCU\SOFTWARE\GNU\Emacs\HOME is set, use the directory it indicates.
    7. Use the user's AppData directory, usually a directory called Application Data under the user's profile directory, the location of which varies according to Windows version and whether the computer is part of a domain.

    Within Emacs, ~ at the beginning of a file name is expanded to your HOME directory, so you can always find your .emacs file with C-x C-f ~/.emacs.

  1. If the registry entry HKLM\SOFTWARE\GNU\Emacs\HOME is set, use the directory it indicates. Not recommended, as it results in users sharing the same HOME directory.
  2. If C:\.emacs exists, then use C:/. This is for backward compatibility, as previous versions defaulted to C:/ if HOME was not set.
  3. Use the user's AppData directory, usually a directory called Application Data under the user's profile directory, the location of which varies according to Windows version and whether the computer is part of a domain.

Within Emacs, ~ at the beginning of a file name is expanded to your HOME directory, so you can always find your .emacs file with C-x C-f ~/.emacs.

There's further information at HOME and Startup Directories on MS-Windows.

On my Vista box it's in C:\Users\<USER>\AppData\Roaming\

On Windows XP it's:

C:\Documents and Settings\yourusernamehere\Application Data\

Open the file like this in Emacs for Windows:

C-x C-f ~/.emacs
the Emacs Wiki

The file itself might not exist. In that case just create it.

As kanja answered, the path to this file is stored in the user-init-file variable (or if no init file exists, the variable contains the default value for where to create it).

p>M-: (find-file user-init-file) RET

Or display its full path in the echo area with:

So regardless of which of the possible init file names you are using, and which directory it is in, you should be able to visit your init file with:

M-: (expand-file-name user-init-file) RET

M-: (find-file user-init-file) RET

It should be stored in the variable user-init-file. Use C-H v user-init-file RET to check. You can also open it directly by using M-x eval-expression RET (find-file user-init-file) RET

I've found that Emacs 22 will occasionally open either "C:\Documents and Settings\username\Application Data\.emacs", or just "C:\Documents and Settings\username\.emacs" on my XP machine. I haven't found an explanation for why it occasionally changes it's mind.

Or display its full path in the echo area with:

~ will always point to whatever the current instance of emacs thinks is HOME, but kanja's tip (C-h v user-init-file) will always tell you what ~/.emacs actually maps to.

and you can read the file path in the minibuffer at the bottom of the Emacs screen

On Emacs 23 and Windows 7 it only works if you set:

HKCU\SOFTWARE\GNU\Emacs\HOME

M-: (expand-file-name user-init-file) RET

it file (see the accepted answer of this question)

There is a list of directories based on your Windows version and extra information: http://www.gnu.org/software/emacs/manual/html_node/emacs/Windows-HOME.html

You must create an emacs initialization file. One is not automatically created. and you can read the file path in the minibuffer at the bottom of the Emacs screen I had a similar issue and this answer tracks down what I did.

e> file to the %USERPROFILE%\AppData\Roaming\.emacs.d\init.el and this worked. The file was now being read. But I got other errors because my initialization file loaded other (personal emacs) files (in ~/myenv/emacs/*.el.

Warning (initialization): An error occurred while loading ‘c:/Users/pats/AppData/Roaming/.emacs.d/init.el’:

My issue was my ~/.emacs.el file was not loading. Strange because this has always worked for me.

This question/answer helped me but I had to put my init file in the %USERPROFILE%\AppData\Roaming\.emacs.d\init.el because this is apparently the default behavior on Windows.

Hum... Seems like all my files ~/myenv/emacs/*.el would need to be moved in order for this to work but I didn't want to do that. Then I realized that because the HOME environment variable was not set, emacs was performing its default behavior.

To troubleshoot this, I ran the following in the emacs *scratch* buffer.

user-emacs-directory
"~/.emacs.d/"

SOLUTION

When I saw user-emacs-directory was ~/.emacs.d, I simply moved my .emacs.el file to %USERPROFILE%\.emacs.d\init.el. But this still didn't work.

Once I set my windows HOME environment variable to %USERPROFILE% everything began to work like it has for the past 25 years. :-)

I continued with expand-file-name as shown below:

(expand-file-name user-emacs-directory)
"c:/Users/pats/AppData/Roaming/.emacs.d/"

Got to love how Windows works. (not) So I moved my emacs.el file to the %USERPROFILE%\AppData\Roaming\.emacs.d\init.el and this worked. The file was now being read. But I got other errors because my initialization file loaded other (personal emacs) files (in ~/myenv/emacs/*.el.

Warning (initialization): An error occurred while loading ‘c:/Users/pats/AppData/Roaming/.emacs.d/init.el’:

To set the HOME environment variable, I typed WindowsKey+"edit environment variables for your account" to open the Environment Variables dialog box, and entered HOME=%USERPROFILE%.

Hum... Seems like all my files ~/myenv/emacs/*.el would need to be moved in order for this to work but I didn't want to do that. Then I realized that because the HOME environment variable was not set, emacs was performing its default behavior.

Now my emacs initialization file .emacs.el is is back to its rightful place $HOME/.emacs.el and not in %USERPROFILE%\AppData\Roaming\.emacs.d\init.el

SOLUTION

To be fair, if Windows had just one place to put files for user installed packages the solution of making HOME=%USERPROFILE\AppData\Roaming might be acceptable, but because some applications use %USERPROFILE%, some use %USERPROFILE\AppData\Roaming and others use %USERPROFILE\AppData\Local it just makes it difficult to know where to find your configuration files.

Once I set my windows HOME environment variable to %USERPROFILE% everything began to work like it has for the past 25 years. :-)

I prefer having everything in my %USERPROFILE% or $HOME directory.

Another similar question was here:

To set the HOME environment variable, I typed WindowsKey+"edit environment variables for your account" to open the Environment Variables dialog box, and entered HOME=%USERPROFILE%.

In Windows 7 put your init.el file in C:\Users\user-name\AppData\Roaming\.emacs.d\, where user-name is your user/login folder.

Now my emacs initialization file .emacs.el is is back to its rightful place $HOME/.emacs.el and not in %USERPROFILE%\AppData\Roaming\.emacs.d\init.el

To be fair, if Windows had just one place to put files for user installed packages the solution of making HOME=%USERPROFILE\AppData\Roaming might be acceptable, but because some applications use %USERPROFILE%, some use %USERPROFILE\AppData\Roaming and others use %USERPROFILE\AppData\Local it just makes it difficult to know where to find your configuration files.

Take care so your init.el file won't be named init.el.txt. This is something Windows does if you create your file with some editor like Notepad.

For WIndows7& Emacs26.3:


if HOME environment is set, then the .emacs file should be in that folder.

otherwise, it should be in c:\.


In both cases, if .emacs is not there, _emacs should be used.

On Windows 8.1, if Emacs is started from Windows Explorer, a shortcut or from cmd console it uses C:\Users\<USER>\AppData\Roaming.emacs init file. When I start Emacs from PowerShell, Emacs looks for its init file in C:\Users\<USER> folder. The fix to this issue was to set the HOME user environment variable (Control Panel\System and Security\System->Advanced system settings->Advanced->Environment variables) to C:\Users\<USER>. After this change, no matter how I start Emacs, it uses the same init file (see the accepted answer of this question)

To be fair, if Windows had just one place to put files for user installed packages the solution of making HOME=%USERPROFILE\AppData\Roaming might be acceptable, but because some applications use %USERPROFILE%, some use %USERPROFILE\AppData\Roaming and others use %USERPROFILE\AppData\Local it just makes it difficult to know where to find your configuration files.

I prefer having everything in my %USERPROFILE% or $HOME directory.

Another similar question was here:

This is because we cannot create .emacs file according to the windows file naming rules.(but we can download or copy it from somewhere else).

In any case you can use the following emacs variables to find out the location of the your initialization file by M-x eval-expression

user-init-file

or the emacs configuration directory

user-emacs-directory