Emacs启动时无法加载初始化文件

3

我将尝试在Windows 7电脑上运行Emacs v22.2,但是启动时init文件未能被加载(使用M-x load-file手动加载可以正常工作)。

我已经尝试了以下两种方法:

~\.emacs, ~\_emacs 
~\.emacs.d.init.el 

但问题仍然存在。
评估(insert (getenv "HOME"))返回预期的值。

你的 Messages 缓冲区里有什么吗?使用 C-x b 切换到该缓冲区。 - Starkey
1
你尝试过~/.emacs.d/init.el文件了吗? - Luke Girvin
иҝҷжҳҜеҗҜеҠЁеҗҺжҲ‘зҡ„ _messages buffer_пјҡ("C:\\home\\bin\\emacs\\bin\\emacs.exe") Loading encoded-kb...done load-with-code-conversion: Symbol's value as variable is void: setenv~/.emacs.d/init.el д№ҹдёҚиө·дҪңз”ЁгҖӮ - Aerion
22.2 真的很老了。您可能希望升级到 23.3 或最新的 24 预测试版本(http://alpha.gnu.org/gnu/emacs/windows/)。 - phils
4个回答

7
根据在Windows 7中打开emacs的方式,它将在不同的位置查找 .emacs 文件。如果从shell(如cygwin、Msys等)中调用它,则会在 $HOME(~)位置查找该文件;如果通过点击图标从安装目录运行它,则会在 %APPDATA%(通常为C:\Users\你的用户名\AppData\Roaming)位置查找该文件。这可能会让你到处找寻文件。我发现最好确定您想要存储该文件的位置,并创建符号链接(使用Windows mklink实用程序)到所有其他可能的位置。

3

我曾经遇到过类似的问题(在Windows 10上)。问题出在Emacs启动时读取了~\.emacs而不是~\.emacs.d\init.el。将~\.emacs的内容移到~\.emacs.d\init.el中并删除~\.emacs即可解决该问题。


2

我刚刚在Windows 7上安装了修补过的Emacs版本,指定了环境变量HOME=c:\klang,从github检出了十年前的配置文件,并添加了

(and (= emacs-major-version 23) 
  (defun server-ensure-safe-dir (dir) "Noop" t))

打开~/.emacs.d/init.el文件即可使用。

你缺少的是一些mule.el组件,只需安装新版本的emacs即可解决问题。

如果在一般环境中没有设置HOME(getenv "APPDATA")可能会接管并尝试在该目录下读取您的初始化文件。


0

我刚刚成功解决了相同的问题(lcollado和klang的答案给了我一个小提示来解决它)。

我在C:\ Users \ Edwin \ .emacs.d \ init.el设置了一个配置文件,当我尝试让Emacs加载它时,它没有加载。我的最初想法是在C:\ Users \ Edwin \ AppData \ Roaming \ .emacs.d \ init.el创建一个init.el文件,它将加载我原始的配置文件。 然而,我想要一个更简单的解决方案。

然后我记得符号链接存在。所以我搜索了一些如何在Windows中创建符号链接以及硬链接软链接之间的区别。

我第一次尝试创建指向我的init.el的软链接。但是Emacs忽略该链接并在没有init.el的情况下启动。

下一个尝试成功的是一个硬链接。我所做的步骤如下:

  1. 以管理员权限打开命令提示符。
    a. 按下 Windows + R
    b. 输入 "cmd.exe" 并按下 Shift + Enter
    c. 当 Windows 请求管理员权限时,点击 "是"。

  2. 进入您的主目录。
    a. 输入 cd C:\Users\<your name>

  3. 运行以下命令在 C:\Users\<your name>\AppData\Roaming\.emacs.d\init.el 中创建一个硬链接:

    :: mklink /h Destination Source
    :: Destination - 您想要硬链接的位置和名称是什么?
    :: Source      - 您想要链接的文件是什么?
    mklink /h AppData\Roaming\.emacs.d\init.el .emacs.d\init.el
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接