parent
7492ab4de2
commit
74610b8cd7
1 changed files with 34 additions and 8 deletions
|
@ -27,8 +27,7 @@ type View struct {
|
|||
Cursor *Cursor
|
||||
|
||||
// The topmost line, used for vertical scrolling
|
||||
Topline int
|
||||
Bottomline int
|
||||
Topline int
|
||||
// The leftmost column, used for horizontal scrolling
|
||||
leftCol int
|
||||
|
||||
|
@ -292,7 +291,7 @@ func (v *View) GetSoftWrapLocation(vx, vy int) (int, int) {
|
|||
}
|
||||
|
||||
screenX, screenY := 0, v.Topline
|
||||
for lineN := v.Topline; lineN < v.Bottomline; lineN++ {
|
||||
for lineN := v.Topline; lineN < v.height; lineN++ {
|
||||
line := v.Buf.Line(lineN)
|
||||
|
||||
colN := 0
|
||||
|
@ -323,10 +322,41 @@ func (v *View) GetSoftWrapLocation(vx, vy int) (int, int) {
|
|||
return 0, 0
|
||||
}
|
||||
|
||||
func (v *View) Bottomline() int {
|
||||
screenX, screenY := 0, 0
|
||||
numLines := 0
|
||||
for lineN := v.Topline; lineN < v.Topline+v.height; lineN++ {
|
||||
line := v.Buf.Line(lineN)
|
||||
|
||||
colN := 0
|
||||
for _, ch := range line {
|
||||
if screenX >= v.width-v.lineNumOffset {
|
||||
screenX = 0
|
||||
screenY++
|
||||
}
|
||||
|
||||
if ch == '\t' {
|
||||
screenX += int(v.Buf.Settings["tabsize"].(float64)) - 1
|
||||
}
|
||||
|
||||
screenX++
|
||||
colN++
|
||||
}
|
||||
screenX = 0
|
||||
screenY++
|
||||
numLines++
|
||||
|
||||
if screenY >= v.height {
|
||||
break
|
||||
}
|
||||
}
|
||||
return numLines + v.Topline
|
||||
}
|
||||
|
||||
// Relocate moves the view window so that the cursor is in view
|
||||
// This is useful if the user has scrolled far away, and then starts typing
|
||||
func (v *View) Relocate() bool {
|
||||
height := v.Bottomline - v.Topline
|
||||
height := v.Bottomline() - v.Topline
|
||||
ret := false
|
||||
cy := v.Cursor.Y
|
||||
scrollmargin := int(v.Buf.Settings["scrollmargin"].(float64))
|
||||
|
@ -911,10 +941,6 @@ func (v *View) DisplayView() {
|
|||
}
|
||||
}
|
||||
}
|
||||
v.Bottomline = curLineN
|
||||
if !v.Buf.Settings["softwrap"].(bool) {
|
||||
v.Bottomline++
|
||||
}
|
||||
}
|
||||
|
||||
// DisplayCursor draws the current buffer's cursor to the screen
|
||||
|
|
Loading…
Reference in a new issue