让 hunspell 与 emacs 和德语一起工作

让 hunspell 与 emacs 和德语一起工作

我想hunspell在 ubuntu 13.04-box 上使用 emacs24 和德语词典。

为此,我安装了以下内容hunspell并将hunspell-de其添加到我的.emacs文件中:

(setq ispell-program-name "hunspell")
(setq ispell-dictionary "deutsch8")

当我在 emacs 中打开一个文件并启动时,flyspell-buffer我得到了,Starting new Ispell process [[hunspell::deutsch8]]但它阻塞了 emacs 缓冲区(鼠标变成一个旋转磁盘,指示等待)并且无限工作而不显示任何结果。所以我的配置肯定有问题。

没有第二行它可以工作,但仅适用于英文文本。

hunspell那么在 ubuntu 13.04 上设置emacs24德语词典的最佳方法是什么?是否存在任何可能的陷阱?

答案1

从 Emacs 24.4 开始,ispell 包支持 Hunspell 及其开箱即用的词典。因此,将以下两行添加到 init 文件中应该足以将 Hunspell 设置为默认拼写检查程序,将德语设置为默认拼写检查语言。

(setq ispell-program-name "hunspell"
      ispell-dictionary   "de_DE")

对于 24.4 之前的 Emacs 版本,请继续执行以下操作。

要检查字典是否在路径中列出,请运行hunspell -D.它应该输出类似这样的内容:

...
/usr/share/hunspell/en_US
/usr/share/hunspell/de_BE
/usr/share/hunspell/de_LU
/usr/share/hunspell/de_DE
...

接下来,将您喜欢的词典添加到您的文件ispell-local-dictionary-alist.emacs

(add-to-list 'ispell-local-dictionary-alist '("deutsch-hunspell"
                                              "[[:alpha:]]"
                                              "[^[:alpha:]]"
                                              "[']"
                                              t
                                              ("-d" "de_DE"); Dictionary file name
                                              nil
                                              iso-8859-1))

(add-to-list 'ispell-local-dictionary-alist '("english-hunspell"
                                              "[[:alpha:]]"
                                              "[^[:alpha:]]"
                                              "[']"
                                              t
                                              ("-d" "en_US")
                                              nil
                                              iso-8859-1))

(setq ispell-program-name "hunspell"          ; Use hunspell to correct mistakes
      ispell-dictionary   "deutsch-hunspell") ; Default dictionary to use

除此之外,您还可以定义一个函数来在德语和英语词典之间切换并将其绑定到C-c d例如

(defun switch-dictionary-de-en ()
  "Switch german and english dictionaries."
  (interactive)
  (let* ((dict ispell-current-dictionary)
         (new (if (string= dict "deutsch-hunspell") "english-hunspell"
                   "deutsch-hunspell")))
    (ispell-change-dictionary new)
    (message "Switched dictionary from %s to %s" dict new)))

(global-set-key (kbd "C-c d") 'switch-dictionary-de-en)

答案2

https://passingcuriosity.com/2017/emacs-hunspell-and-dictionaries/

添加

;; 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")

进入你的~/.emacs.

我的词典文件位于/usr/share/hunspell.

相关内容