Skip to content

Commit b5f794f

Browse files
Jorik De Waenjavier-godoy
authored andcommitted
#50: Improve handling of the prompt in PreserveStateAddon
1 parent cb17fa8 commit b5f794f

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

src/main/java/com/flowingcode/vaadin/addons/xterm/PreserveStateAddon.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,13 @@ public PreserveStateAddon(XTerm xterm) {
8787
if (wasDetachedOnce) {
8888
optionsMemoizer.apply();
8989
xterm.write(scrollbackBuffer.toString());
90+
xterm.writePrompt();
9091
}
9192
});
9293
xterm.addDetachListener(e -> wasDetachedOnce = true);
9394
xterm.addLineListener(e -> {
95+
// add the prompt to the scrollback buffer
96+
scrollbackBuffer.append(xterm.getPrompt());
9497
// also make sure that any user input ends up in the scrollback buffer.
9598
scrollbackBuffer.append(e.getLine());
9699
scrollbackBuffer.append('\n');
@@ -218,7 +221,6 @@ public String getPrompt() {
218221

219222
public void writePrompt() {
220223
xterm.writePrompt();
221-
scrollbackBuffer.append(xterm.getPrompt());
222224
}
223225

224226
public String getScrollbackBuffer() {

src/test/java/com/flowingcode/vaadin/addons/xterm/PreserveStateAddonTest.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.flowingcode.vaadin.addons.xterm;
22

3+
import com.vaadin.flow.component.Component;
4+
import com.vaadin.flow.component.ComponentUtil;
35
import org.junit.Test;
46

57
import static org.junit.Assert.assertEquals;
@@ -20,14 +22,23 @@ public void writeGoesToScrollbackBuffer() {
2022
}
2123

2224
@Test
23-
public void promptGoesToScrollbackBuffer() {
24-
final PreserveStateAddon addon = new PreserveStateAddon(new XTerm());
25+
public void promptGoesToScrollbackBufferAfterSubmit() {
26+
XTerm xterm = new XTerm();
27+
final PreserveStateAddon addon = new PreserveStateAddon(xterm);
28+
Component component = xterm.getElement().getComponent().get();
29+
2530
addon.setPrompt("a> ");
2631
addon.writePrompt();
27-
addon.writeln("bar");
32+
ComponentUtil.fireEvent(component, new ITerminalConsole.LineEvent(xterm, true, "bar"));
33+
2834
addon.setPrompt("b> ");
2935
addon.writePrompt();
30-
addon.writeln("baz");
36+
ComponentUtil.fireEvent(component, new ITerminalConsole.LineEvent(xterm, true, "baz"));
37+
38+
addon.setPrompt("c> ");
39+
addon.writePrompt();
40+
// Does not get added to buffer
41+
3142
assertEquals("a> bar\nb> baz\n", addon.getScrollbackBuffer());
3243
}
3344

0 commit comments

Comments
 (0)