--- a/src/eric7/DebugClients/Python/DebugClientBase.py Mon Oct 03 12:14:28 2022 +0200 +++ b/src/eric7/DebugClients/Python/DebugClientBase.py Mon Oct 03 17:29:30 2022 +0200 @@ -164,8 +164,8 @@ self.buffer = "" # The precompiled regexp to filter variables against - self.globalsFilterObjects = None - self.localsFilterObjects = None + self.globalsFilterObjects = (None, False) # filter regexp, show flag + self.localsFilterObjects = (None, False) # filter regexp, show flag self._fncache = {} self.dircache = [] @@ -1515,7 +1515,7 @@ filterList = set(filterList or []) varlist = [] - patternFilterObjects = ( + patternFilterObjects, showFlag = ( self.globalsFilterObjects if scope else self.localsFilterObjects ) @@ -1530,7 +1530,10 @@ key, valtype, rvalue = variabel # filter based on the filter pattern - if patternFilterObjects and patternFilterObjects.match(str(key)): + if patternFilterObjects and ( + (not showFlag and patternFilterObjects.match(str(key))) + or (showFlag and not patternFilterObjects.match(str(key))) + ): continue # filter hidden attributes (filter #0) @@ -1649,15 +1652,24 @@ @param filterString string of filter patterns separated by ';' """ patternFilterObjects = None - if filterString.strip(): - pattern = filterString.replace(";", "|") - with contextlib.suppress(re.error): - patternFilterObjects = re.compile(pattern) + filterString = filterString.strip() + if filterString: + if filterString[0] == "~": + showFlag = False + filterString = filterString[1:].strip() + else: + showFlag = True + if filterString: + pattern = filterString.replace(";", "|") + with contextlib.suppress(re.error): + patternFilterObjects = re.compile(pattern) + else: + showFlag = False if scope: - self.globalsFilterObjects = patternFilterObjects + self.globalsFilterObjects = (patternFilterObjects, showFlag) else: - self.localsFilterObjects = patternFilterObjects + self.localsFilterObjects = (patternFilterObjects, showFlag) def __completionList(self, text): """