Windows PCでhunspellを設定するにはどうすればよいですか?


10

私のハンスペル辞書はにありC:\hunspell\ます。それは含ま.dic.aff3つの言語用のファイル:en_GBen_US、とnb_NO。Emacsでhunspellを機能させる方法についてウェブで見つけた説明は、私を混乱させます。

Emacsでこれら3つのハンスペル辞書を使用できるようにするには、initファイルに必要な最小コードは何ですか?

1つのWebサイトで提案されている次のコードを試してみました。

(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に一致するエントリはありません。



回答:


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辞書を検索するディレクトリhunspellをリストするdosウィンドウで実行します。辞書をそのディレクトリにコピーします。これは、必要な最小セットアップです。

参照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

Windows 10でhunspellを(setq ispell-program-name "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" ...)
アンドリュー・スワン2018年

1

hunspellが検索する場所に必要なすべての辞書をインストールします。でこれを見つけてくださいhunspell -D。インストールすると、このコマンドはそれらを表示するはずです。

initファイルでは、単に例:私が持っているそのうちの一つを追加en_GBし、en_US辞書がインストールされています。私は私のinitファイルで、これを持っています:

(setenv "DICTIONARY" "en_GB")

Emacsを開いたら、を有効にしflyspell-modeます。Emacsはそれがデフォルトの辞書でispellで始まっていると言うべきです。これen_GBは、この例では動作していることを意味します。切り替えたい場合はM-x ispell-change-dictionary、新しい辞書名Egを付けてくださいen_US。これで、他の辞書が動作するはずです。これもまた、ispellが開始されたとEmacsから通知されますが、今回はen_US辞書を使用します。


1

Emacsの最近のバージョン(私が覚えているように24.4以降)を使用していると仮定すると、正しい辞書名を使用していることを確認するだけで、Emacsが残りを自動的に実行します。

主な問題は、Windowsが異なる言語記述形式を使用していることです。たとえば、イギリス英語はENGと呼ばれ、アメリカ英語はENUと呼ばれます。つまり、辞書ファイルは、米国英語の場合はENU.dicおよびENU.aff、英国英語の場合はENG.dicおよびENG.affとする必要があります。

また、「デフォルト」の辞書を用意する必要があるかもしれません。そうしないと、hunspellが満足できない場合があります。DICTIONARY環境変数を設定して、デフォルトを強制することもできます。

残念ながら、私はあなたのノルウェー語辞書が何と呼ばれるべきかを見つけることができません。Windowsでノルウェー語のロケールを使用している場合は、Emacs内で次の評価を行うことで確認できます。

(getenv "LANG")

Emacsが使用している設定が表示されます。


0

これは単なる推測ですが、「デフォルト」として使用する言語を指定する必要があるかもしれません。

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

のデフォルト値ispell-dictionarynilなので、これが問題の原因である可能性があります。


ヒントとしてマークに感謝しますが、残念ながら私の状況は変わっていないようです。エラーメッセージは引き続きポップアップします
myotis
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.