Fix excluded faces being spell-fu checked anyway

Due to spell-fu--faces-at-point conducting face detection that doesn't
penetrate overlays. This should be PRed/reported upstream at some point.
This commit is contained in:
Henrik Lissner 2021-03-27 22:05:54 -04:00
parent d4eb7e31ac
commit 699e18b7f1

View file

@ -135,7 +135,22 @@
(cmds! (memq 'spell-fu-incorrect-face (face-at-point nil t)) (cmds! (memq 'spell-fu-incorrect-face (face-at-point nil t))
#'+spell/correct)) #'+spell/correct))
;; TODO PR this fix upstream!
(defadvice! +spell--fix-face-detection-a (orig-fn &rest args)
"`spell-fu--faces-at-point' uses face detection that won't penetrary
overlays (like `hl-line'). This makes `spell-fu-faces-exclude' demonstrably less
useful when it'll still spellcheck excluded faces on any line that `hl-line' is
displayed on, even momentarily."
:around #'spell-fu--faces-at-point
(letf! (defun get-char-property (pos prop &optional obj)
(or (plist-get (text-properties-at pos) prop)
(funcall get-char-property pos prop obj)))
(apply orig-fn args)))
(defadvice! +spell--create-word-dict-a (_word words-file _action) (defadvice! +spell--create-word-dict-a (_word words-file _action)
"Prevent `spell-fu--word-add-or-remove' from throwing non-existant
directory errors when writing a personal dictionary file (by creating the
directory first)."
:before #'spell-fu--word-add-or-remove :before #'spell-fu--word-add-or-remove
(unless (file-exists-p words-file) (unless (file-exists-p words-file)
(make-directory (file-name-directory words-file) t) (make-directory (file-name-directory words-file) t)