;; Loop over incorrect words.
(while (re-search-forward "\\([^\n]+\\)\n" (point-max) t)
;; Bind WORD to the next one.
- (let ((word (match-string 1)))
+ (let ((word (match-string 1)) (wordpos (point)))
;; Here there used to be code to see if WORD is the same
;; as the previous iteration, and count the number of consecutive
;; identical words, and the loop below would search for that many.
(with-current-buffer flyspell-large-region-buffer
(goto-char flyspell-large-region-beg)
(let ((keep t))
- (while (and keep
- (search-forward word flyspell-large-region-end t))
- (goto-char (- (point) 1))
- (setq keep (flyspell-word)))
- (setq flyspell-large-region-beg (point))))))
+ (while keep
+ (if (search-forward word
+ flyspell-large-region-end t)
+ (progn
+ (setq flyspell-large-region-beg (point))
+ (goto-char (- (point) 1))
+ (setq keep (flyspell-word)))
+ (error "Bug: misspelled word `%s' (output pos %d) not found in buffer"
+ word wordpos)))))))
;; we are done
(if flyspell-issue-message-flag (message "Spell Checking completed.")))
;; Kill and forget the buffer with the list of incorrect words.
(if ispell-local-dictionary
(setq ispell-dictionary ispell-local-dictionary))
(setq args (ispell-get-ispell-args))
+ (if (eq ispell-parser 'tex)
+ (setq args (cons "-t" args)))
(if ispell-dictionary ; use specified dictionary
(setq args
(append (list "-d" ispell-dictionary) args)))