This is essentially what hippie-expand does in Emacs, but it also checks other sources as well. Quoting EmacsWiki:
"HippieExpand looks at the word before point and tries to expand it in various ways including expanding from a fixed list (like `‘expand-abbrev’’), expanding from matching text found in a buffer (like `‘dabbrev-expand’’) or expanding in ways defined by your own functions. Which of these it tries and in what order is controlled by a configurable list of functions."
Why make one key do two things? I always want TAB to indent, no matter what. I always want M-/ to complete, no matter what. Why would I want some heuristic to second-guess my intentions when I can make my intentions 100% clear by simply pressing a key?
Except that on linux tab does two things. When you are halfway through typing something on the command line tab finishes it for you (or at least tries). When you are typing in a text editor, usually tab indents. Being clever and doing both at the same time makes tons of sense to me. I used the gVim smart tab complete for a while and I never had issues wanting to do one, but getting the other.
It's excellent for long variable or function names, and you don't have to preload a list of the ones you want.
After using it for a while I miss it when typing english in a textbox like this one.