summaryrefslogtreecommitdiff
path: root/src/jline/src/main/java/scala/tools/jline/console/ConsoleReader.java
diff options
context:
space:
mode:
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.java30
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;