title lines are now displayed

This commit is contained in:
Kovid Goyal 2023-03-19 20:44:39 +05:30
parent 5d8b5ab720
commit ef7f13d893
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 34 additions and 9 deletions

View File

@ -331,7 +331,7 @@ func diff(jobs []diff_job, context_count int) (ans map[string]*Patch, err error)
err error
patch *Patch
}
results := make(chan result)
results := make(chan result, len(jobs))
ctx.Parallel(0, len(jobs), func(nums <-chan int) {
for i := range nums {
job := jobs[i]

View File

@ -19,6 +19,7 @@ const (
TITLE_LINE LineType = iota
CHANGE_LINE
IMAGE_LINE
EMPTY_LINE
)
type Reference struct {
@ -27,10 +28,9 @@ type Reference struct {
}
type LogicalLine struct {
src Reference
line_type LineType
margin_size, columns int
screen_lines []string
src Reference
line_type LineType
screen_lines []string
}
func fit_in(text string, count int) string {
@ -71,7 +71,7 @@ func create_formatters() {
added_margin_format = ctx.SprintFunc(fmt.Sprintf("fg=%s bg=%s", conf.Margin_fg.AsRGBSharp(), conf.Added_margin_bg.AsRGBSharp()))
removed_format = ctx.SprintFunc(fmt.Sprintf("bg=%s", conf.Removed_bg.AsRGBSharp()))
removed_margin_format = ctx.SprintFunc(fmt.Sprintf("fg=%s bg=%s", conf.Margin_fg.AsRGBSharp(), conf.Removed_margin_bg.AsRGBSharp()))
title_format = ctx.SprintFunc(fmt.Sprintf("fg=%s bg=%s", conf.Title_fg.AsRGBSharp(), conf.Title_bg.AsRGBSharp()))
title_format = ctx.SprintFunc(fmt.Sprintf("fg=%s bg=%s bold", conf.Title_fg.AsRGBSharp(), conf.Title_bg.AsRGBSharp()))
margin_format = ctx.SprintFunc(fmt.Sprintf("fg=%s bg=%s", conf.Margin_fg.AsRGBSharp(), conf.Margin_bg.AsRGBSharp()))
hunk_format = ctx.SprintFunc(fmt.Sprintf("fg=%s bg=%s", conf.Margin_fg.AsRGBSharp(), conf.Hunk_bg.AsRGBSharp()))
hunk_margin_format = ctx.SprintFunc(fmt.Sprintf("fg=%s bg=%s", conf.Margin_fg.AsRGBSharp(), conf.Hunk_margin_bg.AsRGBSharp()))
@ -90,11 +90,11 @@ func title_lines(left_path, right_path string, columns, margin_size int, ans []*
} else {
name = place_in(m+sanitize(left_name), columns)
}
ll := LogicalLine{columns: columns, margin_size: margin_size, line_type: TITLE_LINE, src: Reference{path: left_path, linenum: 0}}
ll := LogicalLine{line_type: TITLE_LINE, src: Reference{path: left_path, linenum: 0}}
l1 := ll
l1.screen_lines = []string{title_format(name)}
l2 := ll
l2.screen_lines = []string{title_format(name)}
l2.screen_lines = []string{title_format(strings.Repeat("━", columns+1))}
return append(ans, &l1, &l2)
}
@ -116,8 +116,13 @@ func render(collection *Collection, diff_map map[string]*Patch, columns int) (*L
})
margin_size := utils.Max(3, len(strconv.Itoa(largest_line_number))+1)
ans := make([]*LogicalLine, 0, 1024)
empty_line := LogicalLine{line_type: EMPTY_LINE}
err := collection.Apply(func(path, item_type, changed_path string) error {
ans = title_lines(path, changed_path, columns, margin_size, ans)
defer func() {
el := empty_line
ans = append(ans, &el)
}()
is_binary := !is_path_text(path)
if !is_binary && item_type == `diff` && !is_path_text(changed_path) {

View File

@ -170,9 +170,29 @@ func (self *Handler) draw_screen() {
g := (&graphics.GraphicsCommand{}).SetAction(graphics.GRT_action_delete).SetDelete(graphics.GRT_delete_visible)
g.WriteWithPayloadToLoop(self.lp, nil)
lp.MoveCursorTo(1, 1)
lp.ClearToEndOfScreen()
if self.logical_lines == nil || self.diff_map == nil || self.collection == nil {
lp.Println(`Calculating diff, please wait...`)
return
}
num_written := 0
for i, line := range self.logical_lines.lines[self.scroll_pos.logical_line:] {
if num_written >= self.screen_size.num_lines {
break
}
screen_lines := line.screen_lines
if i == 0 {
screen_lines = screen_lines[self.scroll_pos.screen_line:]
}
for _, sl := range screen_lines {
lp.QueueWriteString(sl)
lp.MoveCursorVertically(1)
lp.QueueWriteString("\r")
num_written++
if num_written >= self.screen_size.num_lines {
break
}
}
}
}

View File

@ -389,7 +389,7 @@ const (
FOREGROUND = 10
CURSOR = 12
SELECTION_BG = 17
SELECTION_FG = 18
SELECTION_FG = 19
)
func (self *Loop) SetDefaultColor(which DefaultColor, val style.RGBA) {