2

我无法构建 aspell,所以我正在尝试 hunspell。建立了hunspell。设置 .emacs 以便 emacs 可以(并且确实)找到可执行文件,如下所示:

;;; Spell checking using hunspell
(setq ispell-dictionary-alist
  '((nil "[A-Za-z]" "[^A-Za-z]" "[']" t
     ("-d" "en_US" "-i" "utf-8") nil utf-8)
    ("american"
     "[A-Za-z]" "[^A-Za-z]" "[']" nil
     ("-d" "en_US") nil utf-8)
    ("english"
     "[A-Za-z]" "[^A-Za-z]" "[']" nil
     ("-d" "en_GB") nil utf-8)
    ("british"
     "[A-Za-z]" "[^A-Za-z]" "[']" nil
     ("-d" "en_GB") nil utf-8)
    ("norsk"
     "[A-Za-zÉÆØÅéæøå]" "[^A-Za-zÉÆØÅéæøå]" "[\"]" nil
     ("-d" "nb_NO") "~list" utf-8)))
(eval-after-load "ispell"
  (progn
    (setq ispell-dictionary "english"
          ispell-extra-args '("-a" "-i" "utf-8")
          ispell-silently-savep t)))

(setq ispell-dictionary "en_US")
(setq ispell-program-name "/usr/local/bin/hunspell")

这在我的 .bash_profile

export DICTIONARY=en_US
export DICPATH=/Users/myname/Applications/en_US

也试过

export DICTIONARY=en_US
export DICPATH=/Users/gpajer/Applications/

(有一个目录 ~/Applications/en_US 存放字典文件)

但是 ispell-buffer 返回类似

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

hunspell 找不到字典吗?有什么特别的地方应该放字典吗?或者我如何告诉 emacs/hunspell 在哪里查找字典?

4

2 回答 2

2

通过安装最近的预测试或构建 Emacs 主干升级到 Emacs 24.4。用于 Emacs 主干的预测试和夜间构建的预构建二进制文件可从Emacs for Mac OS X中获得,分别位于“预测试”和“夜间”部分。

Emacs 24.4 大大改进了对 Hunspell 的支持,现在只需进一步定制就可以自动使用 Hunspell。值得注意的是,Emacs 现在可以发现可用的 Hunspell 字典并ispell-dictionary-alist自动填充。本质上,您只需要以下内容来告诉 Emacs 使用 hunspell:

(setq ispell-program-name (executable-find "hunspell"))

但是,您需要为 Hunspell 显式安装这些词典,具体取决于您安装 Hunspell 的方式。一般情况下,只需要将对应的*.aff*.dic文件放入~/Library/Spelling. 不过,获取字典要困难一些。最好的方法可能是下载相应的 LibreOffice 扩展并从 OXT 文件中提取*.dic*.aff文件,这些文件本质上只是 ZIP 文件。至少,这就是我所做的。可能有更好的字典来源。

除了特定于语言的字典外,您还需要有一个 Emacs 的“默认”字典。这本词典需要按default字面意思命名。不过,创建它很容易。只需创建指向您首选语言的词典的符号链接:

$ cd ~/Library/Spelling
$ ln -s en_GB.aff default.aff
$ ln -s en_GB.dic default.dic

这就是让 Hunspell 启动并在我的系统上工作所需的全部内容。

于 2014-08-21T16:38:38.690 回答
0

这是我正在使用的 Emacs 24.4 / OS X 10.9 Hunspell 相关设置,希望对您有所帮助。

首先,让路径正常工作:

(cond
 ((eq system-type 'darwin)
  ;; Sane path (OSX doesn't've much on the path when launching not from shell:
  (setq path "/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/texbin:/opt/local/bin")
  (setenv "PATH" path)
  ;; Emacs 24.4 seems to need this...:
  (mapc (lambda (p) (push p exec-path)) '("/usr/local/bin" "/usr/texbin" "/opt/local/bin"))))

然后,指向 Hunspell 并进行设置:

(setq-default ispell-program-name (executable-find "hunspell"))
(setq ispell-dictionary "american"
  ispell-extra-args '() ;; TeX mode "-t"
  ispell-silently-savep t
  )

(add-hook 'ispell-initialize-spellchecker-hook
          (lambda ()
            (setq ispell-base-dicts-override-alist
                  '((nil ; default
                     "[A-Za-z]" "[^A-Za-z]" "[']" t
                     ("-d" "en_US" "-i" "utf-8") nil utf-8)
                    ("american" ; Yankee English
                     "[A-Za-z]" "[^A-Za-z]" "[']" t
                     ("-d" "en_US" "-i" "utf-8") nil utf-8)
                    ("british" ; British English
                     "[A-Za-z]" "[^A-Za-z]" "[']" t
                     ("-d" "en_GB" "-i" "utf-8") nil utf-8)))))
于 2014-09-13T19:45:23.193 回答