
Я использую js2-mode
with 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
либо изменить основной лад таким образом, чтобы он создавал разные лица для разных струн.