mirror of
https://github.com/kovidgoyal/kitty.git
synced 2024-09-22 20:17:45 +03:00
diff kitten: Show the number of matches in the status bar when doing a search
This commit is contained in:
parent
cd6a46730a
commit
1022d8a0ee
@ -304,11 +304,14 @@ def draw_status_line(self):
|
||||
self.write(self.message)
|
||||
else:
|
||||
scroll_frac = styled('{:.0%}'.format(self.scroll_pos / (self.max_scroll_pos or 1)), fg=self.opts.margin_fg)
|
||||
counts = '{}{}{}'.format(
|
||||
styled(str(self.added_count), fg=self.opts.highlight_added_bg),
|
||||
styled(',', fg=self.opts.margin_fg),
|
||||
styled(str(self.removed_count), fg=self.opts.highlight_removed_bg)
|
||||
)
|
||||
if self.current_search is None:
|
||||
counts = '{}{}{}'.format(
|
||||
styled(str(self.added_count), fg=self.opts.highlight_added_bg),
|
||||
styled(',', fg=self.opts.margin_fg),
|
||||
styled(str(self.removed_count), fg=self.opts.highlight_removed_bg)
|
||||
)
|
||||
else:
|
||||
counts = '[{} matches]'.format(len(self.current_search))
|
||||
suffix = counts + ' ' + scroll_frac
|
||||
prefix = styled(':', fg=self.opts.margin_fg)
|
||||
filler = self.screen_size.cols - wcswidth(prefix) - wcswidth(suffix)
|
||||
|
@ -17,6 +17,7 @@ class Search:
|
||||
|
||||
def __init__(self, opts, query, is_regex, is_backward):
|
||||
self.matches = {}
|
||||
self.count = 0
|
||||
self.style = styled('|', fg=opts.search_fg, bg=opts.search_bg).split('|', 1)[0]
|
||||
if not is_regex:
|
||||
query = re.escape(query)
|
||||
@ -27,6 +28,7 @@ def __init__(self, opts, query, is_regex, is_backward):
|
||||
|
||||
def __call__(self, diff_lines, margin_size, cols):
|
||||
self.matches = {}
|
||||
self.count = 0
|
||||
half_width = cols // 2
|
||||
strip_pat = re.compile('\033[[].*?m')
|
||||
right_offset = half_width + 1 + margin_size
|
||||
@ -40,6 +42,7 @@ def add(which, offset):
|
||||
for m in find(which):
|
||||
before = which[:m.start()]
|
||||
matches.append((wcswidth(before) + offset, m.group()))
|
||||
self.count += 1
|
||||
|
||||
add(left, margin_size)
|
||||
add(right, right_offset)
|
||||
@ -51,7 +54,7 @@ def __contains__(self, i):
|
||||
return i in self.matches
|
||||
|
||||
def __len__(self):
|
||||
return len(self.matches)
|
||||
return self.count
|
||||
|
||||
def highlight_line(self, write, line_num):
|
||||
highlights = self.matches.get(line_num)
|
||||
|
Loading…
Reference in New Issue
Block a user