src/eric7/QScintilla/TypingCompleters/__init__.py

branch
eric7
changeset 9493
aeaa6bf49831
parent 9482
a2bc06a54d9d
child 9497
8beca4047c53
--- 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

eric ide

mercurial