Skip to content

Commit f313001

Browse files
committed
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
1 parent baa6b44 commit f313001

File tree

7 files changed

+38
-30
lines changed

7 files changed

+38
-30
lines changed

.idea/libraries/jline.xml

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@
6161
<pathelement location="${tools.jar}"/>
6262

6363
<fileset dir="${basedir}/lib" includes="**/*.jar"/>
64+
<fileset dir="${dependencies}" includes="jline3.jar"/>
6465
<fileset dir="${dependencies}" includes="jansi.jar"/>
65-
<fileset dir="${dependencies}" includes="jline.jar"/>
6666
<fileset dir="${dependencies}" includes="javaslang-2.0.6.jar"/>
6767
<fileset dir="${dependencies}" includes="json-org.jar"/>
6868
<fileset dir="${dependencies}" includes="kotlinx-coroutines-core.jar"/>
@@ -400,7 +400,8 @@
400400
<zipfileset src="${idea.sdk}/lib/jna-platform.jar"/>
401401
<zipfileset src="${idea.sdk}/lib/oromatcher.jar" excludes="META-INF/jb/** META-INF/LICENSE"/>
402402
<zipfileset src="${idea.sdk}/jps/jps-model.jar"/>
403-
<zipfileset src="${dependencies}/jline.jar"/>
403+
<zipfileset src="${dependencies}/jline3.jar"/>
404+
<zipfileset src="${dependencies}/jansi.jar"/>
404405
<zipfileset src="${dependencies}/javaslang-2.0.6.jar"/>
405406
<zipfileset src="${dependencies}/json-org.jar"/>
406407
<zipfileset src="${protobuf.jar}"/>

compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/messages/ReplConsoleWriter.kt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,6 @@
1717
package org.jetbrains.kotlin.cli.jvm.repl.messages
1818

1919
class ReplConsoleWriter : ReplWriter {
20-
init {
21-
Runtime.getRuntime().addShutdownHook(object : Thread("Kotlin REPL shutdown hook") {
22-
override fun run() {
23-
// Print an empty line to make the command prompt start from the beginning of the line after REPL exits.
24-
// This is essentially a workaround of a jline2 bug.
25-
// TODO: remove this as soon as we update to jline3
26-
println()
27-
}
28-
})
29-
}
30-
3120
override fun printlnWelcomeMessage(x: String) = println(x)
3221
override fun printlnHelpMessage(x: String) = println(x)
3322
override fun outputCompileError(x: String) = println(x)
@@ -39,4 +28,4 @@ class ReplConsoleWriter : ReplWriter {
3928
override fun notifyIncomplete() {}
4029
override fun notifyCommandSuccess() {}
4130
override fun sendInternalErrorReport(x: String) {}
42-
}
31+
}

compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/reader/ConsoleReplCommandReader.kt

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,38 @@
1616

1717
package org.jetbrains.kotlin.cli.jvm.repl.reader
1818

19-
import jline.console.ConsoleReader
20-
import jline.console.history.FileHistory
2119
import org.jetbrains.kotlin.cli.jvm.repl.ReplFromTerminal
20+
import org.jline.reader.EndOfFileException
21+
import org.jline.reader.LineReader
22+
import org.jline.reader.LineReaderBuilder
23+
import org.jline.reader.UserInterruptException
24+
import org.jline.terminal.TerminalBuilder
2225
import java.io.File
2326

2427
class ConsoleReplCommandReader : ReplCommandReader {
25-
private val consoleReader = ConsoleReader("kotlin", System.`in`, System.`out`, null).apply {
26-
isHistoryEnabled = true
27-
expandEvents = false
28-
history = FileHistory(File(File(System.getProperty("user.home")), ".kotlin_history"))
29-
}
28+
private val lineReader = LineReaderBuilder.builder()
29+
.appName("kotlin")
30+
.terminal(TerminalBuilder.terminal())
31+
.variable(LineReader.HISTORY_FILE, File(File(System.getProperty("user.home")), ".kotlinc_history").absolutePath)
32+
.build()
33+
.apply {
34+
setOpt(LineReader.Option.DISABLE_EVENT_EXPANSION)
35+
}
3036

3137
override fun readLine(next: ReplFromTerminal.WhatNextAfterOneLine): String? {
3238
val prompt = if (next == ReplFromTerminal.WhatNextAfterOneLine.INCOMPLETE) "... " else ">>> "
33-
return consoleReader.readLine(prompt)
39+
try {
40+
return lineReader.readLine(prompt)
41+
}
42+
catch (e: UserInterruptException) {
43+
println("<interrupted>")
44+
System.out.flush()
45+
return ""
46+
}
47+
catch (e: EndOfFileException) {
48+
return null
49+
}
3450
}
3551

36-
override fun flushHistory() = (consoleReader.history as FileHistory).flush()
37-
}
52+
override fun flushHistory() = lineReader.history.save()
53+
}

compiler/compiler.pro

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
!org/apache/log4j/net/SMTP*,
1616
!org/apache/log4j/or/jms/MessageRenderer*,
1717
!org/jdom/xpath/Jaxen*,
18+
!org/jline/builtins/ssh/**,
1819
!org/mozilla/javascript/xml/impl/xmlbeans/**,
1920
!net/sf/cglib/**,
2021
!META-INF/maven**,
@@ -51,6 +52,7 @@ messages/**)
5152
-dontwarn org.w3c.dom.ElementTraversal
5253
-dontwarn javaslang.match.annotation.Unapply
5354
-dontwarn javaslang.match.annotation.Patterns
55+
-dontwarn org.jline.builtins.Nano$Buffer
5456

5557
-libraryjars '<rtjar>'
5658
-libraryjars '<jssejar>'

libraries/tools/kotlin-compiler-embeddable/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@
113113
<shadedPattern>${kotlin.relocated.package}.org.picocontainer</shadedPattern>
114114
</relocation>
115115
<relocation>
116-
<pattern>jline</pattern>
117-
<shadedPattern>${kotlin.relocated.package}.jline</shadedPattern>
116+
<pattern>org.jline</pattern>
117+
<shadedPattern>${kotlin.relocated.package}.org.jline</shadedPattern>
118118
</relocation>
119119
<relocation>
120120
<pattern>gnu</pattern>

update_dependencies.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,10 @@
191191
dest="${dependencies}/jflex/idea-flex.skeleton" usetimestamp="true"/>
192192

193193
<!-- jline -->
194-
<get-maven-library prefix="jline" lib="jline" version="2.12.1" target.jar.name.base="jline"/>
194+
<get-maven-library prefix="org/jline" lib="jline" version="3.3.1" target.jar.name.base="jline3"/>
195195

196196
<!-- jansi -->
197-
<get-maven-library prefix="org/fusesource/jansi" lib="jansi" version="1.11" target.jar.name.base="jansi"/>
197+
<get-maven-library prefix="org/fusesource/jansi" lib="jansi" version="1.16" target.jar.name.base="jansi"/>
198198

199199
<!-- Guava 19 sources-->
200200
<get-maven-library prefix="com/google/guava" lib="guava" version="19.0" bin="false"/>

0 commit comments

Comments
 (0)