Skip to content

Commit e66d5f1

Browse files
committed
Merge pull request #242 from parallaxinc/console-updates
Text overwrite and automatic word wrap in receive pane
2 parents 561c128 + 773700d commit e66d5f1

File tree

2 files changed

+28
-14
lines changed

2 files changed

+28
-14
lines changed

src/lib/terminal.js

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -167,26 +167,40 @@ class Terminal {
167167
}
168168
}
169169

170-
addText(data){
171-
const { lines, pointerLine, pointerColumn, trimCount, maxLines } = this.state;
172-
const line = lines[pointerLine] || '';
173-
if(pointerColumn < line.length){
174-
const start = line.slice(0, pointerColumn);
175-
const end = line.slice(pointerColumn);
176-
lines[pointerLine] = start + data + end;
177-
}else if(pointerColumn > line.length){
178-
lines[pointerLine] = _.padRight(line, pointerColumn) + data;
179-
}else{
180-
lines[pointerLine] = line + data;
170+
addText(newText){
171+
const { lines, lineWrap, trimCount, maxLines } = this.state;
172+
173+
let { pointerColumn, pointerLine } = this.state;
174+
175+
while(newText.length > 0){
176+
let oldLine = lines[pointerLine] || '';
177+
let initial = _.padRight(oldLine.slice(0, pointerColumn), pointerColumn);
178+
179+
let insert = newText.slice(0, Math.max(lineWrap - initial.length, 0));
180+
181+
let remainder = oldLine.slice(insert.length + initial.length);
182+
183+
let leftOver = newText.slice(insert.length);
184+
185+
lines[pointerLine] = initial + insert + remainder;
186+
187+
newText = leftOver;
188+
if(newText.length > 0){
189+
pointerLine++;
190+
pointerColumn = 0;
191+
}else{
192+
pointerColumn = initial.length + insert.length;
193+
}
181194
}
182195

183196
if(lines.length > maxLines){
184197
const newLines = lines.slice(trimCount);
185198
this.state.lines = newLines;
186199
this.state.pointerLine = Math.max(0, pointerLine - trimCount);
187-
this.state.pointerColumn = pointerColumn + data.length;
200+
this.state.pointerColumn = pointerColumn;
188201
} else {
189-
this.state.pointerColumn = pointerColumn + data.length;
202+
this.state.pointerLine = pointerLine;
203+
this.state.pointerColumn = pointerColumn;
190204
}
191205
}
192206

src/views/terminal.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const styles = {
1515
padding: '10px',
1616
margin: '0',
1717
overflow: 'auto',
18-
whiteSpace: 'pre-wrap'
18+
whiteSpace: 'pre'
1919
}
2020
};
2121

0 commit comments

Comments
 (0)