Mam swoje słowniki hunspell w C:\hunspell\
. Zawiera on .dic
i .aff
pliki dla trzech językach: en_GB
, en_US
, i nb_NO
. Znajdujące się w Internecie opisy, jak sprawić, by hunspell działało w Emacsie, wprawiają mnie w zakłopotanie.
Jakiego minimalnego kodu potrzebuję w pliku init, aby móc używać tych trzech słowników hunspell w Emacsie?
Wypróbowałem następujący kod sugerowany przez jedną stronę internetową:
(add-to-list 'exec-path "C:/hunspell/bin/")
(setq ispell-program-name (locate-file "hunspell"
exec-path exec-suffixes 'file-executable-p))
Ale gdy chcę zmienić słownik M-x ispell-change-dictionary
, otrzymuję następujący komunikat:
ispell-phaf: Brak pasującego wpisu dla zero.
microsoft-windows
hunspell
myotis
źródło
źródło
Odpowiedzi:
Konfiguracja Emacsa:
Ustawienia słownika Hunspell:
Uruchom
hunspell -D
w oknie dos, które wyświetli listę hunspell katalogów szukających słowników. Skopiuj swoje słowniki do tego katalogu. Jest to minimalna wymagana konfiguracja.Więcej informacji technicznych można znaleźć na stronie http://blog.binchen.org/posts/what-s-the-best-spell-check-set-up-in-emacs.html .
źródło
use-package
to(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))))
Jakiś czas temu natknąłem się na ten problem. Jeśli dobrze pamiętam, przyczyną tego komunikatu o błędzie jest to, że
hunspell
nie można się skonfigurować w oparciu o bieżące środowisko. Aby to naprawić, musisz skonfigurowaćhunspell
określoneispell
zmienne. Poniższy kod powinien wystarczyć do skonfigurowania hunspell dla słowników angielskich:Ważną częścią jest to
ispell-hunspell-dictionary-alist
, że należy wypełnić odpowiednią listę słowników, taką jak ta podana wispell-local-dictionary-alist
.Jest jednak sporo szczegółów dotyczących tej listy. Jeśli chcesz dowiedzieć się więcej na ten temat, przeczytaj
M-x describe-variable
ispell-local-dictionary-alist
.źródło
ispell-hunspel-dictionary-alist
. Zamiast(require 'flyspell)
zastanowić się(with-eval-after-load "ispell" ...)
Zainstaluj wszystkie potrzebne słowniki w miejscu, w którym hunspell wyszukuje; znajdź to z
hunspell -D
. Po zainstalowaniu to polecenie powinno je pokazać.W pliku inicjującym dodaj po prostu dodaj jeden z nich, np. Mam
en_GB
ien_US
zainstalowane słowniki. Mam w moim pliku init to:Po otwarciu Emacsa po prostu włącz
flyspell-mode
. Emacs powinien powiedzieć, że jest uruchomiony ispell z domyślnym słownikiem. Wen_GB
naszym przykładzie oznacza to działanie. Teraz, jeśli chcesz się przełączyć, po prostu zróbM-x ispell-change-dictionary
i podaj nową nazwę słownika npen_US
. Teraz drugi słownik powinien działać. O tym ponownie poinformuje Emacs, mówiąc, że zaczął ispell, ale tym razem zeen_US
słownikiem.źródło
Zakładając, że używasz najnowszej wersji Emacsa (24.4 lub nowszej, o ile pamiętam), wszystko, co musisz zrobić, to upewnić się, że używasz poprawnej nazwy słownika, a Emacs zrobi resztę automatycznie.
Głównym problemem jest to, że system Windows używa innego formatu opisu języka, na przykład brytyjski angielski nazywa się ENG , a angielski amerykański to ENU . Oznacza to, że pliki słowników powinny mieć nazwy ENU.dic i ENU.aff dla języka angielskiego w USA oraz ENG.dic i ENG.aff dla języka angielskiego w Wielkiej Brytanii.
Może być również konieczne posiadanie „domyślnego” słownika lub hunspell może nie być zbyt szczęśliwy. Możesz także ustawić zmienną środowiskową SŁOWNIK, aby wymusić ustawienie domyślne.
Niestety nie mogę ustalić, jak powinien się nazywać twój słownik norweski. Jeśli używasz norweskich ustawień regionalnych w systemie Windows, powinieneś być w stanie sprawdzić w Emacsie, oceniając:
Który pokaże ci ustawienie, którego używa Emacs.
źródło
To tylko przypuszczenie, ale może musisz powiedzieć, którego języka chcesz użyć jako „domyślnego”:
Wartość domyślna
ispell-dictionary
tonil
, więc może to być przyczyną Twojego problemu.źródło