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,6 +144,9 @@ 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) 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) Len() int { return len(self.lines) }
func (self *LogicalLines) NumScreenLinesTo(a ScrollPos) (ans int) { func (self *LogicalLines) NumScreenLinesTo(a ScrollPos) (ans int) {

View File

@ -241,28 +241,19 @@ 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)
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 { if self.current_search != nil {
sl = self.current_search.markup_line(sl, ScrollPos{i, snum}.Add(self.scroll_pos)) sl = self.current_search.markup_line(sl, pos)
} }
lp.QueueWriteString(sl) lp.QueueWriteString(sl)
lp.MoveCursorVertically(1) lp.MoveCursorVertically(1)
lp.QueueWriteString("\r") lp.QueueWriteString("\r")
num_written++ if self.logical_lines.IncrementScrollPosBy(&pos, 1) == 0 {
if num_written >= self.screen_size.num_lines {
break break
} }
} }
}
self.draw_status_line() self.draw_status_line()
} }