diff options
Diffstat (limited to 'src/jline/src/main/java/scala/tools/jline/console/ConsoleReader.java')
-rw-r--r-- | src/jline/src/main/java/scala/tools/jline/console/ConsoleReader.java | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/src/jline/src/main/java/scala/tools/jline/console/ConsoleReader.java b/src/jline/src/main/java/scala/tools/jline/console/ConsoleReader.java index f493619bcd..7882fcc1db 100644 --- a/src/jline/src/main/java/scala/tools/jline/console/ConsoleReader.java +++ b/src/jline/src/main/java/scala/tools/jline/console/ConsoleReader.java @@ -754,11 +754,11 @@ public class ConsoleReader } private boolean previousWord() throws IOException { - while (isDelimiter(buf.current()) && (moveCursor(-1) != 0)) { + while (isDelimiter(buf.charLeftOfCursor()) && (moveCursor(-1) != 0)) { // nothing } - while (!isDelimiter(buf.current()) && (moveCursor(-1) != 0)) { + while (!isDelimiter(buf.charLeftOfCursor()) && (moveCursor(-1) != 0)) { // nothing } @@ -766,11 +766,11 @@ public class ConsoleReader } private boolean nextWord() throws IOException { - while (isDelimiter(buf.current()) && (moveCursor(1) != 0)) { + while (isDelimiter(buf.charAtCursor()) && (moveCursor(1) != 0)) { // nothing } - while (!isDelimiter(buf.current()) && (moveCursor(1) != 0)) { + while (!isDelimiter(buf.charAtCursor()) && (moveCursor(1) != 0)) { // nothing } @@ -778,11 +778,23 @@ public class ConsoleReader } private boolean deletePreviousWord() throws IOException { - while (isDelimiter(buf.current()) && backspace()) { + while (isDelimiter(buf.charLeftOfCursor()) && backspace()) { // nothing } - while (!isDelimiter(buf.current()) && backspace()) { + while (!isDelimiter(buf.charLeftOfCursor()) && backspace()) { + // nothing + } + + return true; + } + + private boolean deleteNextWord() throws IOException { + while (isDelimiter(buf.charAtCursor()) && deleteCurrentCharacter()) { + // nothing + } + + while (!isDelimiter(buf.charAtCursor()) && deleteCurrentCharacter()) { // nothing } @@ -1283,7 +1295,7 @@ public class ConsoleReader if (buf.buffer.length() == 0) { return null; } else { - deleteCurrentCharacter(); + success = deleteCurrentCharacter(); } break; @@ -1353,6 +1365,10 @@ public class ConsoleReader success = deletePreviousWord(); break; + case DELETE_NEXT_WORD: + success = deleteNextWord(); + break; + case PREV_WORD: success = previousWord(); break; |