我在Windows 7 Professional 64位上使用了一个非常旧的Emacs版本,所以我升级到了Emacs 25.3.1 64位。安装进行得很顺利。
当我运行Emacs时,我开始读取初始缓冲区中的消息,然后我听到"ding"的声音,并显示消息"<noname>is undefined"。
我开始在缓冲区中输入,在第一声"丁"声大约10秒后,又出现了另一声,消息"<noname>is undefined"再次显示。
如果我试图在缓冲区中输入文本或输入命令,我会被"ding"one_answers"<noname>is undefined"消息打断。这使得Emacs变得毫无用处。
考虑到我的Emacs初始化文件中可能有一些内容不再有效,我关闭了Emacs,并重命名了Emacs的初始化文件,然后再次启动Emacs。同样的"丁"音和同样的信息。
我不知道"noname"Emacs在抱怨什么,也不知道该怎么解决。现在快凌晨3点了(美国东部时间),所以我要睡一觉,在白天解决这个问题。
哦!还有一件事——我通过远程桌面访问Windows 7 Professional 64位盒子,因为计算机处于另一种状态。
知道发生了什么事吗?
更多信息:我在安装了新版本的Emacs后重新启动。当电脑重新启动时,它会自动启动DishAnywhere播放器。
通常情况下,我会在发布后不久杀死DishAnywhere播放器,但昨晚我没有,所以当我发布Emacs时,DishAnywhere正在运行。
今天我做了一些实验,发现:
--如果DishAnywhere正在运行,并且我启动Emacs,Emacs将"Ding"并每10秒显示一次"<noname>is undefined"消息。
--如果我退出Emacs并关闭DishAnywhere,然后启动Emacs,Emacs就会正确运行——没有"Ding"或错误消息。
--如果我在Emacs开始运行后启动DishAnywhere,则不会出现"丁"或错误消息。
--如果我退出Emacs,等待几分钟,然后再次启动Emacs(当DishAnywhere正在运行时),Emacs就会正确运行——没有"Ding"或错误消息。
所以。。。
如果DishAnywhere在Emacs启动之前运行,则Emacs会出现问题"Dings"并显示错误消息。
如果Emacs在DishAnywhere之前启动,并且在DishAnywhere启动时正在运行,那么Emacs将正确运行。
解决方法是:
在启动Emacs之前杀死DishAnywhere,然后启动DishAnywhere
但问题是DishAnywhere和Emacs之间的交互是什么导致了这个问题?
使用emacs -Q
启动Emacs时会发生这种情况吗?如果是这样,那么使用M-x report-emacs-bug
,提供你正在做的和你看到的食谱。
如果不是(我猜是这样),那么递归地平分init文件以找到罪魁祸首代码。可以使用命令comment-region
注释掉代码块。如果将C-u
与comment-region
一起使用,则会取消对代码块的注释。
注释1/2,然后3/4,然后7/8。。。以缩小有问题的部分。这是一个二进制搜索,所以做起来非常快,即使这意味着要多次重新启动Emacs。