
我正在使用js2-mode
withflyspell-prog-mode
來檢查註釋和字串的拼寫。
使用 jQuery 時,您可以使用$("#something")
或 之類的選擇器$('something else')
。我可以將 Flyspell 配置為不對這些字串進行拼字檢查嗎?基本上,任何包含在$(
和中的東西)
。處理起來jQuery(
也)
很酷,但我可能可以做到。
我發現了這個問題,它很相似,但我自己無法適應。如何在 Flyspell 模式和 Flyspell 緩衝區中排除 {{{ ... }}}?
謝謝!
答案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
,要么是修改主模式,以便它為您的各種字串產生不同的面。