启用Flyspell-mode会出现错误

6
我最近重新安装了我的Windows笔记本电脑,现在Emacs给我一个奇怪的错误消息:"Starting new Ispell process [default] Enabling flyspell mode gave an error"。我已经安装了aspell,并且可以通过Emacs访问它。我附上了一张图片来展示这一点。我还在我的Emacs配置中添加了(setq-default ispell-program-name "aspell")。这个相同的配置在我的其他Windows机器上运行正常。可能是什么问题呢?图片:Emacs-shell中的Aspell http://img145.imageshack.us/img145/4497/emacsaspell.jpg

4
如果可能的话,请考虑添加文本形式的输出或错误信息,而不是图像附件,这样阅读起来会更容易。请注意不要改变原意,只需使内容更通俗易懂。 - paprika
3
你检查过aspell在Emacs之外的使用情况了吗?比如像cat foobar.txt |aspell -a -l en这样的命令? - paprika
您可能还想添加来自“消息”缓冲区的任何输出。 - Timo Geusch
@paprika 谢谢,我在发布问题之前应该先检查一下。结果发现aspell-en竟然没有安装。 - vedang
缺少字典或emacs无法找到字典似乎是aspell/ispell最常见的问题。 - Charles Stewart
4个回答

11

您可以添加以下行:

(setq flyspell-issue-welcome-flag nil) ;; fix flyspell problem

将以下内容添加到您的个人emacs初始化文件(~/.emacs.d/init.el, ~/.emacs, ~/.emacs.el,或其他任何文件…),这样应该可以解决您的问题。


6

编辑:显然,这不是最好的解决方案:请参阅下面的评论并查看Dennis的答案以获得更好的替代方案。

编辑2:如下面的评论所示,删除本文推荐的文件会在升级时出现问题。如果您按照本文的建议并且现在后悔了(抱歉),那么要重新安装被删除的文件,您需要键入:

sudo apt-get --reinstall dictionaries-common

现在您应该可以升级并遵循Dennis的解决方案了。

Google首先将我带到这里,所以我想我会添加另一个常见原因,导致出现此错误消息(至少在Ubuntu系统上)

我的Ubuntu 10.10新安装存在以下错误:

https://bugs.launchpad.net/ubuntu/+source/dictionaries-common/+bug/619015

通过删除以下文件(如链接中所示)来修复此问题:

  • /usr/share/emacs/site-lisp/dictionaries-common/debian-ispell.el
  • /usr/share/emacs/site-lisp/dictionaries-common/flyspell.el
  • /usr/share/emacs/site-lisp/dictionaries-common/ispell.el

以及/usr/share/emacs23/site-lisp/dictionaries-common目录下的所有.el .elc文件

原因似乎是上述文件已经安装在emacs23-common中,而.el和.elc文件在实时系统上仍保留着冲突(根据阅读错误报告得知)。

我认为可能存在其他问题导致此错误消息,但这对我有用。我认为Ubuntu足够常见,应作为另一种答案提到。

编辑: Dennis Sheil的回答似乎有一个更少侵入性的解决方案。

祝福您,

汤姆


1
我会使用Dennis的解决方案,但删除这三个文件会导致在尝试升级emacs时出现以下错误:Error occurred processing debian-ispell.el: File error (("Opening input file" "no such file or directory" "/usr/share/emacs23/site-lisp/dictionaries-common/debian-ispell.el")). 请参见http://askubuntu.com/questions/15877/force-apt-to-remove-all-emacs。 - Andreas Jansson
@Andreas,感谢提供的信息。我还没有尝试更新emacs - 已经修改了我的答案以突出你一开始的警告。 - Tom

3

撰写答复以将此标记为已接受:

paprika的评论帮助我跟踪问题 -“您是否检查过aspell在Emacs之外的工作情况,例如cat foobar.txt |aspell -a -l en?”

结果发现aspell-en尚未安装。是我的疏忽。


0
当我升级到emacs24时,我也遇到了这个问题。我的aspell工作得很好。我尝试了这里的一些技巧,包括使用dictinaries-common和将flyspell-issue-welcome-flag设置为nil,但运行emacs24时仍然停在了ispell上。
最终,我清除了之前安装的emacs23(确保卸载时删除了其中所有的.el/.elc文件),确保后台没有任何emacs进程,并移除了我收集的~/.emacs.d目录中的垃圾(注意保存仍需使用的代码)。
然后,我重新安装了emacs24(版本号为24.1.50.1),运行它时,flyspell完美地工作了。

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