From 21f9295aa9a54c58665280ff36d544acb56bd346 Mon Sep 17 00:00:00 2001 From: Kristoffer Balintona Date: Wed, 26 Nov 2025 08:04:22 -0600 Subject: [PATCH] Improve performance of 'flyspell-goto-next-error' * lisp/textmodes/flyspell.el (flyspell-goto-next-error): Use 'next-overlay-change' and 'previous-overlay-change'. (Bug#79933) --- lisp/textmodes/flyspell.el | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el index d62c3fd135d..ac8061e65dd 100644 --- a/lisp/textmodes/flyspell.el +++ b/lisp/textmodes/flyspell.el @@ -1748,17 +1748,11 @@ FLYSPELL-BUFFER." (setq pos (point))) ;; Seek the next error. (while (and (/= pos max) - (let ((ovs (overlays-at pos)) - (r '())) - (while (and (not r) (consp ovs)) - (if (flyspell-overlay-p (car ovs)) - (setq r t) - (setq ovs (cdr ovs)))) - (not r))) - (setq pos (if previous (1- pos) (1+ pos)))) + (setq pos (if previous + (previous-overlay-change pos) + (next-overlay-change pos))) + (not (any #'flyspell-overlay-p (overlays-at pos))))) (goto-char pos) - (when previous - (forward-word -1)) ;; Save the current location for next invocation. (setq flyspell-old-pos-error (point)) (setq flyspell-old-buffer-error (current-buffer))