10

テキストモードで flyspell-mode を使用しているときに「german8」スペル辞書を読み込もうとすると、次のエラーメッセージが表示されます。

Error in post-command-hook (flyspell-post-command-hook): (error "Error: The file "/usr/lib/aspell/deutsch\" can not be opened for reading.")

確認したところ、/usr/lib/aspell/deutsch はありません。Ubuntu シナプス パッケージ マネージャーは「aspell-de」を提供してくれましたが、クリアしませんでした。

問題を引き起こした .emacs のコードは次のとおりです。

;;switch dictionaries between German and English with F8 key
(defun fd-switch-dictionary()
      (interactive)
      (let* ((dic ispell-current-dictionary)
         (change (if (string= dic "deutsch8") "english" "deutsch8")))
        (ispell-change-dictionary change)
        (message "Dictionary switched from %s to %s" dic change)
        ))

(global-set-key (kbd "<f8>")   'fd-switch-dictionary)

flyspell-mode を起動してから ispell-change-dictionary を実行するだけで、同じエラーを繰り返すことができます。german8 が提供されますが、メッセージが再び表示されます。

 Error enabling Flyspell mode:
(Error: The file "/usr/lib/aspell/german" can not be opened for reading.)
4

4 に答える 4

7

私はまったく同じ問題を抱えていましたが、非常に簡単な回避策を見つけました。私が想定し

  • Emacs スペル チェッカーが aspell に設定されている、つまり、(setq-default ispell-program-name "aspell")

  • などにより、適切な aspell 辞書がインストールされapt-get install aspell-deます。

何らかの理由で、ispell が「見る」辞書のリスト、つまり を実行したときに利用できる辞書のリストにバグがあるようですispell-change-dictionary。「deutsch」を選択すると、ロードが試行されます"/usr/lib/aspell/deutsch\"aspell-deただし、現在は という辞書が含まれているため、aspell 辞書の名前が変更されたようde_DE*です。@Daniel Ralstonの答えのアイデアはこれを修正することだと思いますが、これはうまくいきませんでした。また、実際の辞書名を に渡そうとしましたispell-change-dictionaryが、どういうわけか、独自のリストから辞書を取得することを主張し、私の辞書が実際に正しいことを納得させることができませんでした。

私のために働いているのは、単純なシンボリックリンクの修正です。エラーは「deutsch」というディレクトリから辞書をロードしようとしていたように見えるため、最初は何をシンボリックリンクするべきかわかりませんでした。.aliasしかし、実際には典型的な aspellファイルを探していることが判明しました。したがって、このシンボリックリンクを使用して

sudo ln -s /usr/lib/aspell/de_DE.alias /usr/lib/aspell/deutsch.alias

で「deutsch」を選択するだけispell-change-dictionaryです。

于 2015-07-16T15:18:22.190 に答える
1

Arch Linuxインストールされaspell-ruた辞書で同じ問題に遭遇しましたがispell-change-dictionary russian、emacs(russian辞書の提案された名前です)で行ったとき、それは次のように返されました

Error: The file \"/usr/lib/aspell-0.60/russian\" can not be opened for reading.

だから私はそうしpacman -Ql aspell-ruましたが、それruは辞書の名前であり、 ではありませんrussian。それで、ispell-change-dictionary ruうまくいきました。

辞書ファイルの実際の名前を確認してください。

于 2015-03-05T14:55:13.557 に答える
1

最近、古くてよく使われる辞書エイリアスがドイツ語の aspell パッケージから削除されたようです。これにより、emacs のドイツ語辞書の定義が時代遅れになりました。これをあなたに追加してみてください.emacs

(eval-after-load "ispell"
  '(add-to-list 'ispell-dictionary-alist
                '("deutsch8"
                   "[a-zA-ZäöüßÄÖÜ]" "[^a-zA-ZäöüßÄÖÜ]" "[']" t
                  ("-C" "-d" "de_DE-neu.multi")
                  "~latin1" iso-8859-1)))
于 2013-03-13T17:19:11.953 に答える