我正在使用js2-mode
来flyspell-prog-mode
对注释和字符串进行拼写检查。
使用 jQuery 时,可以使用诸如$("#something")
或 之类的选择器$('something else')
。我可以配置 flyspell 不对这些字符串进行拼写检查吗?基本上,任何包裹在$(
和中的字符串都可以)
。处理jQuery(
和)
也很酷,但我可能可以做到。
我发现了这个问题,它很类似,但我自己无法适应它。如何在 flyspell-mode 和 flyspell-buffer 中排除 {{{... }}}?
谢谢!
答案1
简而言之,你真的不能,至少在没有对 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
,要么是修改主要模式,以便为您的各种字符串生成不同的面孔。