From e4f44d77543061f0a6842dc65edc05a463e34057 Mon Sep 17 00:00:00 2001 From: Dmitry Kovanikov Date: Fri, 18 Sep 2015 18:42:17 +0300 Subject: [PATCH] [cli-repl] Small refactoring Add `flushHistory` to ReplCommandReader Pass `WhatNextAfterOneLine` to `readLine` --- .../jetbrains/kotlin/cli/jvm/repl/ReplFromTerminal.java | 9 +++------ .../cli/jvm/repl/reader/ConsoleReplCommandReader.kt | 9 ++++++--- .../kotlin/cli/jvm/repl/reader/IdeReplCommandReader.kt | 5 ++++- .../kotlin/cli/jvm/repl/reader/ReplCommandReader.kt | 5 ++++- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/ReplFromTerminal.java b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/ReplFromTerminal.java index 796ba69e256..942e56f0219 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/ReplFromTerminal.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/ReplFromTerminal.java @@ -136,9 +136,7 @@ public class ReplFromTerminal { } finally { try { - if (commandReader instanceof ConsoleReplCommandReader) { - ((ConsoleReplCommandReader) commandReader).getFileHistory().flush(); - } + commandReader.flushHistory(); } catch (Exception e) { replErrorLogger.logException(e); @@ -146,7 +144,7 @@ public class ReplFromTerminal { } } - private enum WhatNextAfterOneLine { + public enum WhatNextAfterOneLine { READ_LINE, INCOMPLETE, QUIT, @@ -155,8 +153,7 @@ public class ReplFromTerminal { @NotNull private WhatNextAfterOneLine one(@NotNull WhatNextAfterOneLine next) { try { - String prompt = next == WhatNextAfterOneLine.INCOMPLETE ? "... " : ">>> "; - String line = commandReader.readLine(prompt); + String line = commandReader.readLine(next); if (line == null) { return WhatNextAfterOneLine.QUIT; diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/reader/ConsoleReplCommandReader.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/reader/ConsoleReplCommandReader.kt index 29f52ded962..5434567bcb9 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/reader/ConsoleReplCommandReader.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/reader/ConsoleReplCommandReader.kt @@ -18,6 +18,7 @@ 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 java.io.File public class ConsoleReplCommandReader : ReplCommandReader { @@ -27,8 +28,10 @@ public class ConsoleReplCommandReader : ReplCommandReader { history = FileHistory(File(File(System.getProperty("user.home")), ".kotlin_history")) } - public val fileHistory: FileHistory - get() = consoleReader.history as FileHistory + override fun readLine(next: ReplFromTerminal.WhatNextAfterOneLine): String? { + val prompt = if (next == ReplFromTerminal.WhatNextAfterOneLine.INCOMPLETE) "... " else ">>> "; + return consoleReader.readLine(prompt) + } - override fun readLine(prompt: String?) = consoleReader.readLine(prompt) + override fun flushHistory() = (consoleReader.history as FileHistory).flush() } \ No newline at end of file diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/reader/IdeReplCommandReader.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/reader/IdeReplCommandReader.kt index 6e257555357..ba240910786 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/reader/IdeReplCommandReader.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/reader/IdeReplCommandReader.kt @@ -16,6 +16,9 @@ package org.jetbrains.kotlin.cli.jvm.repl.reader +import org.jetbrains.kotlin.cli.jvm.repl.ReplFromTerminal + public class IdeReplCommandReader : ReplCommandReader { - override fun readLine(prompt: String?) = readLine() + override fun readLine(next: ReplFromTerminal.WhatNextAfterOneLine) = readLine() + override fun flushHistory() = Unit } \ No newline at end of file diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/reader/ReplCommandReader.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/reader/ReplCommandReader.kt index 4a842e74819..3fd0bda9f6f 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/reader/ReplCommandReader.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/reader/ReplCommandReader.kt @@ -16,6 +16,9 @@ package org.jetbrains.kotlin.cli.jvm.repl.reader +import org.jetbrains.kotlin.cli.jvm.repl.ReplFromTerminal + public interface ReplCommandReader { - public fun readLine(prompt: String?): String? + public fun readLine(next: ReplFromTerminal.WhatNextAfterOneLine): String? + public fun flushHistory() } \ No newline at end of file