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
}
if block.VerticalOffset != 0 {
e.renderer.print(e.renderer.changeLine(block.VerticalOffset))
e.renderer.changeLine(block.VerticalOffset)
}
switch block.Alignment {
case Right:
e.renderer.print(e.renderer.carriageForward())
e.renderer.carriageForward()
blockText := e.renderBlockSegments(block)
cursorMove := e.renderer.setCursorForRightWrite(blockText, block.HorizontalOffset)
e.renderer.print(cursorMove)
e.renderer.setCursorForRightWrite(blockText, block.HorizontalOffset)
e.renderer.print(blockText)
case Left:
e.renderer.print(e.renderBlockSegments(block))

View file

@ -193,22 +193,22 @@ func (r *Renderer) lenWithoutANSI(str string) int {
return count
}
func (r *Renderer) carriageForward() string {
return fmt.Sprintf(r.formats.left, 1000)
func (r *Renderer) carriageForward() {
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
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"
if numberOfLines < 0 {
position = "F"
numberOfLines = -numberOfLines
}
return fmt.Sprintf(r.formats.linechange, numberOfLines, position)
fmt.Printf(r.formats.linechange, numberOfLines, position)
}
func (r *Renderer) setConsoleTitle(title string) {