新装了emacs,自动生成.emacs
文件,我自己创建了init.el
文件
。emacs默认是从.emacs
中加载配置文件的,然而我想让她从init.el
文件中加载(不想删除.emacs
文件,别问我为什么,舍不得)
于是我做了一下尝试:
1.在.emacs
文件中加入
(load-file "C:/Users/Administrator/AppData/Roaming/.emacs.d/init.el")
然后emacs报错
Warning (initialization): An error occurred while loading ‘c:/Users/Administrator/AppData/Roaming/.emacs’:
Symbol's value as variable is void: /C:UsersAdministrator
To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file. Start Emacs with
the ‘--debug-init’ option to view a complete error backtrace.
然后我又尝试了第二种方法
(setq load-path (cons (expand-file-name "C:/Users/Administrator/AppData/Roaming/.emacs.d/init.el")load-path))
报错是不会报错,但是加载的还是·.emacs
中的代码
那么问题来了:
1.第一二句话都是设置load-path
的,为什么不行呢(虽说第二句话是网上copy的,但是我也明白是什么意思)
2.这两句话不行,那么是否有办法能够完成我上面的要求呢(除了删除.emacs
文件)
初学emacs,没有vim经验,略懂elisp,如果什么错误,还望海涵
load-path
是一个变量,不能当作函数来用:
(load-path "/path/to/file.el") ;; ✗
load-path
跟环境变量 PATH 一样,你不能把一个文件路径添加到其中:
(add-to-list 'load-path "/dir/file.el") ;; ✗
(add-to-list 'load-path "/dir") ;; ✔
你的问题只需:
(load "/path/to/file.el") ;; ✔
用的 load-file
没错,你应该根据提示,修复你的 Emacs 配置中的问题。
诶?第一行代码竟然不是 load-path
,可是接下来是怎么回事:
emacsjimmy:
第一二句话都是设置load-path的……
看来我已经掌握了非常的中文阅读能力😂
1 个赞
明白您讲的了,可是还是不行,还是报上面的那个误错
Warning (initialization): An error occurred while loading ‘c:/Users/Administrator/AppData/Roaming/.emacs’:
Symbol's value as variable is void: /C:UsersAdministrator
To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file. Start Emacs with
the ‘--debug-init’ option to view a complete error backtrace.
/C:UsersAdministrator
被转义了?
我是看的子龙山人大佬的视频做的,刚看第一节,并没有太多的配置,所以应该不是配置问题
我打的代码是
(load "C:/Users/Administrator/AppData/Roaming/.emacs.d/init.el")
应该没有被转译
你没有搞清楚问题出在哪里,你加载 init.el 的第一个方法是对的,你应该看 Emacs 给出的提示,Emacs 在提示你你的配置1 有问题,它不会骗你。
配置出问题的情况很容易出现,比如一个 Typo。
假如你可以从命令行启动 Emacs 的话,加上 --debug-init
会给出一个 Backtrace,从中就能找出出错的具体位置。否则的话,在你的配置中搜索所有出现 /C:UsersAdministrator
的地方,看看有没有问题。
1 注意如果你在 .emacs
加载的其它文件(如 init.el
)出了错的话,Emacs 依旧会提示你 .emacs
出了问题,这样你应该修改的是真正出问题的文件(如 init.el
)。
用 load-file
和相对路径应该也行,在 .emacs
中写:
(load-file ".emacs.d/init.el")
嗯,我明白了,您说的对,我init.el
是有问题,我检查出来了
但是现在又报错
error: Non-hex digit used for Unicode escape
我没有设置过编码,为什么会有这个问题呢,网上找的帖子没有看懂。。。一大堆命令符,或许是我英文太差了。
还有,您说得是从命令行启动是什么意思呢,我用的是windows系统,您说的是从cmd启动吗,我试了一下发现提示我不是命令
第一次出问题,没有经验,还望谅解
我使用命令出现了如下东西
Debugger entered--Lisp error: (error "Non-hex digit used for Unicode escape")
read(#<buffer *load*-870944>)
eval-buffer(#<buffer *load*-870944> nil "c:/Users/Administrator/AppData/Roaming/.emacs.d/init.el" nil t) ; Reading at buffer position 331
load-with-code-conversion("c:/Users/Administrator/AppData/Roaming/.emacs.d/init.el" "c:/Users/Administrator/AppData/Roaming/.emacs.d/init.el" nil nil)
load("C:/Users/Administrator/AppData/Roaming/.emacs.d/init.el" nil nil t)
load-file("C:/Users/Administrator/AppData/Roaming/.emacs.d/init.el")
eval-buffer(#<buffer *load*> nil "c:/Users/Administrator/AppData/Roaming/.emacs" nil t) ; Reading at buffer position 890
load-with-code-conversion("c:/Users/Administrator/AppData/Roaming/.emacs" "c:/Users/Administrator/AppData/Roaming/.emacs" t t)
load("~/.emacs" t t)
#[0 "^H\205\266^@ \306=\203^Q^@\307^H\310Q\202?^@ \311=\204^^^@\307^H\312Q\202?^@\313\307\314\315#\203*^@\316\202?^@\313\307\314\317#\203>^@\320\321\322!D\nB^R\3$
command-line()
normal-top-level()
是什么意思呢,为什么全是路径,还有Reading at buffer position
是什么意思呢
貌似是被转义了,第一次出现问题,没有想到错误有可能在init.el
中
那个问题现已解决,谢谢
也看不明白,或许跟编码有关系?
emacsjimmy:
为什么全是路径
路径是 load
或 load-file
函数的参数,也有很多 t
, nil
,它们也是参数。
估计是出问题的位置 (point)
,猜测你在 .emacs
的第 890 个字符处用了 (load-file "..../init.el")
,在 init.el
的第 331 位置用了一个 Emacs 看不明白的字符。使用 M-: (goto-char 890)
可移动到 890 处。
嗯,我明白了,返回的是890 (#o1572, #x37a)
然后debug中定位的是有背景色的’0‘上
\306=\203^Q^@\307^H\310Q\202?^@ \311=\204^^^@\30
7^H\312Q\202?^@\313\307\314\315#\203*^@\316\202$
然后我又输入M-:(goto-char 331)
,它返回331 (#o513, #x14b)
,并定位在了有背景色的’i’上
load-with-code-conversion(“c:/Users/Administrator/AppData/Roaming/.emacs.d/i
nit.el” "c:/Users/Administrator/AppData/R$
这是什么意思呢
题外话,这里不支持html吗,表示我使用没有效果
配置出问题的情况估计每个 Emacs 用户都遇到过,为此向别人寻求帮助效果不好,因为别人又看不到你的配置,就算你贴了出来,它很可能比较长,别人也不情愿去看、乃至运行。
你应该尽可能自己把出错的地方找出来,然后尝试解决,如果要想别人提问,自己先把问题搞明白,目的是让别人能明白、重现你的问题。
emacsjimmy:
题外话,这里不支持html吗,表示我使用没有效果
支持一部分,具体不了解,可以自己试试或在网上搜索 “Discourse HTML”,看看有没有说明。
<h1>h1</h1>
<s>一比二大</s>
h1
一比二大