1

I have trouble getting spellchecking to work with Emacs 24.2.1 and Hunspell 1.3.2 on Windows XP.

I have read the help about spelling in the built in manual and searched the internet where I found advice to include these lines to my ~/.emacs.d/init.el file.

(setq ispell-dictionary-alist
   '((nil ; default
      "[a-zäöüßA-ZÄÖÜ]" "[^a-zäöüßA-ZÄÖÜ]" "[']" t
      ("-d" "C:\\Dokumente und Einstellungen\\ojones\\Eigene Dateien\\dictionaries\\de_DE_frami" "-i" "utf-8") nil utf-8)
     ("english"
      "[A-Za-z]" "[^A-Za-z]" "[']" nil
      ("-d" "en_GB") nil utf-8)
     ("german"
      "[a-zäöüßA-ZÄÖÜ]" "[^a-zäöüßA-ZÄÖÜ]" "[']" t
      ("-d" "'C:\\Dokumente und Einstellungen\\ojones\\Eigene Dateien\\dictionaries\\de_DE_frami'" "-i" "utf-8") nil utf-8)
     ("british"
      "[A-Za-z]" "[^A-Za-z]" "[']" nil
      ("-d" "en_GB") nil utf-8)))
(eval-after-load "ispell"
    (progn
      (setq ispell-dictionary "german"
        ispell-extra-args '("-a" "-i" "utf-8") ; aspell doesn't understand -i utf-8, hunspell needs it
        ispell-silently-savep t)))
(setq ispell-program-name "C:\\Dokumente und Einstellungen\\ojones\\Eigene Dateien\\hunspell-mingw-1.3.2-win32\\bin\\hunspell.exe")

where I made changes regarding the path to the affix and dictionary files and the hunspell.exe.

I verified that hunspell works, by executing it on the command line.

When I type M-x ispell in emacs I get the following error message

Can't open affix or dictionary flies for dictionary named "german".
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)

I tried changing the path to the affix and dictionary files in my init.el to just the name of the affix and dic name, i.e. "de_DE_frami" since hunspell knows where to find them, but it didn't help in emacs.

4

3 回答 3

1

我越来越接近解决方案。

因为ispell-dictionary-alistM-x ispell我改变了使用ispell-local-dictionary-alist. 这是我~/.emacs.d/init.el现在的样子:

(setq ispell-program-name "C:\\Dokumente und Einstellungen\\ojones\\Eigene Dateien\\hunspell-mingw-1.3.2-win32\\bin\\hunspell.exe")

(setq ispell-local-dictionary-alist
 '(("en_GB"
    "[[:alpha:]]"
    "[^[:alpha:]]"
    "[']" nil ("-r") nil utf-8)
   ("de_DE_frami"
    "[a-zäöüßA-ZÄÖÜ]" "[^a-zäöüßA-ZÄÖÜ]" "[']" nil
    ("-r") nil utf-8)))

当我启动 Emacs 时,我必须更改字典M-x ispell-change-dictionary,然后选择例如 de_DE_frami。

这样可行。但它仍然无法正常工作。我在检查缓冲区中的整个文本时遇到了这个错误M-x ispell

Ispell 错位:单词 'Einf\303' 点 118;可能不兼容的版本

“Einführung”这个词有问题。我猜“ü”是问题所在。检查单词M-$我收到此错误消息:

Ispell 及其进程有不同的字符映射

有什么建议么?

于 2013-01-11T16:58:14.623 回答
0

我对我的 init.el 进行了一些更改,现在无法打开词缀和字典文件的错误消息不再出现。但我得到一个新的错误。

这是我修改后的 init.el

(setq ispell-dictionary-alist
 '((nil ; default 
    "[a-zäöüßA-ZÄÖÜ]" "[^a-zäöüßA-ZÄÖÜ]" "[']" t
    ("-d" "de_DE_frami") nil utf-8)
   ("en_GB"
    "[A-Za-z]" "[^A-Za-z]" "[']" nil
    ("-d" "en_GB") nil utf-8)
   ("de_DE_frami"
    "[a-zäöüßA-ZÄÖÜ]" "[^a-zäöüßA-ZÄÖÜ]" "[']" t
    ("-d" "de_DE_frami") nil utf-8)))
(eval-after-load "ispell"
  (progn
    (setq ispell-dictionary "de_DE_frami"
          ispell-extra-args '("-a" "-i" "utf-8") ; aspell doesn't understand -i utf-8, hunspell needs it
          ispell-silently-savep t)))
(setq ispell-program-name "C:\\Dokumente und Einstellungen\\ojones\\Eigene Dateien\\hunspell-mingw-1.3.2-win32\\bin\\hunspell.exe")

我将ispell-dicationary-alist 中的词典名称更改为它们的名称,例如,我将“german”更改为“de_DE_frami”。我确保字典和词缀文件保存在 hunspell 找到它们的地方(我通过在命令行上执行 hunspell 验证了它可以工作)。

现在,当我启动 ispell by 时M-x ispell,没有错误消息,并且我看到一个 ispell 进程使用M-x list-processes

工艺:ispell

状态:运行

缓冲: -

电传打字机:--

命令:C:\Dokumente und Einstellungen...\hunspell.exe -a -d de_DE_frami -i nil -a -i utf-8

但据我所知,它不起作用。没有单词被识别为拼写错误(我包括一些用于测试目的)。当我打开flyspell时,M-x flyspell-mode出现以下错误消息:

post-command-hook (flyspell-post-command-hook) 中的错误:(错误“没有字典数据 \"de_DE_frami\",在 'ispell-local-dictionary-alist' 和 'ispell-dictionary-alist' 中都没有” ")

C-j通过在暂存缓冲区中键入“ispell-dicationary-alist”并按下该行的末尾来检查变量 ispell-dicationary-alist 是否包含我的 init-el 中指定的内容,我得到了这个意外的文本:

(("希伯来语" "[\340\341\342\343\344\345\346\347\350\351\353\352\354\356\355\360\357\361\362\364\363\ 367\366\365\370\371\372]" "[^\340\341\342\343\344\345\346\347\350\351\353\352\354\356\355\360\357 \361\362\364\363\367\366\365\370\371\372]" "" 无 ("-B") 无 cp1255) ("svenska" "[A-Za-z\345\344\ 366\351\340\374\350\346\370\347\305\304\326\311\300\334\310\306\330\307]" "[^A-Za-z\345\344\ 366\351\340\374\350\346\370\347\305\304\326\311\300\334\310\306\330\307]" "[']" 无 ("-C") " ~list" iso-8859-1) ("斯洛文尼亚语" "[A-Za-z\301\304\311\315\323\332\324\300\305\245\335\256\251\310\317 \253\322\341\344\351\355\363\372\364\340\345\265\375\276\271\350\357\273\362]" "[^A-Za-z\301\304\311\315\323\332\324\300\305\245\335\256\251\310\317\253\322\341\344\351\355\ 363\372\364\340\345\265\375\276\271\350\357\273\362]" "" 无 ("-B" "-d" "斯洛文尼亚语") 无 iso-8859-2) ("斯洛伐克语" "[A-Za-z\301\304\311\315\323\332\324\300\305\245\335\256\251\310\317\253\322\341\344\ 351\355\363\372\364\340\345\265\375\276\271\350\357\273\362]" "[^A-Za-z\301\304\311\315\323\ 332\324\300\305\245\335\256\251\310\317\253\322\341\344\351\355\363\372\364\340\345\265\375\276\271\ 350\357\273\362]" "" nil ("-B") nil iso-8859-2) ("russianw" "[\300\301\302\303\304\305\250\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\ 327\330\331\334\333\332\335\336\337\340\341\342\343\344\345\270\346\347\350\351\352\353\354\355\356\ 357\360\361\362\363\364\365\366\367\370\371\374\373\372\375\376\377]" "[^\300\301\302\303\304\305 \250\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\334\333\332\335 \336\337\340\341\342\343\344\345\270\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365 \366\367\370\371\374\373\372\375\376\377]" "" nil nil nil windows-1251) ("俄语" "[\341\342\367\347\344\345\263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\ 376\373\375\370\371\377\374\340\361\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\ 320\322\323\324\325\306\310\303\336\333\335\330\331\337\334\300\321]" "[^\341\342\367\347\344\345 \263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\374 \340\361\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310 \303\336\333\335\330\331\337\334\300\321]" "" nil nil nil koi8-r) ("葡萄牙" "[a-zA-Z\301\302\307\311 \323\340\341\342\351\352\355\363\343\347\372]" "[^a-zA-Z\301\302\307\311\323\340\341\342\351 \352\355\363\343\347\372]" "[']" t ("-C") "~latin1" iso-8859-1) ("波兰语" "[A-Za-z\241\243\246\254\257\261\263\266\274\277\306\312\321\323\346\352\361\363]" "[^ A-Za-z\241\243\246\254\257\261\263\266\274\277\306\312\321\323\346\352\361\363]" "[.]" 无 无无 iso-8859-2) ("norsk7-tex" "[A-Za-z{}\'^]" "[^A-Za-z{}\\'^]" "[\"]" nil ("-d" "norsk") "~plaintex" iso-8859-1) ("norsk" "[A-Za-z\305\306\307\310\311\ 322\324\330\345\346\347\350\351\362\364\370]" "[^A-Za-z\305\306\307\310\311\322\324\330\345\ 346\347\350\351\362\364\370]" "[\"]" nil nil "~list" iso-8859-1) ("nederlands8" "[A-Za-z\300\301\302 \303\304\305\307\310\311\312\313\314\315\316\317\322\323\324\325\326\331\332\333\334\340\341\342\343 \344\345\347\350\351\352\353\354\355\356\357\361\362\363\364\365\366\371\372\373\374]""[^A-Za -z\300\301\302\303\304\305\307\310\311\312\313\314\315\316\317\322\323\324\325\326\331\332\333\334 \340\341\342\343\344\345\347\350\351\352\353\354\355\356\357\361\362\363\364\365\366\371\372\373\374 ]" "[']" t ("-C") nil iso-8859-1) ("荷兰" "[A-Za-z\300\301\302\303\304\305\307\310\311\312\313\314\315\316\317\ 322\323\324\325\326\331\332\333\334\340\341\342\343\344\345\347\350\351\352\353\354\355\356\357\361\ 362\363\364\365\366\371\372\373\374]" "[^A-Za-z\300\301\302\303\304\305\307\310\311\312\313\ 314\315\316\317\322\323\324\325\326\331\332\333\334\340\341\342\343\344\345\347\350\351\352\353\354\ 355\356\357\361\362\363\364\365\366\371\372\373\374]" "[']" t ("-C") nil iso-8859-1) ...)[^A-Za-z\300\301\302\303\304\305\307\310\311\312\313\314\315\316\317\322\323\324\325\326\331\ 332\333\334\340\341\342\343\344\345\347\350\351\352\353\354\355\356\357\361\362\363\364\365\366\371\ 372\373\374]" "[']" t ("-C") nil iso-8859-1) ...)[^A-Za-z\300\301\302\303\304\305\307\310\311\312\313\314\315\316\317\322\323\324\325\326\331\ 332\333\334\340\341\342\343\344\345\347\350\351\352\353\354\355\356\357\361\362\363\364\365\366\371\ 372\373\374]" "[']" t ("-C") nil iso-8859-1) ...)

而当 Emacs 重新启动时,我的 init.el 正确设置了变量 ispell-dictionary-alist。

希望这有助于跟踪问题。

最好的奥利弗

于 2013-01-11T10:35:38.627 回答
0

字符串文字中的单反斜杠肯定是错误的:在 elisp 中,它们是转义符,或者为后面的字符分配特殊含义,或者引用该字符。

替换\\\: "C:\\Dokumente....."。还要init.el通过执行C-h v ispell-dictionary-alistEnter并检查 `ispell-dictionary-alist.

于 2013-01-10T17:22:47.430 回答