title lines are now displayed
This commit is contained in:
parent
5d8b5ab720
commit
ef7f13d893
@ -331,7 +331,7 @@ func diff(jobs []diff_job, context_count int) (ans map[string]*Patch, err error)
|
|||||||
err error
|
err error
|
||||||
patch *Patch
|
patch *Patch
|
||||||
}
|
}
|
||||||
results := make(chan result)
|
results := make(chan result, len(jobs))
|
||||||
ctx.Parallel(0, len(jobs), func(nums <-chan int) {
|
ctx.Parallel(0, len(jobs), func(nums <-chan int) {
|
||||||
for i := range nums {
|
for i := range nums {
|
||||||
job := jobs[i]
|
job := jobs[i]
|
||||||
|
|||||||
@ -19,6 +19,7 @@ const (
|
|||||||
TITLE_LINE LineType = iota
|
TITLE_LINE LineType = iota
|
||||||
CHANGE_LINE
|
CHANGE_LINE
|
||||||
IMAGE_LINE
|
IMAGE_LINE
|
||||||
|
EMPTY_LINE
|
||||||
)
|
)
|
||||||
|
|
||||||
type Reference struct {
|
type Reference struct {
|
||||||
@ -27,10 +28,9 @@ type Reference struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type LogicalLine struct {
|
type LogicalLine struct {
|
||||||
src Reference
|
src Reference
|
||||||
line_type LineType
|
line_type LineType
|
||||||
margin_size, columns int
|
screen_lines []string
|
||||||
screen_lines []string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func fit_in(text string, count int) 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()))
|
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_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()))
|
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()))
|
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_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()))
|
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 {
|
} else {
|
||||||
name = place_in(m+sanitize(left_name), columns)
|
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 := ll
|
||||||
l1.screen_lines = []string{title_format(name)}
|
l1.screen_lines = []string{title_format(name)}
|
||||||
l2 := ll
|
l2 := ll
|
||||||
l2.screen_lines = []string{title_format(name)}
|
l2.screen_lines = []string{title_format(strings.Repeat("━", columns+1))}
|
||||||
return append(ans, &l1, &l2)
|
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)
|
margin_size := utils.Max(3, len(strconv.Itoa(largest_line_number))+1)
|
||||||
ans := make([]*LogicalLine, 0, 1024)
|
ans := make([]*LogicalLine, 0, 1024)
|
||||||
|
empty_line := LogicalLine{line_type: EMPTY_LINE}
|
||||||
err := collection.Apply(func(path, item_type, changed_path string) error {
|
err := collection.Apply(func(path, item_type, changed_path string) error {
|
||||||
ans = title_lines(path, changed_path, columns, margin_size, ans)
|
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)
|
is_binary := !is_path_text(path)
|
||||||
if !is_binary && item_type == `diff` && !is_path_text(changed_path) {
|
if !is_binary && item_type == `diff` && !is_path_text(changed_path) {
|
||||||
|
|||||||
@ -170,9 +170,29 @@ func (self *Handler) draw_screen() {
|
|||||||
g := (&graphics.GraphicsCommand{}).SetAction(graphics.GRT_action_delete).SetDelete(graphics.GRT_delete_visible)
|
g := (&graphics.GraphicsCommand{}).SetAction(graphics.GRT_action_delete).SetDelete(graphics.GRT_delete_visible)
|
||||||
g.WriteWithPayloadToLoop(self.lp, nil)
|
g.WriteWithPayloadToLoop(self.lp, nil)
|
||||||
lp.MoveCursorTo(1, 1)
|
lp.MoveCursorTo(1, 1)
|
||||||
|
lp.ClearToEndOfScreen()
|
||||||
if self.logical_lines == nil || self.diff_map == nil || self.collection == nil {
|
if self.logical_lines == nil || self.diff_map == nil || self.collection == nil {
|
||||||
lp.Println(`Calculating diff, please wait...`)
|
lp.Println(`Calculating diff, please wait...`)
|
||||||
return
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -389,7 +389,7 @@ const (
|
|||||||
FOREGROUND = 10
|
FOREGROUND = 10
|
||||||
CURSOR = 12
|
CURSOR = 12
|
||||||
SELECTION_BG = 17
|
SELECTION_BG = 17
|
||||||
SELECTION_FG = 18
|
SELECTION_FG = 19
|
||||||
)
|
)
|
||||||
|
|
||||||
func (self *Loop) SetDefaultColor(which DefaultColor, val style.RGBA) {
|
func (self *Loop) SetDefaultColor(which DefaultColor, val style.RGBA) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user