1

Windows XP で Emacs 24.2.1 と Hunspell 1.3.2 を使用してスペルチェックを行うのに問題があります。

ビルトインマニュアルのスペルに関するヘルプを読み、インターネットを検索して、これらの行を~/.emacs.d/init.elファイルに含めるようアドバイスを見つけました。

(setq ispell-dictionary-alist
   '((nil ; default
      "[a-zäöüßA-ZÄÖÜ]" "[^a-zäöüßA-ZÄÖÜ]" "[']" t
      ("-d" "C:\\Dokumente und Einstellungen\\ojones\\Eigene Dateien\\dictionaries\\de_DE_frami" "-i" "utf-8") nil utf-8)
     ("english"
      "[A-Za-z]" "[^A-Za-z]" "[']" nil
      ("-d" "en_GB") nil utf-8)
     ("german"
      "[a-zäöüßA-ZÄÖÜ]" "[^a-zäöüßA-ZÄÖÜ]" "[']" t
      ("-d" "'C:\\Dokumente und Einstellungen\\ojones\\Eigene Dateien\\dictionaries\\de_DE_frami'" "-i" "utf-8") nil utf-8)
     ("british"
      "[A-Za-z]" "[^A-Za-z]" "[']" nil
      ("-d" "en_GB") nil utf-8)))
(eval-after-load "ispell"
    (progn
      (setq ispell-dictionary "german"
        ispell-extra-args '("-a" "-i" "utf-8") ; aspell doesn't understand -i utf-8, hunspell needs it
        ispell-silently-savep t)))
(setq ispell-program-name "C:\\Dokumente und Einstellungen\\ojones\\Eigene Dateien\\hunspell-mingw-1.3.2-win32\\bin\\hunspell.exe")

ここで、接辞ファイルと辞書ファイル、および hunspell.exe へのパスに関して変更を加えました。

コマンドラインで実行して、hunspell が動作することを確認しました。

M-x ispellemacs と入力すると、次のエラー メッセージが表示されます。

「ドイツ語」という名前の辞書の接辞または辞書ハエを開けません。
@(#) International Ispell バージョン 3.2.06 (実際には Hunspell 1.3.2)
@(#) International Ispell バージョン 3.2.06 (実際には Hunspell 1.3.2)

init.el の接辞と辞書ファイルへのパスを、接辞と dic 名だけに変更しようとしました。つまり"de_DE_frami"、hunspell はそれらの場所を知っているためですが、emacs では役に立ちませんでした。

4

3 に答える 3

1

解決に近づいています。

を使用するアプローチを変更しispell-dictionary-alistた後、Emacs が変数を上書きするためです。これが私の今の姿です:M-x ispellispell-local-dictionary-alist~/.emacs.d/init.el

(setq ispell-program-name "C:\\Dokumente und Einstellungen\\ojones\\Eigene Dateien\\hunspell-mingw-1.3.2-win32\\bin\\hunspell.exe")

(setq ispell-local-dictionary-alist
 '(("en_GB"
    "[[:alpha:]]"
    "[^[:alpha:]]"
    "[']" nil ("-r") nil utf-8)
   ("de_DE_frami"
    "[a-zäöüßA-ZÄÖÜ]" "[^a-zäöüßA-ZÄÖÜ]" "[']" nil
    ("-r") nil utf-8)))

Emacs を起動したら、M-x ispell-change-dictionaryde_DE_frami などを選択して辞書を変更する必要があります。

それはうまくいきます。しかし、それでも正しく動作しません。バッファ内のテキスト全体を次のようにチェックしているときに、このエラーが発生しましたM-x ispell

Ispell のずれ: 単語 `Einf\303' ポイント 118; おそらく互換性のないバージョン

「Einführung」という言葉に問題があります。「ü」が問題だと思います。単語を確認するM-$と、次のエラー メッセージが表示されます。

Ispell とそのプロセスは異なる文字マップを持っています

助言がありますか?

于 2013-01-11T16:58:14.623 に答える
0

init.el にいくつかの変更を加えたところ、接辞ファイルと辞書ファイルを開けないというエラー メッセージが表示されなくなりました。しかし、私は新しいエラーが発生します。

これが私の変更されたinit.elです

(setq ispell-dictionary-alist
 '((nil ; default 
    "[a-zäöüßA-ZÄÖÜ]" "[^a-zäöüßA-ZÄÖÜ]" "[']" t
    ("-d" "de_DE_frami") nil utf-8)
   ("en_GB"
    "[A-Za-z]" "[^A-Za-z]" "[']" nil
    ("-d" "en_GB") nil utf-8)
   ("de_DE_frami"
    "[a-zäöüßA-ZÄÖÜ]" "[^a-zäöüßA-ZÄÖÜ]" "[']" t
    ("-d" "de_DE_frami") nil utf-8)))
(eval-after-load "ispell"
  (progn
    (setq ispell-dictionary "de_DE_frami"
          ispell-extra-args '("-a" "-i" "utf-8") ; aspell doesn't understand -i utf-8, hunspell needs it
          ispell-silently-savep t)))
(setq ispell-program-name "C:\\Dokumente und Einstellungen\\ojones\\Eigene Dateien\\hunspell-mingw-1.3.2-win32\\bin\\hunspell.exe")

ispell-dicationary-alist の辞書の名前を、それらが持っている名前に変更しました。たとえば、「ドイツ語」を「de_DE_frami」に変更しました。辞書と接辞ファイルは、hunspell が見つけた場所に保存されていることを確認しました (コマンド ラインで hunspell を実行して、動作することを確認しました)。

ispell を開始するM-x ispellと、エラー メッセージは表示されず、ispell プロセスが次のように表示されM-x list-processesます。

プロセス: ispell

ステータス: 実行中

バッファ: --

TTY: --

コマンド: C:\Dokumente und Einstellungen...\hunspell.exe -a -d de_DE_frami -i nil -a -i utf-8

しかし、私が知る限り、それは機能しません。スペルミスとして特定された単語はありません (テスト目的でいくつか含めました)。flyspell をオンにするM-x flyspell-modeと、次のエラー メッセージが表示されます。

post-command-hook (flyspell-post-command-hook) のエラー: (エラー「辞書 \"de_DE_frami\" のデータがありません。'ispell-local-dictionary-alist' にも 'ispell-dictionary-alist' にもありません」 ")

スクラッチ バッファに「ispell-dicationary-alist」と入力C-jし、その行の最後で を押して、変数 ispell-dicationary-alist に init-el で指定された内容が含まれていることを確認すると、次の予期しないテキストが表示されます。

(("ヘブライ語"[\340\341\342\343\344\345\346\347\350\351\353\352\354\356\355\360\357\361\362\364\363\ 367\366\365\370\371\372]""[^\340\341\342\343\344\345\346\347\350\351\353\352\354\356\355\360\357 \361\362\364\363\367\366\365\370\371\372]" "" なし ("-B") なし cp1255) ("svenska" "[A-Za-z\345\344\ 366\351\340\374\350\346\370\347\305\304\326\311\300\334\310\306\330\307]"[^A-Za-z\345\344\ 366\351\340\374\350\346\370\347\305\304\326\311\300\334\310\306\330\307]" "[']" nil ("-C")" ~list" iso-8859-1) ("slovenian" "[A-Za-z\301\304\311\315\323\332\324\300\305\245\335\256\251\310\317] \253\322\341\344\351\355\363\372\364\340\345\265\375\276\271\350\357\273\362]""[^A-Za-z\301\304\311\315\323\332\324\300\305\245\335\256\251\310\317\253\322\341\344\351\355\ 363\372\364\340\345\265\375\276\271\350\357\273\362]" "" nil ("-B" "-d" "スロベニア語") nil iso-8859-2) ("スロバキア語"[A-Za-z\301\304\311\315\323\332\324\300\305\245\335\256\251\310\317\253\322\341\344\ 351\355\363\372\364\340\345\265\375\276\271\350\357\273\362]""[^A-Za-z\301\304\311\315\323\ 332\324\300\305\245\335\256\251\310\317\253\322\341\344\351\355\363\372\364\340\345\265\375\276\271\ 350\357\273\362]" "" nil ("-B") nil iso-8859-2) ("russianw""[\300\301\302\303\304\305\250\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\ 327\330\331\334\333\332\335\336\337\340\341\342\343\344\345\270\346\347\350\351\352\353\354\355\356\ 357\360\361\362\363\364\365\366\367\370\371\374\373\372\375\376\377]""[^\300\301\302\303\304\305 \250\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\334\333\332\335 \336\337\340\341\342\343\344\345\270\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365 \366\367\370\371\374\373\372\375\376\377]" "" nil nil nil windows-1251) ("ロシア語" "[\341\342\367\347\344\345\263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\ 376\373\375\370\371\377\374\340\361\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\ 320\322\323\324\325\306\310\303\336\333\335\330\331\337\334\300\321]""[^\341\342\367\347\344\345 \263\366\372\351\352\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\374 \340\361\301\302\327\307\304\305\243\326\332\311\312\313\314\315\316\317\320\322\323\324\325\306\310 \303\336\333\335\330\331\337\334\300\321]" "" nil nil nil koi8-r) ("ポルトガル語""[a-zA-Z\301\302\307\311 \323\340\341\342\351\352\355\363\343\347\372]""[^a-zA-Z\301\302\307\311\323\340\341\342\351] \352\355\363\343\347\372]" "[']" t ("-C") "~latin1" iso-8859-1) ("磨く" "[A-Za-z\241\243\246\254\257\261\263\266\274\277\306\312\321\323\346\352\361\363]" "[^ A-Za-z\241\243\246\254\257\261\263\266\274\277\306\312\321\323\346\352\361\363]"[.]" nil nil nil iso-8859-2) ("norsk7-tex" "[A-Za-z{}\'^]" "[^A-Za-z{}\\'^]" "[\"]" nil ("-d" "norsk") "~plaintex" iso-8859-1) ("norsk" "[A-Za-z\305\306\307\310\311\ 322\324\330\345\346\347\350\351\362\364\370]""[^A-Za-z\305\306\307\310\311\322\324\330\345\ 346\347\350\351\362\364\370]" "[\"]" nil nil "~list" iso-8859-1) ("nederlands8" "[A-Za-z\300\301\302] \303\304\305\307\310\311\312\313\314\315\316\317\322\323\324\325\326\331\332\333\334\340\341\342\343 \344\345\347\350\351\352\353\354\355\356\357\361\362\363\364\365\366\371\372\373\374]""[^A-Za -z\300\301\302\303\304\305\307\310\311\312\313\314\315\316\317\322\323\324\325\326\331\332\333\334 \340\341\342\343\344\345\347\350\351\352\353\354\355\356\357\361\362\363\364\365\366\371\372\373\374 ]" "[']" t ("-C") nil iso-8859-1) ("オランダ" "[A-Za-z\300\301\302\303\304\305\307\310\311\312\313\314\315\316\317\ 322\323\324\325\326\331\332\333\334\340\341\342\343\344\345\347\350\351\352\353\354\355\356\357\361\ 362\363\364\365\366\371\372\373\374]""[^A-Za-z\300\301\302\303\304\305\307\310\311\312\313\ 314\315\316\317\322\323\324\325\326\331\332\333\334\340\341\342\343\344\345\347\350\351\352\353\354\ 355\356\357\361\362\363\364\365\366\371\372\373\374]" "[']" t ("-C") なし iso-8859-1) ...)[^A-Za-z\300\301\302\303\304\305\307\310\311\312\313\314\315\316\317\322\323\324\325\326\331\ 332\333\334\340\341\342\343\344\345\347\350\351\352\353\354\355\356\357\361\362\363\364\365\366\371\ 372\373\374]" "[']" t ("-C") nil iso-8859-1) ...)[^A-Za-z\300\301\302\303\304\305\307\310\311\312\313\314\315\316\317\322\323\324\325\326\331\ 332\333\334\340\341\342\343\344\345\347\350\351\352\353\354\355\356\357\361\362\363\364\365\366\371\ 372\373\374]" "[']" t ("-C") nil iso-8859-1) ...)

一方、Emacs を新たに起動すると、init.el は変数 ispell-dictionary-alist を正しく設定します。

これが問題の追跡に役立つことを願っています。

ベストオリバー

于 2013-01-11T10:35:38.627 に答える
0

文字列リテラルの単一のバックスラッシュは明らかに間違っています: elisp では、それらはエスケープであり、次の文字に特別な意味を割り当てるか、その文字を引用します。

\:に置き換え\\ます"C:\\Dokumente....."。また、` init.elispell C-h v ispell-dictionary-alistEnter-dictionary-alist.

于 2013-01-10T17:22:47.430 に答える