在Emacs中使用hunspell的工作设置

mon*_*tux 10 emacs hunspell

有没有人有hunspellEmacs?简单地设置ispell-program-namehunspell不起作用,输出(例如,当使用flyspell时)如下所示:

-> UTF-8 encoding error. Missing continuation byte in 0. character position: - 9631: word not found
Run Code Online (Sandbox Code Playgroud)

(我的文件通常以UTF-8编码)

我见过几种不同的设置,但它们都以这种或那种方式失败了.如果编码工作得像它应该通常有问题找到正确的字典.

有工作解决方案的人吗?能够在两个词典之间切换(默认应该是瑞典语词典和次要英语)会很好,但是运行任何东西都会更好.

Bra*_*des 15

如果您收到UTF-8编码错误,则表示该hunspell进程正在使用指定其他编码的参数运行.例如,当我检查我的进程列表时,我看到这个子进程在启动后会显示给Emacs:

/usr/bin/hunspell -a  -B -i iso-8859-1
Run Code Online (Sandbox Code Playgroud)

ispell-get-coding-system函数决定使用哪种编码,它通过检查ispell-dictionary-alist似乎列出Emacs已知的每种语言的大变量来实现.该函数通常会从与您要检查的语言匹配的条目中删除最后一个符号.由于某种原因,我没有理会,这个列表有iso-8859-1英文 - 而不是,你知道,注意你的实际缓冲区中的编码.我知道,这似乎毫无意义.但我们坚持下去.

您可以认为可以通过为变量设置自己的值来覆盖它,ispell-dictionary-alist并将其utf-8用作八个参数中的最后一个:

;; I could never get Emacs to pay attention to this
(setq ispell-dictionary-alist
  '((nil "[A-Za-z]" "[^A-Za-z]" "[']" t ("-d" "en_US") nil utf-8)))
Run Code Online (Sandbox Code Playgroud)

但我无法让这个设置真正起作用,无论我是否(load-library "ispell")在我的第一个.emacs,或者我是否在其中一个内部做了:

;; Did not work for me either.
(eval-after-load "ispell" '(progn ...))
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,如果我启动一个新的Emacs并输入*scratch*并输入ispell-dictionary-alist并按下Control-J,那么ispell创建的巨大原始列表就会出现.每次.

所以我决定对这个巨大的列表的整个问题进行最终运行,并简单地重写ispell-get-coding-system函数以便始终返回utf-8.当然,下次我打开一个真正存在的文件时,这会让我感到很生气iso-8859-1但是我从来没有这样做过,对吧?

要在我的.emacs文件中成功实现此功能(好吧,~/.emacs.d/init.el但是需要为Stack Overflow应用程序输入这么多内容),需要以下代码:

;; It works!  It works!  After two hours of slogging, it works!
(if (file-exists-p "/usr/bin/hunspell")
    (progn
      (setq ispell-program-name "hunspell")
      (eval-after-load "ispell"
        '(progn (defun ispell-get-coding-system () 'utf-8)))))
Run Code Online (Sandbox Code Playgroud)

我现在hunspell起身像冠军一样工作!不幸的是,我完成它的工作的全部原因是希望它的字典比aspell大得多,但我看到它突出了一些相同的单词.哦,我会尝试另一种方法.我基本上想要一个拼写检查器,可以加载/usr/share/dict/american-english-hugeUbuntu上可用的字典,aspell但当我试图扩展其视野时,它在许多方面死亡.也许我会更幸运hunspell- 我们会看到.

  • 谢谢.太棒了.对于使用像瑞典语这样的语言,hunspell比i/aspell更好,即使我必须注意不是用utf8编码的文件,这仍然很棒.谢谢! (3认同)