OS X 10.9上的hunspell / emacs

时间:2014-08-20 21:54:41

标签: emacs hunspell

我无法建立,所以我尝试了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在哪里查找字典?

2 个答案:

答案 0 :(得分:3)

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

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继续使用我的系统。

答案 1 :(得分: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)))))