If you switch on ispell-query-replace-choices by M-x customize-option ispell uses query-replace if it finds multiple occurrences of the miss-spelled word after you choose a replacement.
After the first correction it will go to the next occurrence and query you with the menu of query-replace-regexp. The most important menu choices are:
! replace all ...
Customize the variable ispell-choices-win-default-height, which has a default value of 2. The doc-string states:
"The default size of the `*Choices*' window, including the mode line.
Must be greater than 1."
Emacs 26.3 contains an ispell-update-post-hook within ispell-command-loop; however, that hook runs in the working buffer just after the ispell-choices-buffer is created. I have never installed and/or used centaur-tabs, but it is my understanding (based upon a brief review of that library) that most of the code was copied straight from the original tabbar.el ...
It turns out the word list needs to be sorted (case insensitive), at least sorting it makes it work for me.
Assuming you use company mode and have a shortcut to activate it.
(global-set-key (kbd "C-SPC") 'company-complete-common)
;; Dictionary for completion.
To help answer this question, we can perform the following steps:
Load the flyspell.el library by typing M: aka M-x eval-expression, and then (require 'flyspell)
Locate the source code for the function flyspell-prog-mode by typing:
M-x find-function RET flyspell-prog-mode RET
Step two leads us to the source code of the function flyspell-prog-mode, which ...
There may be other ways of achieving that, but if you use flyspell then it has flyspell-auto-correct-previous-word which does just that. It's bound to C-; by default.
flyspell will put a wavy red line under spelling errors and so pressing C-; will have a go at correcting the first one before the current point, so you don't even need to move the point onto ...