diff --git a/src/robotkernel/completion_finders.py b/src/robotkernel/completion_finders.py index 5184fd0..83348dd 100644 --- a/src/robotkernel/completion_finders.py +++ b/src/robotkernel/completion_finders.py @@ -1,6 +1,5 @@ """Completion implementations.""" -from IPython.core.completerlib import get_root_modules from robot.libraries import STDLIBS from typing import List @@ -9,8 +8,8 @@ def complete_libraries(needle: str,) -> List[str]: """Complete library names.""" matches = [] - for lib in list(STDLIBS) + list(get_root_modules()): - if needle in lib.lower(): + for lib in list(STDLIBS): + if lib.lower().startswith(needle): matches.append(lib) return matches diff --git a/src/robotkernel/kernel.py b/src/robotkernel/kernel.py index 461b432..7ab8521 100644 --- a/src/robotkernel/kernel.py +++ b/src/robotkernel/kernel.py @@ -42,6 +42,7 @@ from robotkernel.utils import get_lunr_completions from robotkernel.utils import lunr_builder from robotkernel.utils import lunr_query +from robotkernel.utils import remove_prefix from robotkernel.utils import scored_results from robotkernel.utils import yield_current_connection @@ -171,9 +172,15 @@ def do_complete(self, code, cursor_pos): ] ): self.log.debug("Context: Library name") - matches = complete_libraries(needle.lower()) - metadata_type = "class" + needle = needle.lower() + needle = remove_prefix(needle, 'library ') + needle = remove_prefix(needle, 'import library ') + needle = remove_prefix(needle, 'reload library ') + needle = remove_prefix(needle, 'get library instance ') + + matches = complete_libraries(needle) + metadata_type = "class" else: self.log.debug("Context: Keywords or Built-ins") # Clear selector completion highlights diff --git a/src/robotkernel/utils.py b/src/robotkernel/utils.py index f96a98e..66ba830 100644 --- a/src/robotkernel/utils.py +++ b/src/robotkernel/utils.py @@ -92,6 +92,12 @@ def lunr_builder(ref, fields): return builder +def remove_prefix(value, prefix): + if value.startswith(prefix): + value = value[len(prefix):] + return value + + def readable_keyword(s): """Return keyword in title case.""" if s and not s.startswith("*") and not s.startswith("["):