scala.tools.nsc.interpreter.JLineCompletion
(jLineTabCompletion: StringAdd).self
(jLineTabCompletion: StringFormat).self
(jLineTabCompletion: ArrowAssoc[JLineTabCompletion]).x
(Since version 2.10.0) Use leftOfArrow
instead
(jLineTabCompletion: Ensuring[JLineTabCompletion]).x
(Since version 2.10.0) Use resultOfEnsuring
instead
This gets a little bit hairy. It's no small feat delegating everything and also keeping track of exactly where the cursor is and where it's supposed to end up. The alternatives mechanism is a little hacky: if there is an empty string in the list of completions, that means we are expanding a unique completion, so don't update the "last" buffer because it'll be wrong.