Birden fazla sözlükle yazım denetimi


15

Emacs yazım denetleyicisiyle birden fazla sözlük nasıl kullanabilirim? Özellikle aynı zamanda bir İngiliz İngilizcesi sözlüğü ve tıbbi bir İngilizce sözlük kullanmak istiyorum.


Kullanıyor musunuz flyspell?
PythonNut

Evet, kullanıyorum flyspell.
Divinenephron

Çözüm kullanabilir, flyspellancak zorunlu değildir. Bu şekilde cevaplar daha fazla insanla alakalı olabilir.
Divinenephron

Yanıtlar:


16

Hunspell birden fazla sözlükle yazım denetimi yapabilir ve bunu Emacs ile çalışacak şekilde yapılandırabilirsiniz. Emacs 25.0 ile OS X 10.11'de böyle yapıyorum. Eski Emacsen ile çalışmaz.

Hunspell'i yükle

brew install hunspell

Dan Hunspell sözlükleri indirin LibreOffice ve OpenMedSpel .

cd ~/Downloads/

curl http://extensions.libreoffice.org/extension-center/english-dictionaries/releases/2016.04.01/dict-en.oxt > dict-en.oxt
unzip dict-en.oxt en_GB.aff en_GB.dic

curl -L https://addons.mozilla.org/en-US/firefox/downloads/latest/6526/addon-6526-latest.xpi > openmedspel.xpi
unzip openmedspel.xpi dictionaries/OpenMedSpel.{aff,dic}
mv dictionaries/OpenMedSpel.dic en_US-med.dic
mv dictionaries/OpenMedSpel.aff en_US-med.aff

Sözlükleri koy ~/Library/Spelling/.

mv *.aff *.dic ~/Library/Spelling/

Bunu şuraya ekle ~/.emacs/init.el:

(with-eval-after-load "ispell"
  (setq ispell-program-name "hunspell")
  (setq ispell-dictionary "en_GB,en_US-med")
  ;; ispell-set-spellchecker-params has to be called
  ;; before ispell-hunspell-add-multi-dic will work
  (ispell-set-spellchecker-params)
  (ispell-hunspell-add-multi-dic "en_GB,en_US-med"))

Fonksiyonun ispell-hunspell-add-multi-diceski sürümlerinde, ispell.elEmacs 24.5'te bile mevcut gibi görünmediğine dikkat edin. En yeni dosyayı github.com/emacs-mirror/emacs/blob/master/lisp/textmodes/… adresinden indirmem ve çalışması için bayt- derlemem gerekti .
xji

Emacs 25.0 kullanıyorum. Sadece Emacs> = 25.0 üzerinde çalışan bir not ekledim.
Divinenephron

Emacs 25'i kurdum. Ancak, garip bir şekilde aşağıdaki hatayla karşılaştım: Symbol’s function definition is void: ispell-hunspell-add-multi-diceminim /usr/share/emacs/25.1.50/lisp/textmodes/ispell.elc, ancak işlev var. Bunun nasıl olabileceği hakkında bir fikrin var mı? Teşekkürler.
xji

Ben gözlerimi fark ispell.eliçinde /usr/share/emacs/site-lisp/yeni gölgeleme ispell.elgör ... Emacs25 içinde unix.stackexchange.com/questions/28483/... aynı sorunla karşılaşmış olan herkes için gerekli.
xji

2

En_US-med.dic ve en_US-med.aff'ı önceden indirdiğinizi ve hunspell'i yüklediğinizi varsayalım

Adım 1, hunspell -Dkabukta çalıştırın , hunspell'in sözlükleri aradığı dizine söyler, en_US-med.dic ve en_US-med.aff dosyasını bu dizine kopyalar.

Adım 2, ~ / .emacs içine aşağıdaki kodu ekleyin,

(setq ispell-program-name "hunspell")
;; you could set `ispell-dictionary` instead but `ispell-local-dictionary' has higher priority
(setq ispell-local-dictionary "en_US")
(setq ispell-local-dictionary-alist '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US,en_US-med") nil utf-8)))

Aslında "-d en_US, en_US-med" seçeneğini hunspell CLI'ye geçiriyoruz, böylece aynı anda İKİ sözlük "en_US" ve "en_US-med" kullanabiliyoruz .

"-D" seçenekleri hunspell kılavuzunda ( man hunspellkabukta) belgelenmiştir

Hunspell kılavuzundan alıntılanan metin:

-d en_US,en_geo,en_med,de_DE,de_med

       en_US  and  de_DE  are  base dictionaries, they consist of aff and dic
       file pairs: en_US.aff, en_US.dic and  de_DE.aff,  de_DE.dic.   En_geo,
       en_med,  de_med  are  special dictionaries: dictionaries without affix
       file. Special dictionaries are optional extension of the base  dictio‐
       naries  usually  with  special (medical, law etc.)  terms. There is no
       naming convention for special dictionaries, only the ".dic" extension:
       dictionaries  without affix file will be an extension of the preceding
       base dictionary (right order of the parameter list needs for good sug‐
       gestions). First item of -d parameter list must be a base dictionary.

"Fibrokondrit" kelimesi ile Emacs 24.3, Debian 7 üzerinde test edilmiştir.

Herhangi bir işletim sisteminde Emacs 23+ ile çalışmalıdır .

Windows'ta, hunspell çalıştırılabilirine sözlük arama yolunun ortam değişkenini ayarlamak için en kolay yol olduğunu unutmayın DICTPATH(hunspell kılavuzunda belgelenmiştir). Cygwin / MSYS2'den çalıştırılabilir hunspell yürütülebilir dosyasının yolu yalnızca UNIX biçiminde tanıması mümkündür .


Bu yöntem birden fazla sözlük kullanmama izin vermiyor .
Divinenephron

Verdiğim kod IS çoklu sözlük.
chen bin

Anladım, belirttiğiniz için teşekkürler - -dseçeneği fark etmedim .
Divinenephron

Bu bir sebepten dolayı işe yaramıyor gibi görünüyor. Komut satırında -d seçeneğini kullandığımda çalışır, ancak Emacs'ta bir helm-flyspellşekilde sadece sistem dili ile sözlüğü kullanıyor gibi görünüyor.
xji

helm-flyspell aspell kullanabilir.
chen bin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.