I believe completion could be made to work with a wildcards at the end and at the cursor. In other words, if the cursor is in the middle of a word, and asked to complete it could find completions by adding character at point as well as at the end. This is much like new emacs tab completion. e.g. if
| indicates cursor position, then
Sym|Group could expand to
SymmetricGroup SymmetricGroupAlgebra SymmetricGroupRepresentation SymmetricGroupRepresentations
SymGroup| couldn't expand to anything.