Make a prefix go to the previous error
* lisp/textmodes/flyspell.el (flyspell-goto-next-error): Make a prefix find the previous error (bug#50443).
This commit is contained in:
parent
52f9ce5528
commit
7464640d2a
1 changed files with 30 additions and 21 deletions
|
@ -1714,25 +1714,32 @@ of a misspelled word removed when you've corrected it."
|
|||
;;*---------------------------------------------------------------------*/
|
||||
;;* flyspell-goto-next-error ... */
|
||||
;;*---------------------------------------------------------------------*/
|
||||
(defun flyspell-goto-next-error ()
|
||||
"Go to the next previously detected error.
|
||||
(defun flyspell-goto-next-error (&optional previous)
|
||||
"Go to the next error.
|
||||
If PREVIOUS (interactively, the prefix), go to the previous error
|
||||
instead.
|
||||
|
||||
In general FLYSPELL-GOTO-NEXT-ERROR must be used after
|
||||
FLYSPELL-BUFFER."
|
||||
(interactive)
|
||||
(interactive "P")
|
||||
(let ((pos (point))
|
||||
(max (point-max)))
|
||||
(if (and (eq (current-buffer) flyspell-old-buffer-error)
|
||||
(eq pos flyspell-old-pos-error))
|
||||
(progn
|
||||
(if (= flyspell-old-pos-error max)
|
||||
;; goto beginning of buffer
|
||||
(max (if previous (point-min) (point-max))))
|
||||
(when (and (eq (current-buffer) flyspell-old-buffer-error)
|
||||
(eq pos flyspell-old-pos-error))
|
||||
(if previous
|
||||
(if (= flyspell-old-pos-error max)
|
||||
(progn
|
||||
(message "Restarting from beginning of buffer")
|
||||
(goto-char (point-min)))
|
||||
(forward-word 1))
|
||||
(setq pos (point))))
|
||||
;; seek the next error
|
||||
(while (and (< pos max)
|
||||
(message "Restarting from end of the buffer")
|
||||
(goto-char (point-max)))
|
||||
(forward-word -1))
|
||||
(if (= flyspell-old-pos-error max)
|
||||
(progn
|
||||
(message "Restarting from beginning of buffer")
|
||||
(goto-char (point-min)))
|
||||
(forward-word 1)))
|
||||
(setq pos (point)))
|
||||
;; Seek the next error.
|
||||
(while (and (/= pos max)
|
||||
(let ((ovs (overlays-at pos))
|
||||
(r '()))
|
||||
(while (and (not r) (consp ovs))
|
||||
|
@ -1740,13 +1747,15 @@ FLYSPELL-BUFFER."
|
|||
(setq r t)
|
||||
(setq ovs (cdr ovs))))
|
||||
(not r)))
|
||||
(setq pos (1+ pos)))
|
||||
;; save the current location for next invocation
|
||||
(setq flyspell-old-pos-error pos)
|
||||
(setq flyspell-old-buffer-error (current-buffer))
|
||||
(setq pos (if previous (1- pos) (1+ pos))))
|
||||
(goto-char pos)
|
||||
(if (= pos max)
|
||||
(message "No more miss-spelled word!"))))
|
||||
(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))
|
||||
(when (= (point) max)
|
||||
(message "No more miss-spelled words"))))
|
||||
|
||||
;;*---------------------------------------------------------------------*/
|
||||
;;* flyspell-overlay-p ... */
|
||||
|
|
Loading…
Add table
Reference in a new issue