> I'm looking for ideas/links for how to make autocomplete better and more predictable.
Consider taking a hint from every code editor. As the user types they are presented with a drop-down list of completions and corrections for the current word. This list hovers below the cursor and moves with it. The top item of the list is automatically selected such that hitting the completion key combo (often just the Tab key) replaces the current word with the selected item from the drop-down. The elements of the drop-down are sorted by likelihood of them being what the user meant to type and are navigated with up/down arrow keys. Hitting escape hides the completion drop-down and allows the user to use the up/down keys to move the cursor. At any time the user can press a key-combo to bring up a completion/correction drop-down for the word under the cursor.
I agree code editor autocomplete is a good design for searching through space of options efficiently. I'm not sure if that design works for "autocorrect" in general writing instead of code editing.
I guess you could popup a list of all possible matching "correct" words as you type, but that would likely get old fast for normal writing. You would always see the popup. Generally autocorrect (fixing typos and spellings) happens once you have finished typing a word. At that point the word is checked, and maybe autocorrected.
I think that basic design is good. Finish word, then autocorrect if there's a high quality match. The place where I think problems happen and maybe a better design can help include:
1. Clear indication of what has been autocorrected
2. Easy way to revert autocorrections
3. Don't pop up to much UI during this whole process
Consider taking a hint from every code editor. As the user types they are presented with a drop-down list of completions and corrections for the current word. This list hovers below the cursor and moves with it. The top item of the list is automatically selected such that hitting the completion key combo (often just the Tab key) replaces the current word with the selected item from the drop-down. The elements of the drop-down are sorted by likelihood of them being what the user meant to type and are navigated with up/down arrow keys. Hitting escape hides the completion drop-down and allows the user to use the up/down keys to move the cursor. At any time the user can press a key-combo to bring up a completion/correction drop-down for the word under the cursor.