DRYer
This commit is contained in:
parent
f7f6df675f
commit
c19c614d9e
@ -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) {
|
||||||
|
|||||||
@ -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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user