Skip to content

Commit 4c6b01d

Browse files
committed
Support closing repl with Ctrl+D (closes #67)
1 parent 102013c commit 4c6b01d

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

src/javarepl/Main.java

+7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package javarepl;
22

3+
import com.googlecode.totallylazy.Exceptions;
34
import com.googlecode.totallylazy.Option;
45
import com.googlecode.totallylazy.Sequence;
56
import com.googlecode.totallylazy.Strings;
@@ -8,6 +9,8 @@
89
import javarepl.client.JavaREPLClient;
910
import javarepl.completion.CompletionCandidate;
1011
import javarepl.completion.CompletionResult;
12+
import jline.Terminal;
13+
import jline.TerminalFactory;
1114
import jline.console.ConsoleReader;
1215
import jline.console.CursorBuffer;
1316
import jline.console.completer.CandidateListCompletionHandler;
@@ -21,6 +24,7 @@
2124
import java.nio.file.Files;
2225
import java.util.*;
2326

27+
import static com.googlecode.totallylazy.Exceptions.captureException;
2428
import static com.googlecode.totallylazy.Files.fileOption;
2529
import static com.googlecode.totallylazy.Option.none;
2630
import static com.googlecode.totallylazy.Option.some;
@@ -167,6 +171,8 @@ private static Boolean printColors(String[] args) {
167171

168172
private static ExpressionReader expressionReaderFor(final JavaREPLClient client, Sequence<String> initialExpressions) throws IOException {
169173
return new ExpressionReader(new Function1<Sequence<String>, String>() {
174+
private static final char CTRL_C = (char) 3;
175+
private static final char CTRL_D = (char) 4;
170176
private final ConsoleReader consoleReader;
171177
private Sequence<String> expressions = initialExpressions;
172178

@@ -176,6 +182,7 @@ private static ExpressionReader expressionReaderFor(final JavaREPLClient client,
176182
consoleReader.setHistoryEnabled(true);
177183
consoleReader.setExpandEvents(false);
178184
consoleReader.addCompleter(clientCompleter());
185+
consoleReader.addTriggeredAction(CTRL_D, e -> System.exit(0));
179186
}
180187

181188
public String call(Sequence<String> lines) throws Exception {

0 commit comments

Comments
 (0)