Emacs中hunspell的工作设置

Emacs中hunspell的工作设置,emacs,hunspell,Emacs,Hunspell,是否有人有hunspell和Emacs的工作设置?仅将ispell程序名设置为hunspell不起作用,输出(例如使用flyspell时)如下所示: -> UTF-8 encoding error. Missing continuation byte in 0. character position: - 9631: word not found (我的文件通常用UTF-8编码) 我见过一些不同的设置,但它们都以这样或那样的方式失败了。如果编码工作正常,则通常很难找到正确的字典 有人有有

是否有人有
hunspell
Emacs
的工作设置?仅将
ispell程序名
设置为
hunspell
不起作用,输出(例如使用flyspell时)如下所示:

-> UTF-8 encoding error. Missing continuation byte in 0. character position: - 9631: word not found
(我的文件通常用UTF-8编码)

我见过一些不同的设置,但它们都以这样或那样的方式失败了。如果编码工作正常,则通常很难找到正确的字典


有人有有效的解决方案吗?能够在两个词典之间切换(默认为瑞典语词典和中级英语词典)会很好,但运行任何词典都会更好。

如果您遇到UTF-8编码错误,然后,这意味着运行
hunspell
进程时,将使用一个指定其他编码的参数。例如,当我检查我的进程列表时,我会在Emacs启动后看到这个子进程:

/usr/bin/hunspell -a  -B -i iso-8859-1
ispell get coding system
函数决定使用哪种编码,它通过检查大的
ispell dictionary alist
变量来实现,该变量似乎列出了Emacs已知的每种语言。该函数通常从与要检查的语言匹配的条目中获取最后一个符号。出于某种原因,我没有费心去弄清楚,这个列表中有英语的
iso-8859-1
——而不是,你知道,注意实际缓冲区中的编码。我知道,这似乎毫无意义。但是我们继续

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

;;我无法让Emacs注意到这一点
(setq-ispell字典)
“((无“[A-Za-z]”[^A-Za-z]“[']”t(“-d”en_US”)无utf-8)))
但是,无论我是否在
.emacs
中首先执行了
(加载库“ispell”)
,或者是否在以下其中一个中执行了此设置,我都无法使此设置真正起作用:

;;也不适合我。
(加载“ispell”(程序…)后评估)
不管怎样,如果我启动一个新的Emacs,输入
*scratch*
,键入
ispell dictionary alist
并按下Control-J,那么
ispell
创建的庞大原始列表就会出现。每一次

因此,我决定对这个庞大列表的整个问题进行一次结束运行,并简单地重写
ispell get coding system
函数,以始终返回
utf-8
。当然,下次我打开一个真正在
iso-8859-1
中的文件时,这会咬到我,但我从来没有这样做过,对吗

要在我的
.emacs
文件中成功实现这一点(嗯,
~/.emacs.d/init.el
但需要大量键入才能得到堆栈溢出答案),需要以下代码:

;;它起作用了!它起作用了!经过两个小时的苦干,终于成功了!
(如果(文件-exists-p)/usr/bin/hunspell)
(项目
(setq ispell程序名“Hunspill”)
(装载后评估“ispell”
'(progn(defun ispell get coding system()'utf-8()()))
我现在有了
hunspill
技能,像冠军一样工作!不幸的是,我之所以让它工作,完全是希望它的字典比阿斯佩尔的大得多,但我看到它突出了一些相同的单词。哦,好吧,我试试另一种方法。我基本上想要一个拼写检查器,它可以加载Ubuntu上提供的
/usr/share/dict/american english大型
词典,但是
aspell
在我试图扩展它的视野时在很多方面都失败了。也许我会更幸运地使用hunspell-我们会看到的。

来自

进入您的
~/.emacs


我的字典文件位于
/usr/share/hunspell

已经试过了。又做了一次,希望我错过了什么,我可以更改字典(
rw ispell change dictionary
),它似乎找到了我的字典:-(T-H-A-N-K-S。这太棒了。对于使用瑞典语这样的语言来说,hunspell比i/aspell要好得多,即使我必须注意未以utf8编码的文件,这仍然是非常棒的。谢谢!在尝试您描述的方法时,我遇到了一个错误。首先我做了
sudo apt get install hunspell
,然后我在.ema中插入了代码块cs(最后一个带有
if
结构的)。当我尝试拼写检查时,我在*消息*中得到以下信息:
启动新的Ispell进程[english]…启用Flyspell模式时出错:(无法打开名为“english”的词典的词缀或词典文件。@(#)国际Ispell版本3.2.06(但实际上是拼写1.2.14))
。问题出在哪里?帮了我很大的忙,谢谢!虽然花了2个小时才找到答案:)只需将
ispell dictionary列表设置为失败,因为您为我做了这项工作。确保
ispell dictionary
设置为
nil
;; Set $DICPATH to "$HOME/Library/Spelling" for hunspell.
(setenv
  "DICPATH"
  "/path/to/hunspell/dictionary")
;; Tell ispell-mode to use hunspell.
(setq
  ispell-program-name
  "hunspell")