flyspell はスペルチェックをしてくれるパッケージです。 Emacs 本体に組込まれているので、設定すれば素の Emacs でも使えます。
flyspell は外部のスペルチェックツールとやりとりをします。私は hunspell を使ってるので、それ向けに設定をしています。
;; for hunspell
(with-eval-after-load "ispell"
(setenv "DICTIONARY" "en_US")
(add-to-list 'ispell-skip-region-alist '("[^\000-\377]+")))
どうせ英語のスペルしかチェックしないので DICTIONARY には en_US を設定しています。また、日英が混在している文書でもスペルチェックが動くように
ispell-skip-region-alist
を設定しています
http://home.hatanaka.info/article/474728666.html を参考にしていますが、まあ多分 ASCII 以外をシカトしているのかなこれは
上の設定でも ASCII 以外を無視してそうだけどさらに flyspell-incorrect-hook
で incorrect 判定するのを ASCII にのみ限定しています。
;; Original: https://takaxp.github.io/init.html#orgdd65fc08
(defun my/flyspell-ignore-nonascii (beg end _info)
"incorrect判定をASCIIに限定"
(string-match "[^!-~]" (buffer-substring beg end)))
(add-hook 'flyspell-incorrect-hook #'my/flyspell-ignore-nonascii)
これは https://takaxp.github.io/init.html#orgdd65fc08 にある設定を持って来ています
flyspell-prog-mode
を使うと、文字列やコメントにのみ有効にできるようですがそのあたりはまだ試していません。