Skip to content

Commit 2bfec49

Browse files
fabrizioiannettijonahgraham
authored andcommitted
Bug 572938 [terminal] reverse linefeed: Honour the scrolling region
The reverse linefeed should scroll down when the cursor is on the first line of the scrolling region, not only on the first screen line Change-Id: I628ab135d48d868bc8e3eacd2ea57dda948873a8 Signed-off-by: Fabrizio Iannetti <[email protected]>
1 parent ac217c8 commit 2bfec49

File tree

4 files changed

+29
-3
lines changed

4 files changed

+29
-3
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,4 +219,12 @@ public interface IVT100EmulatorBackend {
219219
* @param lines number of lines to scroll
220220
*/
221221
void scrollDown(int lines);
222+
223+
/**
224+
* Process a reverse line feed/reverse index.
225+
*
226+
* The content is scrolled down if the cursor is at the top of the
227+
* scroll region.
228+
*/
229+
void processReverseLineFeed();
222230
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,4 +205,10 @@ public void scrollDown(int lines) {
205205
fBackend.scrollDown(lines);
206206
}
207207

208+
@Override
209+
public void processReverseLineFeed() {
210+
fWriter.println("processReverseLineFeed()"); //$NON-NLS-1$
211+
fBackend.processReverseLineFeed();
212+
}
213+
208214
}

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -398,9 +398,7 @@ private void processNewText() throws IOException {
398398
case 'M':
399399
// Reverse line feed
400400
ansiState = ANSISTATE_INITIAL;
401-
if (text.getCursorLine() == 0)
402-
text.scrollDown(1);
403-
moveCursorUp(1);
401+
text.processReverseLineFeed();
404402
break;
405403

406404
default:

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,20 @@ public void processNewline() {
367367
}
368368
}
369369

370+
private void doReverseLineFeed() {
371+
if (fCursorLine == fScrollRegion.getTopLine())
372+
scrollDown(1);
373+
else
374+
setCursorLine(fCursorLine - 1);
375+
}
376+
377+
@Override
378+
public void processReverseLineFeed() {
379+
synchronized (fTerminal) {
380+
doReverseLineFeed();
381+
}
382+
}
383+
370384
@Override
371385
public int getCursorLine() {
372386
synchronized (fTerminal) {

0 commit comments

Comments
 (0)