Saya memiliki kamus hunspell di C:\hunspell\
. Ini berisi .dic
dan .aff
file untuk tiga bahasa: en_GB
, en_US
, dan nb_NO
. Deskripsi yang saya temukan di web tentang cara membuat hunspell bekerja di Emacs membuat saya bingung.
Apa kode minimum yang saya butuhkan dalam file init saya untuk dapat menggunakan tiga kamus hunspell ini di Emacs?
Saya telah mencoba kode berikut yang disarankan oleh satu situs web:
(add-to-list 'exec-path "C:/hunspell/bin/")
(setq ispell-program-name (locate-file "hunspell"
exec-path exec-suffixes 'file-executable-p))
Tetapi ketika ingin mengganti kamus M-x ispell-change-dictionary
, saya mendapatkan pesan berikut:
ispell-phaf: Tidak ada entri yang cocok untuk nihil.
microsoft-windows
hunspell
myotis
sumber
sumber
Jawaban:
Pengaturan Emacs:
Penyiapan kamus Hunspell:
Jalankan
hunspell -D
di jendela dos yang akan mendaftar direktori hunspell mencari kamus. Salin kamus Anda ke direktori itu. Ini adalah pengaturan minimum yang Anda butuhkan.Lihat http://blog.binchen.org/posts/what-s-the-best-spell-check-set-up-in-em-emacs.html untuk rincian teknis lebih lanjut.
sumber
use-package
adalah(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))))
Saya mengalami masalah ini sendiri beberapa waktu lalu. Jika saya ingat dengan benar, alasan Anda mendapatkan pesan kesalahan itu adalah karena
hunspell
tidak dapat mengkonfigurasi sendiri berdasarkan lingkungan saat ini. Jadi untuk memperbaikinya, Anda perlu mengkonfigurasi variabelhunspell
tertentuispell
. Kode berikut harus cukup untuk menyiapkan hunspell untuk kamus bahasa Inggris:Bagian yang penting adalah
ispell-hunspell-dictionary-alist
, harus diisi dengan daftar kamus yang tepat, seperti yang diberikanispell-local-dictionary-alist
.Ada sedikit detail di sekitar daftar ini. Jika Anda ingin tahu lebih banyak tentangnya, silakan baca bersama
M-x describe-variable
ispell-local-dictionary-alist
.sumber
ispell-hunspel-dictionary-alist
. Alih-alih(require 'flyspell)
Anda mungkin mempertimbangkan(with-eval-after-load "ispell" ...)
Pasang semua kamus yang Anda inginkan di lokasi tempat hunspell mencari; temukan ini bersama
hunspell -D
. Setelah terinstal, perintah ini akan menunjukkan kepada mereka.Dalam file init, tambahkan hanya tambahkan salah satunya. Misalnya saya punya
en_GB
danen_US
kamus diinstal. Saya sudah, dalam file init saya, ini:Setelah membuka Emacs, aktifkan saja
flyspell-mode
. Emacs harus mengatakan bahwa ini dimulai dengan kamus default. Ini berartien_GB
sedang beraksi, sebagai contoh kita. Sekarang jika Anda ingin berganti, lakukan sajaM-x ispell-change-dictionary
dan berikan nama kamus baru Egen_US
. Sekarang kamus lain harus beraksi. Ini, sekali lagi, akan diberitahukan oleh Emacs yang mengatakan itu dimulai tetapi hanya kali ini denganen_US
kamus.sumber
Dengan asumsi Anda menggunakan versi terbaru dari Emacs (24,4 atau lebih, seingat saya) maka yang perlu Anda lakukan adalah memastikan Anda menggunakan nama kamus yang benar, dan Emacs akan melakukan sisanya secara otomatis.
Masalah utama adalah bahwa Windows menggunakan format deskripsi bahasa yang berbeda, misalnya Bahasa Inggris British disebut ENG , dan Bahasa Inggris AS adalah ENU . Ini berarti file kamus Anda harus disebut ENU.dic dan ENU.aff untuk Bahasa Inggris AS, dan ENG.dic dan ENG.aff untuk Bahasa Inggris Inggris.
Mungkin juga perlu memiliki kamus "default" atau hunspell mungkin tidak terlalu senang. Anda juga dapat mengatur variabel lingkungan DICTIONARY untuk memaksakan default.
Sayangnya saya tidak tahu apa yang harus disebut sebagai kamus Norwegia Anda. Jika Anda menggunakan bahasa Norwegia di Windows, Anda harus dapat memeriksa dalam Emacs dengan mengevaluasi:
Yang akan menunjukkan kepada Anda pengaturan yang menggunakan Emacs.
sumber
Ini hanya dugaan, tetapi mungkin Anda perlu memberi tahu bahasa mana yang ingin Anda gunakan sebagai "default":
Nilai default
ispell-dictionary
adalahnil
, jadi mungkin ini adalah penyebab masalah Anda.sumber