--- a/src/eric7/QScintilla/TypingCompleters/__init__.py Tue Nov 08 18:18:42 2022 +0100 +++ b/src/eric7/QScintilla/TypingCompleters/__init__.py Tue Nov 08 19:47:11 2022 +0100 @@ -7,6 +7,8 @@ Package implementing lexers for the various supported programming languages. """ +import importlib + def getCompleter(language, editor, parent=None): """ @@ -17,20 +19,22 @@ @param parent reference to the parent object (QObject) @return reference to the instanciated lexer object (QsciLexer) """ - try: - if language in ["Python", "Python3", "MicroPython", "Cython"]: - from .CompleterPython import CompleterPython # __IGNORE_WARNING_I101__ - - return CompleterPython(editor, parent) - elif language == "Ruby": - from .CompleterRuby import CompleterRuby # __IGNORE_WARNING_I101__ + languageCompleterMapping = { + "Python": "CompleterPython", + "Python3": "CompleterPython", + "MicroPython": "CompleterPython", + "Cython": "CompleterPython", + "Ruby": "CompleterRuby", + "YAML": "CompleterYaml", + } - return CompleterRuby(editor, parent) - elif language == "YAML": - from .CompleterYaml import CompleterYaml # __IGNORE_WARNING_I101__ + if language in languageCompleterMapping: + mod = importlib.import_module( + "eric7.QScintilla.TypingCompleters.{0}".format( + languageCompleterMapping[language] + ) + ) + if mod: + return mod.createCompleter(editor, parent) - return CompleterYaml(editor, parent) - else: - return None - except ImportError: - return None + return None