emacs和hunspell - 无法打开词缀或词典文件

时间:2013-01-10 17:16:05

标签: windows emacs hunspell

我无法在Windows XP上使用Emacs 24.2.1和Hunspell 1.3.2进行拼写检查。

我已阅读内置手册中有关拼写的帮助,并在互联网上搜索,我发现建议将这些行包含在我的~/.emacs.d/init.el文件中。

(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")

我对词缀和词典文件以及hunspell.exe的路径进行了更改。

我通过在命令行上执行它来验证hunspell的工作原理。

当我在emacs中输入M-x ispell时,我收到以下错误消息

  

无法为名为“german”的词典打开词缀或词典苍蝇   @(#)国际Ispell版本3.2.06(但真的是Hunspell 1.3.2)
  @(#)国际Ispell版本3.2.06(但真的是Hunspell 1.3.2)

我尝试将我的init.el中的词缀和词典文件的路径更改为词缀和词典的名称,即"de_DE_frami",因为hunspell知道在哪里找到它们,但它没有帮助在emacs。

3 个答案:

答案 0 :(得分:1)

我越来越接近解决方案了。

因为Emacs在ispell-dictionary-alist之后覆盖了变量M-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及其进程有不同的角色地图

有什么建议吗?

答案 1 :(得分:0)

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

\替换为\\"C:\\Dokumente....."。通过 Ch v init.el 输入并检查`ispell-dictionary-alist的值,确保您的ispell-dictionary-alist确实已加载。

答案 2 :(得分: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中的词典名称更改为他们拥有的名称,例如我改变了"德国"到" de_DE_frami"。我确保字典和词缀文件保存在hunspell找到它们的地方(我通过命令行执行hunspell验证它有效)。

现在,当我按M-x ispell启动ispell时,没有错误消息,我看到使用M-x list-processes的ispell进程:

  

处理:ispell

     

状态:运行

     

缓冲区: -

     

TTY: -

     

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

但就我所知,它已经开始工作了。没有任何单词被识别为拼写错误(我将其中一些用于测试目的)。 当我按M-x flyspell-mode打开flyspell时,会出现以下错误消息:

  

命令后挂钩错误(flyspell-post-command-hook):(错误"没有数据的字典\" de_DE_frami \",也没有' ispell- local-dictionary-alist'也不是' ispell-dictionary-alist'")

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

  

(("希伯来"" [\ 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]""" nil(" -B")nil 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]"" [']" nil (" -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]&# 34;"" nil(" -B"" -d""斯洛文尼亚")nil 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)(" russian"" [\ 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 \ 3 54 \ 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)(" portugues"" [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 \#34;" [']" t(" -C")" ~latin1" iso-8859-1)(& #34;抛光"" [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]"" [。]" nil nil nil iso-8859-2)(" norsk7-tex"" [A-Za z {} \' ^ ]" "[^A-Za-z{}\\'^]"" [\"]" nil(" -d"" norsk& #34;)" ~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)(" nederlands"" [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)...)

当Emacs被frehly启动时,我的init.el正确设置变量ispell-dictionary-alist。

希望这有助于追踪问题。

最佳

奥利弗