This commit is contained in:
Kovid Goyal 2023-03-23 07:53:54 +05:30
parent f7f6df675f
commit c19c614d9e
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 14 additions and 20 deletions

View File

@ -144,7 +144,10 @@ type LogicalLines struct {
} }
func (self *LogicalLines) At(i int) *LogicalLine { return self.lines[i] } func (self *LogicalLines) At(i int) *LogicalLine { return self.lines[i] }
func (self *LogicalLines) Len() int { return len(self.lines) } func (self *LogicalLines) ScreenLineAt(pos ScrollPos) string {
return self.lines[pos.logical_line].screen_lines[pos.screen_line]
}
func (self *LogicalLines) Len() int { return len(self.lines) }
func (self *LogicalLines) NumScreenLinesTo(a ScrollPos) (ans int) { func (self *LogicalLines) NumScreenLinesTo(a ScrollPos) (ans int) {
return self.Minus(a, ScrollPos{}) return self.Minus(a, ScrollPos{})

View File

@ -241,27 +241,18 @@ func (self *Handler) draw_screen() {
lp.Println(`Calculating diff, please wait...`) lp.Println(`Calculating diff, please wait...`)
return return
} }
num_written := 0 pos := self.scroll_pos
for i, line := range self.logical_lines.lines[self.scroll_pos.logical_line:] { for num_written := 0; num_written < self.screen_size.num_lines; num_written++ {
if num_written >= self.screen_size.num_lines { sl := self.logical_lines.ScreenLineAt(pos)
if self.current_search != nil {
sl = self.current_search.markup_line(sl, pos)
}
lp.QueueWriteString(sl)
lp.MoveCursorVertically(1)
lp.QueueWriteString("\r")
if self.logical_lines.IncrementScrollPosBy(&pos, 1) == 0 {
break break
} }
screen_lines := line.screen_lines
if i == 0 {
screen_lines = screen_lines[self.scroll_pos.screen_line:]
}
for snum, sl := range screen_lines {
if self.current_search != nil {
sl = self.current_search.markup_line(sl, ScrollPos{i, snum}.Add(self.scroll_pos))
}
lp.QueueWriteString(sl)
lp.MoveCursorVertically(1)
lp.QueueWriteString("\r")
num_written++
if num_written >= self.screen_size.num_lines {
break
}
}
} }
self.draw_status_line() self.draw_status_line()
} }