From 7605dcd252b052010a5648f0ec32bd8e6c563135 Mon Sep 17 00:00:00 2001 From: Elizaveta Shashkova Date: Tue, 30 Jul 2019 14:24:52 +0300 Subject: [PATCH] IDEA-CR-50863: PY-37078 Provide a setter for the `matchers` property GitOrigin-RevId: 5cb09923bb570d67445ef61dd8bc725d300653f4 --- .../pydev_ipython_console_011.py | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/python/helpers/pydev/_pydev_bundle/pydev_ipython_console_011.py b/python/helpers/pydev/_pydev_bundle/pydev_ipython_console_011.py index 8fdb1e7ffefc..28c5a286ff42 100644 --- a/python/helpers/pydev/_pydev_bundle/pydev_ipython_console_011.py +++ b/python/helpers/pydev/_pydev_bundle/pydev_ipython_console_011.py @@ -87,6 +87,7 @@ class PyDevIPCompleter(IPCompleter): self.matchers.remove(self.python_matches) class PyDevIPCompleter6(IPCompleter): + _pydev_matchers = None def __init__(self, *args, **kwargs): """ Create a Completer that reuses the advanced completion support of PyDev @@ -95,14 +96,22 @@ class PyDevIPCompleter6(IPCompleter): @property def matchers(self): - """All active matcher routines for completion""" # To remove python_matches we now have to override it as it's now a property in the superclass. - return [ - self.file_matches, - self.magic_matches, - self.python_func_kw_matches, - self.dict_key_matches, - ] + if self._pydev_matchers is None: + self._pydev_matchers = self._remove_python_matches(IPCompleter.matchers.fget(self)) + return self._pydev_matchers + + @matchers.setter + def matchers(self, value): + # Provide a setter for an overridden property + self._pydev_matchers = self._remove_python_matches(value) + + def _remove_python_matches(self, original_matchers): + # `self.python_matches` matches attributes or global python names + if self.python_matches in original_matchers: + original_matchers.remove(self.python_matches) + return original_matchers + class PyDevTerminalInteractiveShell(TerminalInteractiveShell): banner1 = Unicode(default_pydev_banner, config=True,