Update to jline 3.3.1 and jansi 1.16
Note that the history file name was changed (.kotlin_history -> .kotlinc_history) because the history is now stored in a different (incompatible) format. #KT-11369 Fixed
This commit is contained in:
Generated
+2
-2
@@ -4,11 +4,11 @@
|
||||
<root url="file://$PROJECT_DIR$/annotations" />
|
||||
</ANNOTATIONS>
|
||||
<CLASSES>
|
||||
<root url="jar://$PROJECT_DIR$/dependencies/jline.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/dependencies/jline3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$PROJECT_DIR$/dependencies/jline-sources.jar!/" />
|
||||
<root url="jar://$PROJECT_DIR$/dependencies/jline3-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
@@ -61,8 +61,8 @@
|
||||
<pathelement location="${tools.jar}"/>
|
||||
|
||||
<fileset dir="${basedir}/lib" includes="**/*.jar"/>
|
||||
<fileset dir="${dependencies}" includes="jline3.jar"/>
|
||||
<fileset dir="${dependencies}" includes="jansi.jar"/>
|
||||
<fileset dir="${dependencies}" includes="jline.jar"/>
|
||||
<fileset dir="${dependencies}" includes="javaslang-2.0.6.jar"/>
|
||||
<fileset dir="${dependencies}" includes="json-org.jar"/>
|
||||
<fileset dir="${dependencies}" includes="kotlinx-coroutines-core.jar"/>
|
||||
@@ -400,7 +400,8 @@
|
||||
<zipfileset src="${idea.sdk}/lib/jna-platform.jar"/>
|
||||
<zipfileset src="${idea.sdk}/lib/oromatcher.jar" excludes="META-INF/jb/** META-INF/LICENSE"/>
|
||||
<zipfileset src="${idea.sdk}/jps/jps-model.jar"/>
|
||||
<zipfileset src="${dependencies}/jline.jar"/>
|
||||
<zipfileset src="${dependencies}/jline3.jar"/>
|
||||
<zipfileset src="${dependencies}/jansi.jar"/>
|
||||
<zipfileset src="${dependencies}/javaslang-2.0.6.jar"/>
|
||||
<zipfileset src="${dependencies}/json-org.jar"/>
|
||||
<zipfileset src="${protobuf.jar}"/>
|
||||
|
||||
@@ -17,17 +17,6 @@
|
||||
package org.jetbrains.kotlin.cli.jvm.repl.messages
|
||||
|
||||
class ReplConsoleWriter : ReplWriter {
|
||||
init {
|
||||
Runtime.getRuntime().addShutdownHook(object : Thread("Kotlin REPL shutdown hook") {
|
||||
override fun run() {
|
||||
// Print an empty line to make the command prompt start from the beginning of the line after REPL exits.
|
||||
// This is essentially a workaround of a jline2 bug.
|
||||
// TODO: remove this as soon as we update to jline3
|
||||
println()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
override fun printlnWelcomeMessage(x: String) = println(x)
|
||||
override fun printlnHelpMessage(x: String) = println(x)
|
||||
override fun outputCompileError(x: String) = println(x)
|
||||
@@ -39,4 +28,4 @@ class ReplConsoleWriter : ReplWriter {
|
||||
override fun notifyIncomplete() {}
|
||||
override fun notifyCommandSuccess() {}
|
||||
override fun sendInternalErrorReport(x: String) {}
|
||||
}
|
||||
}
|
||||
|
||||
+26
-10
@@ -16,22 +16,38 @@
|
||||
|
||||
package org.jetbrains.kotlin.cli.jvm.repl.reader
|
||||
|
||||
import jline.console.ConsoleReader
|
||||
import jline.console.history.FileHistory
|
||||
import org.jetbrains.kotlin.cli.jvm.repl.ReplFromTerminal
|
||||
import org.jline.reader.EndOfFileException
|
||||
import org.jline.reader.LineReader
|
||||
import org.jline.reader.LineReaderBuilder
|
||||
import org.jline.reader.UserInterruptException
|
||||
import org.jline.terminal.TerminalBuilder
|
||||
import java.io.File
|
||||
|
||||
class ConsoleReplCommandReader : ReplCommandReader {
|
||||
private val consoleReader = ConsoleReader("kotlin", System.`in`, System.`out`, null).apply {
|
||||
isHistoryEnabled = true
|
||||
expandEvents = false
|
||||
history = FileHistory(File(File(System.getProperty("user.home")), ".kotlin_history"))
|
||||
}
|
||||
private val lineReader = LineReaderBuilder.builder()
|
||||
.appName("kotlin")
|
||||
.terminal(TerminalBuilder.terminal())
|
||||
.variable(LineReader.HISTORY_FILE, File(File(System.getProperty("user.home")), ".kotlinc_history").absolutePath)
|
||||
.build()
|
||||
.apply {
|
||||
setOpt(LineReader.Option.DISABLE_EVENT_EXPANSION)
|
||||
}
|
||||
|
||||
override fun readLine(next: ReplFromTerminal.WhatNextAfterOneLine): String? {
|
||||
val prompt = if (next == ReplFromTerminal.WhatNextAfterOneLine.INCOMPLETE) "... " else ">>> "
|
||||
return consoleReader.readLine(prompt)
|
||||
try {
|
||||
return lineReader.readLine(prompt)
|
||||
}
|
||||
catch (e: UserInterruptException) {
|
||||
println("<interrupted>")
|
||||
System.out.flush()
|
||||
return ""
|
||||
}
|
||||
catch (e: EndOfFileException) {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
override fun flushHistory() = (consoleReader.history as FileHistory).flush()
|
||||
}
|
||||
override fun flushHistory() = lineReader.history.save()
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
!org/apache/log4j/net/SMTP*,
|
||||
!org/apache/log4j/or/jms/MessageRenderer*,
|
||||
!org/jdom/xpath/Jaxen*,
|
||||
!org/jline/builtins/ssh/**,
|
||||
!org/mozilla/javascript/xml/impl/xmlbeans/**,
|
||||
!net/sf/cglib/**,
|
||||
!META-INF/maven**,
|
||||
@@ -51,6 +52,7 @@ messages/**)
|
||||
-dontwarn org.w3c.dom.ElementTraversal
|
||||
-dontwarn javaslang.match.annotation.Unapply
|
||||
-dontwarn javaslang.match.annotation.Patterns
|
||||
-dontwarn org.jline.builtins.Nano$Buffer
|
||||
|
||||
-libraryjars '<rtjar>'
|
||||
-libraryjars '<jssejar>'
|
||||
|
||||
@@ -113,8 +113,8 @@
|
||||
<shadedPattern>${kotlin.relocated.package}.org.picocontainer</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>jline</pattern>
|
||||
<shadedPattern>${kotlin.relocated.package}.jline</shadedPattern>
|
||||
<pattern>org.jline</pattern>
|
||||
<shadedPattern>${kotlin.relocated.package}.org.jline</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>gnu</pattern>
|
||||
|
||||
@@ -191,10 +191,10 @@
|
||||
dest="${dependencies}/jflex/idea-flex.skeleton" usetimestamp="true"/>
|
||||
|
||||
<!-- jline -->
|
||||
<get-maven-library prefix="jline" lib="jline" version="2.12.1" target.jar.name.base="jline"/>
|
||||
<get-maven-library prefix="org/jline" lib="jline" version="3.3.1" target.jar.name.base="jline3"/>
|
||||
|
||||
<!-- jansi -->
|
||||
<get-maven-library prefix="org/fusesource/jansi" lib="jansi" version="1.11" target.jar.name.base="jansi"/>
|
||||
<get-maven-library prefix="org/fusesource/jansi" lib="jansi" version="1.16" target.jar.name.base="jansi"/>
|
||||
|
||||
<!-- Guava 19 sources-->
|
||||
<get-maven-library prefix="com/google/guava" lib="guava" version="19.0" bin="false"/>
|
||||
|
||||
Reference in New Issue
Block a user