From 491f233d33d21fafcb26808e916a7858d9cccec1 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 19 Jun 2018 10:30:52 +0530 Subject: [PATCH] diff kitten: When triggering a search scroll to the first match automatically --- kittens/diff/main.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/kittens/diff/main.py b/kittens/diff/main.py index ecc8e6ef2..ba9b7b533 100644 --- a/kittens/diff/main.py +++ b/kittens/diff/main.py @@ -168,12 +168,13 @@ class DiffHandler(Handler): return self.cmd.bell() - def scroll_to_next_match(self, backwards=False): + def scroll_to_next_match(self, backwards=False, include_current=False): if self.current_search is not None: + offset = 0 if include_current else 1 if backwards: - r = range(self.scroll_pos - 1, -1, -1) + r = range(self.scroll_pos - offset, -1, -1) else: - r = range(self.scroll_pos + 1, len(self.diff_lines)) + r = range(self.scroll_pos + offset, len(self.diff_lines)) for i in r: if i in self.current_search: self.scroll_lines(i - self.scroll_pos) @@ -351,7 +352,9 @@ class DiffHandler(Handler): self.message = sanitize(_('Bad regex: {}').format(query[1:])) self.cmd.bell() else: - if not self.current_search(self.diff_lines, self.margin_size, self.screen_size.cols): + if self.current_search(self.diff_lines, self.margin_size, self.screen_size.cols): + self.scroll_to_next_match(include_current=True) + else: self.state = MESSAGE self.message = sanitize(_('No matches found')) self.cmd.bell()