Eu tenho meus dicionários de hunspell em C:\hunspell\
. Ele contém .dic
e .aff
arquivos para três línguas: en_GB
, en_US
, e nb_NO
. As descrições que encontro na web sobre como fazer o hellspell funcionar no Emacs me deixam confusa.
Qual é o código mínimo necessário no meu arquivo init para poder usar esses três dicionários de hunspell no Emacs?
Eu tentei o seguinte código sugerido por um site:
(add-to-list 'exec-path "C:/hunspell/bin/")
(setq ispell-program-name (locate-file "hunspell"
exec-path exec-suffixes 'file-executable-p))
Mas, ao desejar alterar o dicionário M-x ispell-change-dictionary
, recebo a seguinte mensagem:
ispell-phaf: nenhuma entrada correspondente para nil.
microsoft-windows
hunspell
myotis
fonte
fonte
Respostas:
Configuração do Emacs:
Configuração do dicionário Hunspell:
Execute
hunspell -D
na janela do que listará os diretórios hunspell procurando por dicionários. Copie seus dicionários para esse diretório. Essa é a configuração mínima que você precisa.Consulte http://blog.binchen.org/posts/what-s-the-best-spell-check-set-up-in-emacs.html para obter mais detalhes técnicos.
fonte
use-package
é(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))))
Eu me deparei com esse problema há algum tempo. Se bem me lembro, o motivo pelo qual você recebe essa mensagem de erro é porque
hunspell
não consegue se configurar com base no ambiente atual. Portanto, para corrigi-lo, você precisa configurar as variáveishunspell
específicasispell
. O código a seguir deve ser suficiente para configurar o hunspell para dicionários em inglês:A parte importante é que
ispell-hunspell-dictionary-alist
, ela deve ser preenchida com uma lista de dicionário adequada, como a que é fornecida emispell-local-dictionary-alist
.No entanto, existem alguns detalhes em torno desta lista. Se você quiser saber mais sobre isso, fique à vontade para ler
M-x describe-variable
ispell-local-dictionary-alist
.fonte
ispell-hunspel-dictionary-alist
. Em vez de(require 'flyspell)
você pode considerar(with-eval-after-load "ispell" ...)
Instale todos os dicionários que você deseja no local em que a hunspell pesquisa; encontre isso com
hunspell -D
. Uma vez instalado, este comando deve mostrá-los.No arquivo init, adicione apenas um deles. Por exemplo, eu tenho
en_GB
een_US
dicionários instalados. Eu tenho, no meu arquivo init, este:Ao abrir o Emacs, basta ativar
flyspell-mode
. O Emacs deve dizer que é iniciado ispell com o dicionário padrão. Isso significa queen_GB
está em ação, por exemplo. Agora, se você quiser mudar, basta fazerM-x ispell-change-dictionary
e fornecer o novo nome do dicionário, por exemploen_US
. Agora o outro dicionário deve estar em ação. Isso, novamente, será notificado pelo Emacs, dizendo que ele começou com ispell, mas desta vez com oen_US
dicionário.fonte
Supondo que você esteja usando uma versão recente do Emacs (24.4 ou superior, pelo que me lembro), tudo o que você precisa fazer é ter certeza de que está usando o nome correto do dicionário, e o Emacs fará o resto automaticamente.
O principal problema é que o Windows usa um formato de descrição de idioma diferente, por exemplo, o inglês britânico é chamado ENG e o inglês dos EUA é ENU . Isso significa que seus arquivos de dicionário devem se chamar ENU.dic e ENU.aff para inglês dos EUA e ENG.dic e ENG.aff para inglês britânico.
Também pode ser necessário ter um dicionário "padrão" ou a hunspell pode não estar muito feliz. Você também pode definir a variável de ambiente DICTIONARY para forçar um padrão.
Infelizmente, não consigo descobrir como o seu dicionário norueguês deve ser chamado. Se você estiver usando o código de idioma norueguês no Windows, poderá verificar no Emacs avaliando:
O que mostrará a configuração que o Emacs está usando.
fonte
Isso é apenas um palpite, mas talvez você precise dizer qual idioma você gostaria de usar como o "padrão":
O valor padrão de
ispell-dictionary
énil
, portanto, pode ser que essa seja a causa do seu problema.fonte