【问题标题】:Using scala.tools.nsc.interpreter for intelligent Autocompletion使用 scala.tools.nsc.interpreter 进行智能自动补全
【发布时间】:2014-10-28 01:48:11
【问题描述】:

我期待为 Scala 制作自己的 IDE。它应该是一件容易的事,而不是一个完全成熟的东西。尽管如此,它应该具有的基本功能之一是智能自动完成(又名智能感知)。由于缺乏文档,我向这个社区寻求帮助。我期待制作一个基本的 sn-p 以便将其添加到我当前的代码中。这是我到目前为止所拥有的:

val engine = new ScriptEngineManager().getEngineByName("scala")
val settings = engine.asInstanceOf[scala.tools.nsc.interpreter.IMain].settings
// MyScalaClass is just any class in your project
settings.embeddedDefaults[TestClass]
settings.usejavacp.value = true
val reporter = new StoreReporter()
val compiler = new Global(settings, reporter)    
val r = new Response[Unit]
val af = AbstractFile.getFile("/home/me/test.txt")
val filePath = af.path
val content = scala.io.Source.fromFile(filePath).mkString
val sf = new BatchSourceFile(af, content)
val pos = new OffsetPosition(sf, content.length-1)
println("Content: ")
println (content)
println("Offset: "+content.length)

val allFiles = List(sf)
compiler.askReload(allFiles, r)

val response = new Response[List[compiler.Member]]
compiler.askTypeCompletion(pos, response)
//compiler.askScopeCompletion(pos, response)

val responseList = response.get(15000)

println("Size: "+responseList.size)
responseList.foreach(println _)

“responseList”很空……

【问题讨论】:

    标签: scala autocomplete intellisense interpreter read-eval-print-loop


    【解决方案1】:

    没有看到实际的测试代码很难。您可能需要在askTypeCompletion(基本上是类型成员)与askScopeCompletion 之间进行选择的一些逻辑。如果您的左侧没有“点”,askTypeCompletion 可能找不到任何东西。

    你可以看看tested.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 2013-10-26
      相关资源
      最近更新 更多