# HG changeset patch # User Jordi GutiƩrrez Hermoso # Date 1707968889 18000 # Node ID 880740426a34c11037557eaa87f033e53da692dd # Parent ed0b78b2a3aa2bd0829ed5f695b93f10d17ad2ef crecord: add a showsearch function This function takes a regex and searches either forward or backward, moving the current item to the found item, if any, and unfolding the relevant context. diff -r ed0b78b2a3aa -r 880740426a34 mercurial/crecord.py --- a/mercurial/crecord.py Wed Feb 14 22:46:41 2024 -0500 +++ b/mercurial/crecord.py Wed Feb 14 22:48:09 2024 -0500 @@ -1889,6 +1889,32 @@ return False return True + def showsearch(self, regex, forward=True): + if not regex: + return + + moveattr = 'nextitem' if forward else 'previtem' + currentitem = getattr(self.currentselecteditem, moveattr)( + skipfolded=False + ) + + matches = None + regex = re.compile(regex) + while currentitem: + matches = regex.search(currentitem.content) + if matches: + self.currentselecteditem = currentitem + break + currentitem = getattr(currentitem, moveattr)(skipfolded=False) + + # Whatever is selected should now be visible + unfolded = self.currentselecteditem + while matches and unfolded: + unfolded.folded = False + unfolded = unfolded.parentitem() + + return matches + def handlekeypressed(self, keypressed, test=False): """ Perform actions based on pressed keys.