如何在Windows PC上设置hunspell?


10

我的hunspell词典在C:\hunspell\。它包含了.dic.aff三种语言文件:en_GBen_US,和nb_NO。我在网上找到有关如何使Emacs中的hunspell工作的描述,使我感到困惑。

为了在Emacs中使用这三个普通字典,我在init文件中需要的最低代码是多少?

我已经尝试过一个网站建议的以下代码:

(add-to-list 'exec-path "C:/hunspell/bin/")
(setq ispell-program-name (locate-file "hunspell"
                       exec-path exec-suffixes 'file-executable-p))

但是当要通过更改字典时M-x ispell-change-dictionary,我收到以下消息:

ispell-phaf:无匹配项,为nil。



Answers:


4

Emacs设置:

(setq ispell-program-name "c:/what-ever-path/hunspell")

;; "en_US" is key to lookup in `ispell-local-dictionary-alist'.
;; Please note it will be passed as default value to hunspell CLI `-d` option
;; if you don't manually setup `-d` in `ispell-local-dictionary-alist`
(setq ispell-local-dictionary "en_US") 

(setq ispell-local-dictionary-alist
      '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US") nil utf-8)))

Hunspell词典设置:

hunspell -D在dos窗口中运行,它将列出目录hunspell搜索字典。将您的词典复制到该目录。这是您所需的最低设置。

有关更多技术详细信息,请参见http://blog.binchen.org/posts/what-s-the-best-spell-check-set-up-in-emacs.html


为我工作!我的设置use-package(use-package ispell :config (setq ispell-program-name "C:/Program Files (x86)/hunspell-1.3.2-3-w32-bin/bin/hunspell.exe") (setq ispell-local-dictionary "en_US") (setq ispell-local-dictionary-alist '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US") nil utf-8))))
Lorem Ipsum '18

只需在Windows 10中为hunspell做(setq ispell-程序名“ c:/what-ever-path/hunspell.exe”),而无需其他配置即可进行英语拼写检查。
Yu Shen

2

我自己前一段时间遇到了这个问题。如果我没记错的话,收到该错误消息的原因是因为hunspell无法基于当前环境进行自我配置。因此,要解决此问题,您需要配置hunspell特定的ispell变量。下面的代码应该是足够的hunspell设置为英语字典:

(require 'flyspell)
(setq ispell-dictionary "english")
(add-to-list 'ispell-local-dictionary-alist '(("english"
                                               "[[:alpha:]]"
                                               "[^[:alpha:]]"
                                               "[']"
                                               t
                                               ("-d" "en_US")
                                               nil
                                               utf-8)))
(setq ispell-hunspell-dictionary-alist ispell-local-dictionary-alist)

重要的部分是ispell-hunspell-dictionary-alist,必须在其中填充适当的字典列表,例如中给出的字典列表ispell-local-dictionary-alist

不过,此列表周围有很多细节。如果您想了解更多信息,请随时阅读M-x describe-variable ispell-local-dictionary-alist


+1尝试填充的默认尝试似乎存在问题ispell-hunspel-dictionary-alist。取而代之的(require 'flyspell)(with-eval-after-load "ispell" ...)
Andrew Swann '18

1

将所有想要的字典安装在hunspell搜索到的位置;用找到它hunspell -D。安装后,此命令应显示它们。

在init文件,添加只需添加其中的一个如我有en_GBen_US安装的字典。我已经在我的init文件中:

(setenv "DICTIONARY" "en_GB")

打开Emacs后,只需启用flyspell-mode。Emacs应该说它是用默认字典启动ispell的。en_GB对于我们的示例,这意味着正在采取行动。现在,如果您要切换,只需M-x ispell-change-dictionary输入新字典名称Eg即可en_US。现在,另一本字典应该开始生效了。同样,Emacs会通知它说它以ispell开头,但是这次是en_US字典。


1

假设您使用的是Emacs的最新版本(我记得24.4或更高版本),那么您所要做的就是确保使用正确的词典名称,而Emacs将自动执行其余操作。

主要问题是Windows使用不同的语言描述格式,例如,英式英语称为ENG,美式英语为ENU。这意味着你的字典文件应该被称为ENU.dicENU.aff美国英语,并ENG.dicENG.aff的英式英语。

也可能有必要使用“默认”词典,否则hunspell可能不太高兴。您还可以设置DICTIONARY环境变量以强制使用默认值。

不幸的是,我无法计算出您的挪威词典应该叫什么。如果您在Windows中使用挪威语区域设置,则应该能够通过评估以下内容在Emacs中进行检查:

(getenv "LANG")

这将向您显示Emacs使用的设置。


0

这只是一个猜测,但也许您需要告诉您要使用哪种语言作为“默认”语言:

(setq ispell-dictionary "en") ; default dictionary

的默认值ispell-dictionary就是nil,所以可能这是你的问题的原因。


谢谢马克的提示,但不幸的是,这似乎并没有改变我的情况。错误消息仍然弹出
myotis
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.