Skip to content
This repository
Fetching contributors…

Cannot retrieve contributors at this time

file 51 lines (44 sloc) 1.366 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
/* NSC -- new Scala compiler
* Copyright 2005-2011 LAMP/EPFL
* @author Paul Phillips
*/

package scala.tools.nsc
package interpreter

import Completion._

/** An implementation-agnostic completion interface which makes no
* reference to the jline classes.
*/
trait Completion {
  type ExecResult
  def resetVerbosity(): Unit
  def completer(): ScalaCompleter
}
object NoCompletion extends Completion {
  type ExecResult = Nothing
  def resetVerbosity() = ()
  def completer() = NullCompleter
}

object Completion {
  def empty: Completion = NoCompletion

  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)
    }
  }
}
Something went wrong with that request. Please try again.