如何在 Scala 的 MainGenericRunner REPL(交互式解释器)中启用 tab 补全?



我已经在 Java 项目1 中添加了一个 REPL(读取评估打印循环),该项目是使用 maven 构建的。REPL 可以使用脚本启动。相关部分是

declare -r GRADLE_CLASSPATH="$(gradle :minidns-repl:printClasspath --quiet |tail -n1)"
java 
    -Dscala.usejavacp=true 
    -classpath "${GRADLE_CLASSPATH}" 
    scala.tools.nsc.MainGenericRunner 
    -i minidns-repl/scala.repl

到目前为止,这有效。唯一缺少的可以使 REPL 完美的是选项卡完成。我从Scala那里知道它确实支持这一点。

如何为MainGenericRunner启用它?

1:随意测试 REPL:

git clone https://github.com/rtreffer/minidns.git 
  && cd minidns 
  && ./repl`

然后执行 DNS 查询,例如 c.query("wikipedia.org", TYPE.A)

尽管当前的scala repl现在具有自动完成功能,但它运行得不是很好。(这是Som-SNYTT提到的问题)。

如果您需要 repl 中的工作完成,最好的选择是菊石 REPL,它也具有比标准 repl 更多的功能。

注意:我还没有在 2.11.8 中测试选项卡完成,但看起来它们是从头开始重写的,看起来非常有希望。

处理-i的方式存在一个已知问题,这会破坏完成。

还有一个修复挂起,但我不知道它是否会进入 2.11.8,它也有一个全新的完成功能。

最新更新