在我的 init.el 中我有
(setenv "DICPATH" (concat "$HOME" ".hunspell-dics"))
(setq ispell-program-name "/usr/bin/hunspell")
(setq ispell-really-aspell nil)
(setq ispell-really-hunspell t)
(setq ispell-local-dictionary-alist
'(("russian"
"[АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]"
"^[АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]"
"[-]" nil ("-d" "ru_RU") nil utf-8)
("english"
"[A-Za-z]"
"[^A-Za-z]"
"[']" nil ("-d" "en_US") nil utf-8))
)
此配置看起来很正常,但 ispell-buffer 和 flyspell-buffer 的工作方式非常奇怪。例如,在 .tex 文件(latex 模式)中,我在文档环境中有一个序言和正文。如果我命令 ispell 检查缓冲区甚至检查区域,ispell 会让文档环境中的文本不被选中。文档的所有其他部分都经过 ispell 检查,没有任何问题。我仔细检查了 ispell 语言,发现设置正确(俄语)。那么问题是如何让 ispell-buffer/flyspell-buffer 检查从第一个字符串到最后一个字符串的整个文档?
例如
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\begin{document}
some text
\end{document}
带有“某些文本”的区域始终未选中。无论我使用什么语言或其中有什么 latex 命令。所有内容均保持不变。
PShunspell -d "ru_RU"
从终端正确检查文档。
答案1
明白了。出于某种原因,hunspell 在通过 emacs 工作时不使用 KOI8-R 中的词典。我用 utf-8 版本替换我的词典,一切恢复正常。