spacemacs flyspell遇到的一些问题

在spacemacs中使用flyspell的时候打开文档总是遇到

Error enabling Flyspell mode:
(Error: No word lists can be found for the language "zh_CN".)

后来谷歌了一下用了解决方法是:

;; use aspell as ispell backend
(setq-default ispell-program-name "aspell")  
;; use American English as ispell default dictionary  
(ispell-change-dictionary "american" t)

但是第一次打开文本的时候还是会遇到上述问题,不知道大家有没有什么建议呢?谢谢

2 个赞

Aspell 根据你的 Locale 选择语言和对应的词典,想要在中文环境(zh_CN)下检测英文,你需要明确地告诉 Aspell,通过命令行选项或者配置文件,Aspell 的文档里有解释,要是用命令行选项的话,可以把它丢到 ispell 的 ispell-extra-args 中去,估计像这样:

(setq ispell-extra-args '("--lang=en_US"))

不了解词典,我没作修改、用默认的也没遇到问题。

试试放在 user-config 中 如果还是不行的话在声明layer的地方用 :variables 声明。(相当于 在加载layer 之前 setq) 顺带ispell-change-dictionary用C-h f 查看源码的话会发现它只是设了一个变量。所以可以用:variables 赋值。 因为用手机所以不是很方便具体说明,先提供思路。


 (spell-checking :variables
                 ispell-program-name "aspell"
                 ispell-dictionary "american"
                 spell-checking-enable-by-default nil)
2 个赞

我在自己的package里面加了flyspell correct 然后下面是代码(你可以试试,我是抄的别人的): (defun lxeg0429/post-init-flyspell-correct () (use-package flyspell-correct :config (progn (setq ispell-program-name “aspell”) (setq exec-path '("~/Aspell/bin/")) (setq ispell-personal-dictionary “~/Aspell/en.pws”) (setq ispell-process-directory “~/Aspell/”) (setq ispell-alternate-dictionary “~/Aspell/english-words.txt”) (with-eval-after-load 'flyspell (define-key flyspell-mode-map (kbd “C-;”) 'flyspell-correct-previous-word-generic)) (setq flyspell-correct-interface 'flyspell-correct-ivy))))

对,我在layer中加了(spell-checking :variables spell-checking-enable-by-default nil),然后再手动开启就不会报那个错误了,并且打开文件的速度加快了一些,谢谢哈!

:sunglasses:灰常感谢

只需要再把默认spell-checking先关闭就可以了