diff --git a/reader/src/main/java/org/jline/reader/impl/InputRC.java b/reader/src/main/java/org/jline/reader/impl/InputRC.java index aaede894..9b3f43a9 100644 --- a/reader/src/main/java/org/jline/reader/impl/InputRC.java +++ b/reader/src/main/java/org/jline/reader/impl/InputRC.java @@ -21,6 +21,7 @@ import org.jline.reader.LineReader; import org.jline.reader.Macro; import org.jline.reader.Reference; +import org.jline.terminal.Terminal; import org.jline.utils.Log; public final class InputRC { @@ -44,18 +45,23 @@ public static void configure(LineReader reader, Reader r) throws IOException { } else { br = new BufferedReader(r); } - reader.getVariables().putIfAbsent(LineReader.EDITING_MODE, "emacs"); - reader.setKeyMap(LineReader.MAIN); - if ("vi".equals(reader.getVariable(LineReader.EDITING_MODE))) { - reader.getKeyMaps().put(LineReader.MAIN, reader.getKeyMaps().get(LineReader.VIINS)); - } else if ("emacs".equals(reader.getVariable(LineReader.EDITING_MODE))) { - reader.getKeyMaps().put(LineReader.MAIN, reader.getKeyMaps().get(LineReader.EMACS)); + + Terminal terminal = reader.getTerminal(); + + if (Terminal.TYPE_DUMB.equals(terminal.getType()) || Terminal.TYPE_DUMB_COLOR.equals(terminal.getType())) { + reader.getVariables().putIfAbsent(LineReader.EDITING_MODE, "dumb"); + } else { + reader.getVariables().putIfAbsent(LineReader.EDITING_MODE, "emacs"); } + + reader.setKeyMap(LineReader.MAIN); new InputRC(reader).parse(br); if ("vi".equals(reader.getVariable(LineReader.EDITING_MODE))) { reader.getKeyMaps().put(LineReader.MAIN, reader.getKeyMaps().get(LineReader.VIINS)); } else if ("emacs".equals(reader.getVariable(LineReader.EDITING_MODE))) { reader.getKeyMaps().put(LineReader.MAIN, reader.getKeyMaps().get(LineReader.EMACS)); + } else if ("dumb".equals(reader.getVariable(LineReader.EDITING_MODE))) { + reader.getKeyMaps().put(LineReader.MAIN, reader.getKeyMaps().get(LineReader.DUMB)); } }