Add hunk title lines
This commit is contained in:
parent
b37d07d31a
commit
0721951c79
@ -32,12 +32,14 @@ def set_formats(opts):
|
|||||||
formats['added'] = '38' + color_as_sgr(opts.foreground) + ';48' + color_as_sgr(opts.added_bg)
|
formats['added'] = '38' + color_as_sgr(opts.foreground) + ';48' + color_as_sgr(opts.added_bg)
|
||||||
formats['removed'] = '38' + color_as_sgr(opts.foreground) + ';48' + color_as_sgr(opts.removed_bg)
|
formats['removed'] = '38' + color_as_sgr(opts.foreground) + ';48' + color_as_sgr(opts.removed_bg)
|
||||||
formats['filler'] = '48' + color_as_sgr(opts.filler_bg)
|
formats['filler'] = '48' + color_as_sgr(opts.filler_bg)
|
||||||
|
formats['hunk_margin'] = '38' + color_as_sgr(opts.margin_fg) + ';48' + color_as_sgr(opts.hunk_margin_bg)
|
||||||
|
formats['hunk'] = '38' + color_as_sgr(opts.margin_fg) + ';48' + color_as_sgr(opts.hunk_bg)
|
||||||
|
|
||||||
|
|
||||||
type_map = {}
|
type_map = {}
|
||||||
|
|
||||||
for name in (
|
for name in (
|
||||||
'foreground background title_fg title_bg margin_bg margin_fg removed_bg removed_margin_bg added_bg added_margin_bg filler_bg'
|
'foreground background title_fg title_bg margin_bg margin_fg removed_bg removed_margin_bg added_bg added_margin_bg filler_bg hunk_bg hunk_margin_bg'
|
||||||
).split():
|
).split():
|
||||||
type_map[name] = to_color
|
type_map[name] = to_color
|
||||||
|
|
||||||
|
|||||||
@ -9,3 +9,5 @@ removed_margin_bg #ffdce0
|
|||||||
added_bg #e6ffed
|
added_bg #e6ffed
|
||||||
added_margin_bg #cdffd8
|
added_margin_bg #cdffd8
|
||||||
filler_bg #fafbfc
|
filler_bg #fafbfc
|
||||||
|
hunk_margin_bg #dbedff
|
||||||
|
hunk_bg #f1f8ff
|
||||||
|
|||||||
@ -16,7 +16,7 @@ class HunkRef:
|
|||||||
|
|
||||||
__slots__ = ('hunk_num', 'line_num')
|
__slots__ = ('hunk_num', 'line_num')
|
||||||
|
|
||||||
def __init__(self, hunk_num, line_num):
|
def __init__(self, hunk_num, line_num=None):
|
||||||
self.hunk_num = hunk_num
|
self.hunk_num = hunk_num
|
||||||
self.line_num = line_num
|
self.line_num = line_num
|
||||||
|
|
||||||
@ -106,6 +106,8 @@ removed_format = format_func('removed')
|
|||||||
removed_margin_format = format_func('removed_margin')
|
removed_margin_format = format_func('removed_margin')
|
||||||
added_margin_format = format_func('added_margin')
|
added_margin_format = format_func('added_margin')
|
||||||
filler_format = format_func('filler')
|
filler_format = format_func('filler')
|
||||||
|
hunk_margin_format = format_func('hunk_margin')
|
||||||
|
hunk_format = format_func('hunk')
|
||||||
|
|
||||||
|
|
||||||
def title_lines(left_path, right_path, args, columns, margin_size):
|
def title_lines(left_path, right_path, args, columns, margin_size):
|
||||||
@ -151,11 +153,18 @@ def render_diff_pair(left_line_number, left, left_is_change, right_line_number,
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def hunk_title(hunk_num, hunk, margin_size, available_cols):
|
||||||
|
m = hunk_margin_format(' ' * margin_size)
|
||||||
|
t = '@@ -{},{} +{},{} @@ {}'.format(hunk.left_start, hunk.left_count, hunk.right_start, hunk.right_count, hunk.title)
|
||||||
|
return m + hunk_format(place_in(t, available_cols))
|
||||||
|
|
||||||
|
|
||||||
def lines_for_diff(left_path, right_path, hunks, args, columns, margin_size):
|
def lines_for_diff(left_path, right_path, hunks, args, columns, margin_size):
|
||||||
available_cols = columns // 2 - margin_size
|
available_cols = columns // 2 - margin_size
|
||||||
left_lines, right_lines = map(lines_for_path, (left_path, right_path))
|
left_lines, right_lines = map(lines_for_path, (left_path, right_path))
|
||||||
|
|
||||||
for hunk_num, hunk in enumerate(hunks):
|
for hunk_num, hunk in enumerate(hunks):
|
||||||
|
yield Line(hunk_title(hunk_num, hunk, margin_size, columns - margin_size), Reference(left_path, HunkRef(hunk_num)))
|
||||||
for line_num, (left, right) in enumerate(zip(hunk.left_lines, hunk.right_lines)):
|
for line_num, (left, right) in enumerate(zip(hunk.left_lines, hunk.right_lines)):
|
||||||
left_line_number, left_is_change = left
|
left_line_number, left_is_change = left
|
||||||
right_line_number, right_is_change = right
|
right_line_number, right_is_change = right
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user