Skip to content

Commit 21206fd

Browse files
coehlrichjonahgraham
authored andcommitted
Add support for ESC[#X to VT100
This escape sequence can be generated when using Powershell on Windows (and possibly other places too) to erase number of characters. Change-Id: I32405f51a3f91fd8653d44f2676a5c85b696ef99
1 parent 9cb730f commit 21206fd

File tree

4 files changed

+31
-2
lines changed

4 files changed

+31
-2
lines changed

terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/IVT100EmulatorBackend.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,4 +227,11 @@ public interface IVT100EmulatorBackend {
227227
* scroll region.
228228
*/
229229
void processReverseLineFeed();
230+
231+
/**
232+
* Replaces characters from the cursor position with space characters.
233+
*
234+
* @param n number of characters to replace
235+
*/
236+
void eraseCharacters(int n);
230237
}

terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100BackendTraceDecorator.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,4 +211,9 @@ public void processReverseLineFeed() {
211211
fBackend.processReverseLineFeed();
212212
}
213213

214+
@Override
215+
public void eraseCharacters(int n) {
216+
fWriter.println("eraseCharacters(" + n + ")"); //$NON-NLS-1$ //$NON-NLS-2$
217+
fBackend.eraseCharacters(n);
218+
}
214219
}

terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100Emulator.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -617,8 +617,7 @@ private void processAnsiCommandCharacter(char ansiCommandCharacter) {
617617

618618
case 'X':
619619
// Erase character.
620-
// Emacs, vi, and GNU readline don't seem to use this command, so we ignore
621-
// it for now.
620+
processAnsiCommand_X();
622621
break;
623622

624623
case 'Z':
@@ -1238,6 +1237,13 @@ private void processAnsiCommand_T() {
12381237
text.scrollDown(getAnsiParameter(0));
12391238
}
12401239

1240+
/**
1241+
* Erases n characters from cursor (default = 1 character)
1242+
*/
1243+
private void processAnsiCommand_X() {
1244+
text.eraseCharacters(getAnsiParameter(0));
1245+
}
1246+
12411247
private void processDecPrivateCommand_h() {
12421248
int param = getAnsiParameter(0);
12431249
switch (param) {

terminal/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorBackend.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,4 +490,15 @@ public void scrollDown(int n) {
490490
fTerminal.scroll(line, nLines, n);
491491
}
492492
}
493+
494+
@Override
495+
public void eraseCharacters(int n) {
496+
synchronized (fTerminal) {
497+
int line = toAbsoluteLine(fCursorLine);
498+
int end = Math.min(fCursorColumn + n, fColumns);
499+
for (int col = fCursorColumn; col < end; col++) {
500+
fTerminal.setChar(line, col, '\000', null);
501+
}
502+
}
503+
}
493504
}

0 commit comments

Comments
 (0)