Merge pull request #50 from c-bata/refactor-render

Refactor render.go
This commit is contained in:
Masashi SHIBATA 2018-02-19 20:20:02 +09:00 committed by GitHub
commit 33684a5d5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -86,7 +86,6 @@ func (r *Render) renderWindowTooSmall() {
r.out.EraseScreen()
r.out.SetColor(DarkRed, White, false)
r.out.WriteStr("Your console window is too small...")
r.out.Flush()
return
}
@ -174,7 +173,8 @@ func (r *Render) Render(buffer *Buffer, completion *CompletionManager) {
if r.col == 0 {
return
}
r.backward(r.previousCursor, r.previousCursor)
defer r.out.Flush()
r.move(r.previousCursor, 0)
line := buffer.Text()
prefix := r.getCurrentPrefix()
@ -189,8 +189,6 @@ func (r *Render) Render(buffer *Buffer, completion *CompletionManager) {
return
}
defer r.out.Flush()
// Rendering
r.out.HideCursor()
defer r.out.ShowCursor()
@ -238,15 +236,21 @@ func (r *Render) BreakLine(buffer *Buffer) {
r.previousCursor = 0
}
// clear erases the screen from a beginning of input
// even if there is line break which means input length exceeds a window's width.
func (r *Render) clear(cursor int) {
r.backward(cursor, cursor)
r.move(cursor, 0)
r.out.EraseDown()
}
// backward moves cursor to backward from a current cursor position
// regardless there is a line break.
func (r *Render) backward(from, n int) int {
return r.move(from, from-n)
}
// move moves cursor to specified position from the beginning of input
// even if there is a line break.
func (r *Render) move(from, to int) int {
fromX, fromY := r.toPos(from)
toX, toY := r.toPos(to)