Суть в том, что вы действительно не можете, по крайней мере, без серьезного взлома flyspell и / или вашего основного режима.
Из источника flyspell
;;;###autoload
(defun flyspell-prog-mode ()
"Turn on `flyspell-mode' for comments and strings."
(interactive)
(setq flyspell-generic-check-word-p 'flyspell-generic-progmode-verify)
(flyspell-mode 1)
(run-hooks 'flyspell-prog-mode-hook))
Соответствующей строкой является то, где мы устанавливаем для функции flyspell-generic-check-word-p
значение flyspell-generic-progmode-verify
что эта функция выглядит следующим образом
(defun flyspell-generic-progmode-verify ()
"Used for `flyspell-generic-check-word-p' in programming modes."
(let ((f (get-text-property (point) 'face)))
(memq f flyspell-prog-text-faces)))
Наконец, нам нужно взглянуть на flyspell-prog-text-faces
(defvar flyspell-prog-text-faces
'(font-lock-string-face font-lock-comment-face font-lock-doc-face)
"Faces corresponding to text in programming-mode buffers.")
Таким образом, как теперь видно, flyspell использует шрифт текста для проверки того, как он был напечатан (на самом деле это, вероятно, самый эффективный способ для flyspell справиться с этой проблемой). Это означает, что вам не нужно повторно анализировать ваш код).
Вы можете выбрать собственную версию flyspell-generic-progmode-verify
для загрузки в flyspell-generic-check-word-p
или изменить основной режим так, чтобы он создавал разные грани для различных строк.