From: Eli Zaretskii Date: Thu, 3 Jun 2021 12:57:14 +0000 (+0300) Subject: More accurate highlighting of mis-spellings in Flyspell X-Git-Tag: emacs-28.0.90~2208 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=528e15775e1fa52f591681340f9d7772aa38b97e;p=emacs.git More accurate highlighting of mis-spellings in Flyspell * lisp/textmodes/flyspell.el (flyspell-word): Highlight only the misspelled word, not any extra characters after it. (Bug#5575) --- diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el index 8d2715f611c..ba48e5de21a 100644 --- a/lisp/textmodes/flyspell.el +++ b/lisp/textmodes/flyspell.el @@ -1263,14 +1263,27 @@ spell-check." (t (setq flyspell-word-cache-result nil) ;; Highlight the location as incorrect, - ;; including offset specified in POSS. + ;; including offset specified in POSS + ;; and only for the length of the + ;; misspelled word specified by POSS. (if flyspell-highlight-flag - (flyspell-highlight-incorrect-region - (if (and (consp poss) - (integerp (nth 1 poss))) - (+ start (nth 1 poss) -1) - start) - end poss) + (let ((hstart start) + (hend end) + offset misspelled) + (when (consp poss) + (setq misspelled (car poss) + offset (nth 1 poss)) + (if (integerp offset) + (setq hstart (+ start offset -1))) + ;; POSS includes the misspelled + ;; word; use that to figure out + ;; how many characters to highlight. + (if (stringp misspelled) + (setq hend + (+ hstart + (length misspelled))))) + (flyspell-highlight-incorrect-region + hstart hend poss)) (flyspell-notify-misspell word poss)) nil)))) ;; return to original location