如何忽略 Flyspell 中的 jQuery 選擇器?

如何忽略 Flyspell 中的 jQuery 選擇器?

我正在使用js2-modewithflyspell-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,要么是修改主模式,以便它為您的各種字串產生不同的面。

相關內容