2

私は非常に単純な拡張子scala.tools.nsc.interpreter.ILoopを作成していますが、いくつかの追加バインディングを追加する予定ですが、最も基本的な使用例でもタブ補完は機能していないようです。私がコードを入力すると、それは解釈され、期待どおりに動作しますが、タブの完成はしません。インタラクティブインタプリタ(REPL)でタブ補完を有効にするために定義する必要のあるものはありますか?ILoop Tab Completion

私のユースケースは、次のように簡単です:

val repl = new ILoop 
repl.process(new Settings { 
    usejavacp.value = true 
    deprecation.value = true 
}) 

は、私が使用する必要がありILoop以外のものはありますか?

+0

あなたは 'scala'または' sbt'またはいくつかの他のクラスパスの下で実行していますか? –

答えて

2

私は、モジュロ版の私の作品の種類。

$ scalacm myintp.scala && scalam myintp.Test 
Welcome to Scala 2.12.0-RC2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101). 
Type in expressions for evaluation. Or try :help. 

scala> 42 
res0: Int = 42 

scala> 42. 
!= < >>>   doubleValue isNaN   isValidShort shortValue  toDouble  toShort  
% << ^   floatValue isNegInfinity isWhole  signum   toFloat   unary_+  
& <= abs   floor   isPosInfinity longValue  to    toHexString  unary_-  
* == byteValue getClass  isValidByte  max   toBinaryString toInt   unary_~  
+ > ceil  intValue  isValidChar  min   toByte   toLong   underlying 
- >= compare  isInfinite isValidInt  round   toChar   toOctalString until   
/ >> compareTo isInfinity isValidLong  self   toDegrees  toRadians  |    

scala> 42.s 
self shortValue signum synchronized 

scala> 42.self 
res1: Int = 42 

scala> :quit 

出典:

$ cat myintp.scala 
package myintp 

import scala.tools.nsc._ 
import scala.tools.nsc.interpreter._ 

/* 2.12 */ 
object Test extends App { 
    val ss = new Settings { 
    usejavacp.value = true 
    deprecation.value = true 
    } 
    def repl = new ILoop { 
    override def createInterpreter(): Unit = { 
     super.createInterpreter() 
    } 
    } 
    repl process ss 
} 

/* 2.11 
object Test extends App { 
    def repl = new ILoop { 
    override def createInterpreter(): Unit = { 
     def binder: Unit = intp beQuietDuring { 
     intp directBind ("foo", "bar") 
     intp bind ("baz", "boo") 
     } 
     super.createInterpreter() 
     intp initialize binder 
    } 
    } 
    repl process new Settings 
} 
*/ 

/* 2.9 
object Test extends App { 
    def repl = new ILoop { 
    def binder: Unit = intp beQuietDuring { 
     intp bind ("baz", "boo") 
    } 
    override def loop(): Unit = { 
     binder 
     super.loop() 
    } 
    } 
    repl process new Settings 
} 
*/ 
+0

はもう少しで探検します.. –