MCPcopy
hub / github.com/Textualize/toolong / advance_search

Method advance_search

src/toolong/log_lines.py:715–757  ·  view source on GitHub ↗
(self, direction: int = 1)

Source from the content-addressed store, hash-verified

713 return self.find.lower() in line.lower()
714
715 def advance_search(self, direction: int = 1) -> None:
716 first = self.pointer_line is None
717 start_line = (
718 (
719 self.scroll_offset.y
720 if direction == 1
721 else self.scroll_offset.y + self.scrollable_content_region.height - 1
722 )
723 if self.pointer_line is None
724 else self.pointer_line + direction
725 )
726 if direction == 1:
727 line_range = range(start_line, self.line_count)
728 else:
729 line_range = range(start_line, -1, -1)
730
731 scroll_y = self.scroll_offset.y
732 max_scroll_y = scroll_y + self.scrollable_content_region.height - 1
733 if self.show_find:
734 check_match = self.check_match
735 index_to_span = self.index_to_span
736 with self._lock:
737 for line_no in line_range:
738 log_file, start, end = index_to_span(line_no)
739 line = log_file.get_raw(start, end).decode(
740 "utf-8", errors="replace"
741 )
742 if check_match(line):
743 self.pointer_line = line_no
744 self.scroll_pointer_to_center()
745 return
746 self.app.bell()
747 else:
748 self.pointer_line = next(
749 iter(line_range), self.pointer_line or self.scroll_offset.y
750 )
751 if first:
752 self.refresh()
753 else:
754 if self.pointer_line is not None and (
755 self.pointer_line < scroll_y or self.pointer_line > max_scroll_y
756 ):
757 self.scroll_pointer_to_center()
758
759 def scroll_pointer_to_center(self, animate: bool = True):
760 if self.pointer_line is None:

Callers 3

action_scroll_upMethod · 0.95
action_scroll_downMethod · 0.95
move_pointerMethod · 0.80

Calls 2

get_rawMethod · 0.80

Tested by

no test coverage detected