diff options
Diffstat (limited to 'src/repl/scala/tools/nsc/interpreter/Completion.scala')
-rw-r--r-- | src/repl/scala/tools/nsc/interpreter/Completion.scala | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/src/repl/scala/tools/nsc/interpreter/Completion.scala b/src/repl/scala/tools/nsc/interpreter/Completion.scala index 9ad7f95fae..6f5194d2f9 100644 --- a/src/repl/scala/tools/nsc/interpreter/Completion.scala +++ b/src/repl/scala/tools/nsc/interpreter/Completion.scala @@ -13,35 +13,22 @@ import Completion._ */ trait Completion { def resetVerbosity(): Unit - def completer(): ScalaCompleter + def complete(buffer: String, cursor: Int): Candidates } object NoCompletion extends Completion { def resetVerbosity() = () - def completer() = NullCompleter + def complete(buffer: String, cursor: Int) = NoCandidates } object Completion { case class Candidates(cursor: Int, candidates: List[String]) { } val NoCandidates = Candidates(-1, Nil) - object NullCompleter extends ScalaCompleter { - def complete(buffer: String, cursor: Int): Candidates = NoCandidates - } - trait ScalaCompleter { - def complete(buffer: String, cursor: Int): Candidates - } - - def looksLikeInvocation(code: String) = ( - (code != null) - && (code startsWith ".") - && !(code == ".") - && !(code startsWith "./") - && !(code startsWith "..") - ) - object Forwarder { - def apply(forwardTo: () => Option[CompletionAware]): CompletionAware = new CompletionAware { - def completions(verbosity: Int) = forwardTo() map (_ completions verbosity) getOrElse Nil - override def follow(s: String) = forwardTo() flatMap (_ follow s) - } + // a leading dot plus something, but not ".." or "./", ignoring leading whitespace + private val dotlike = """\s*\.[^./].*""".r + def looksLikeInvocation(code: String) = code match { + case null => false // insurance + case dotlike() => true + case _ => false } } |