Windows PC'de hunspell'i nasıl ayarlarım?


10

Hunspell sözlüklerimde var C:\hunspell\. İçerdiği .dicve .affüç dil için dosyaları: en_GB, en_US, ve nb_NO. İnternette, hecspell'in Emacs'ta nasıl çalışacağına ilişkin bulduğum açıklamalar beni karıştırıyor.

Emacs'ta bu üç hunspell sözlükünü kullanabilmek için init dosyamda gereken minimum kod nedir?

Bir web sitesi tarafından önerilen aşağıdaki kodu denedim:

(add-to-list 'exec-path "C:/hunspell/bin/")
(setq ispell-program-name (locate-file "hunspell"
                       exec-path exec-suffixes 'file-executable-p))

Ancak sözlüğü değiştirmek M-x ispell-change-dictionaryistediğinizde şu mesajı alıyorum:

ispell-phaf: nil için eşleşen giriş yok.



Yanıtlar:


4

Emacs kurulumu:

(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 sözlük kurulumu:

hunspell -DSözlükleri arayan hunspell dizinlerini listeleyecek dos penceresinde çalıştırın . Sözlüklerinizi bu dizine kopyalayın. Bu, ihtiyacınız olan minimum kurulumdur.

Daha fazla teknik ayrıntı için http://blog.binchen.org/posts/what-s-the-best-spell-check-set-up-in-emacs.html adresine bakın .


Benim için çalıştı! Benim kurulum use-packageolduğu(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))))
Ipsum

İngilizce yazım denetimi için diğer yapılandırmalar olmadan hunspell için Windows 10'da (setq ispell-program-name "c: /what-ever-path/hunspell.exe") yapın.
Yu Shen

2

Bir süre önce bu problemle karşılaştım. Doğru hatırlıyorsam, bu hata iletisini almanızın nedeni hunspellgeçerli ortama göre kendini yapılandıramamasıdır. Bu nedenle, düzeltmek için hunspellbelirli ispelldeğişkenleri yapılandırmanız gerekir . Aşağıdaki kod ingilizce sözlükler için hunspell kurmak için yeterli olmalıdır :

(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)

Önemli olan ispell-hunspell-dictionary-alist, verilen gibi uygun bir sözlük listesi ile doldurulması gerekir ispell-local-dictionary-alist.

Ancak bu listeyi çevreleyen biraz ayrıntı var. Bu konuda daha fazla bilgi edinmek istiyorsanız, okumaktan çekinmeyin M-x describe-variable ispell-local-dictionary-alist.


+1 varsayılan doldurma girişimi ile yanlış bir şey var gibi görünüyor ispell-hunspel-dictionary-alist. Yerine (require 'flyspell)düşünebilirsiniz(with-eval-after-load "ispell" ...)
Andrew Swann

1

Hunspell'in aradığı konuma istediğiniz tüm sözlükleri yükleyin; ile bulmak hunspell -D. Kurulduktan sonra, bu komut onları göstermelidir.

İnit dosyasında, sadece bunlardan birini ekleyin Eg var en_GBve en_USyüklü sözlükler. Ben init dosyamda bu var:

(setenv "DICTIONARY" "en_GB")

Emacs'ı açtıktan sonra etkinleştirin flyspell-mode. Emacs, varsayılan sözlükle başlatıldığını söylemelidir. Bu en_GBbizim örneğimiz için geçerli demektir . Şimdi geçmek istiyorsanız, sadece M-x ispell-change-dictionaryyeni sözlük adını girin ve verin en_US. Şimdi diğer sözlük iş başında olmalı. Bu, Emacs tarafından ispell başladığını ancak bu sefer en_USsözlükle bildirildiğini bildirecektir .


1

Emacs'in son bir sürümünü kullandığınızı varsayarsak (hatırladığım gibi 24.4 veya üstü), yapmanız gereken tek şey doğru sözlük adını kullandığınızdan emin olmaktır ve Emacs gerisini otomatik olarak yapar.

Ana sorun, Windows'un farklı bir dil açıklama biçimi kullanmasıdır, örneğin İngiliz İngilizcesi ENG ve ABD İngilizcesi ENU'dur . Bu sözlük dosyaları çağrılmalıdır anlamına ENU.dic ve ENU.aff ABD İngilizce olarak ve ENG.dic ve ENG.aff İngiliz İngilizcesi için.

Ayrıca "varsayılan" bir sözlük olması gerekebilir veya hunspell çok mutlu olmayabilir. Ayrıca, DICTIONARY ortam değişkenini varsayılan ayarı zorlayacak şekilde ayarlayabilirsiniz .

Ne yazık ki Norveççe sözlüğünüzün neyi araması gerektiğini çözemiyorum. Windows'ta Norveç yerel ayarını kullanıyorsanız, Emacs içinde aşağıdakileri değerlendirerek kontrol edebilmeniz gerekir:

(getenv "LANG")

Bu size Emacs'ın kullandığı ayarı gösterecektir.


0

Bu sadece bir tahmindir, ancak “varsayılan” olarak hangi dili kullanmak istediğinizi söylemeniz gerekebilir:

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

Varsayılan değeri ' ispell-dictionarydir nil, bu nedenle sorunun nedeni bu olabilir.


Teşekkürler Mark, bahşiş için, ama maalesef durumumu değiştirmiyor gibi görünüyor. Hata mesajı hala
beliriyor
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.