fix: do not clear lines on cursor change

resolves #195
This commit is contained in:
Jan De Dobbeleer 2020-11-26 19:40:55 +01:00 committed by Jan De Dobbeleer
parent f05d8a2cc2
commit 6f1a7b9d39
2 changed files with 9 additions and 10 deletions

View file

@ -127,14 +127,13 @@ func (e *engine) render() {
continue continue
} }
if block.VerticalOffset != 0 { if block.VerticalOffset != 0 {
e.renderer.print(e.renderer.changeLine(block.VerticalOffset)) e.renderer.changeLine(block.VerticalOffset)
} }
switch block.Alignment { switch block.Alignment {
case Right: case Right:
e.renderer.print(e.renderer.carriageForward()) e.renderer.carriageForward()
blockText := e.renderBlockSegments(block) blockText := e.renderBlockSegments(block)
cursorMove := e.renderer.setCursorForRightWrite(blockText, block.HorizontalOffset) e.renderer.setCursorForRightWrite(blockText, block.HorizontalOffset)
e.renderer.print(cursorMove)
e.renderer.print(blockText) e.renderer.print(blockText)
case Left: case Left:
e.renderer.print(e.renderBlockSegments(block)) e.renderer.print(e.renderBlockSegments(block))

View file

@ -193,22 +193,22 @@ func (r *Renderer) lenWithoutANSI(str string) int {
return count return count
} }
func (r *Renderer) carriageForward() string { func (r *Renderer) carriageForward() {
return fmt.Sprintf(r.formats.left, 1000) fmt.Printf(r.formats.left, 1000)
} }
func (r *Renderer) setCursorForRightWrite(text string, offset int) string { func (r *Renderer) setCursorForRightWrite(text string, offset int) {
strippedLen := r.lenWithoutANSI(text) + -offset strippedLen := r.lenWithoutANSI(text) + -offset
return fmt.Sprintf(r.formats.right, strippedLen) fmt.Printf(r.formats.right, strippedLen)
} }
func (r *Renderer) changeLine(numberOfLines int) string { func (r *Renderer) changeLine(numberOfLines int) {
position := "B" position := "B"
if numberOfLines < 0 { if numberOfLines < 0 {
position = "F" position = "F"
numberOfLines = -numberOfLines numberOfLines = -numberOfLines
} }
return fmt.Sprintf(r.formats.linechange, numberOfLines, position) fmt.Printf(r.formats.linechange, numberOfLines, position)
} }
func (r *Renderer) setConsoleTitle(title string) { func (r *Renderer) setConsoleTitle(title string) {