Emacs和ispell:加载german8时出错

时间:2013-03-11 19:17:10

标签: emacs elisp

当我在文本模式下使用flyspell-mode时尝试加载“german8”拼写字典时收到此错误消息:

Error in post-command-hook (flyspell-post-command-hook): (error "Error: The file "/usr/lib/aspell/deutsch\" can not be opened for reading.")

我已经检查过,没有/ usr / lib / aspell / deutsch。 Ubuntu synaptic包管理器为我提供了“aspell-de”,并没有明确它。

这是我的.emacs中的代码,它引发了麻烦:

;;switch dictionaries between German and English with F8 key
(defun fd-switch-dictionary()
      (interactive)
      (let* ((dic ispell-current-dictionary)
         (change (if (string= dic "deutsch8") "english" "deutsch8")))
        (ispell-change-dictionary change)
        (message "Dictionary switched from %s to %s" dic change)
        ))

(global-set-key (kbd "<f8>")   'fd-switch-dictionary)

我可以通过简单地启动flyspell-mode然后尝试执行ispell-change-dictionary来重复同样的错误。提供了german8,但消息再次出现:

 Error enabling Flyspell mode:
(Error: The file "/usr/lib/aspell/german" can not be opened for reading.)

4 个答案:

答案 0 :(得分:6)

我遇到了完全相同的问题,但我找到了一个非常简单的解决方法。我假设

  • 您的Emacs拼写检查设置为aspell,即(setq-default ispell-program-name "aspell")

  • 安装了相应的aspell字典,例如apt-get install aspell-de

由于某些原因,字典列表中似乎存在一个错误,即“看到”,即执行ispell-change-dictionary时可用的字典列表。选择“deutsch”时,它会尝试加载"/usr/lib/aspell/deutsch\"。但是,似乎aspell字典名称已更改,因为aspell-de现在包含名为de_DE*的字典。我想@Daniel Ralston的回答是为了解决这个问题,但这对我不起作用。我还尝试将实际的字典名称传递给ispell-change-dictionary,但不知怎的,它坚持从自己的列表中获取字典,我从不能说服我的字典确实是正确的。

虽然是一个简单的符号链接修复,但对我有用的是什么。起初我不确定我应该用什么符号链接,因为错误看起来像是试图从名为“deutsch”的目录加载字典。但事实证明它实际上正在寻找一个典型的aspell .alias文件。所以通过使用这个符号链接

sudo ln -s /usr/lib/aspell/de_DE.alias /usr/lib/aspell/deutsch.alias

我现在可以在ispell-change-dictionary中选择“deutsch”。

答案 1 :(得分:1)

最近,一些旧的和经常使用的字典别名似乎已从德语aspell包中删除。这使得emacs的德语字典定义过时了。尝试将其添加到.emacs

(eval-after-load "ispell"
  '(add-to-list 'ispell-dictionary-alist
                '("deutsch8"
                   "[a-zA-ZäöüßÄÖÜ]" "[^a-zA-ZäöüßÄÖÜ]" "[']" t
                  ("-C" "-d" "de_DE-neu.multi")
                  "~latin1" iso-8859-1)))

答案 2 :(得分:1)

我在Arch Linux上遇到了同样的问题:安装了aspell-ru字典,但是当我在emacs中ispell-change-dictionary russianrussian是字典的建议名称)时,它与

一起返回
Error: The file \"/usr/lib/aspell-0.60/russian\" can not be opened for reading.

所以我做了pacman -Ql aspell-ru,结果是ru是字典的名称,而不是russian。所以,ispell-change-dictionary ru工作正常。

检查字典文件的实际名称。

答案 3 :(得分:0)

相同的问题在基本操作系统相同的解决方案安装包aspell-es和aspell-eu-es:

sudo apt-get install aspell-es aspell-eu-es

一切正常。