Skip to content

Commit 7eff015

Browse files
committed
completion of namespaces now uses the document namespace instead the import manager
1 parent 0cf89f0 commit 7eff015

File tree

3 files changed

+27
-26
lines changed

3 files changed

+27
-26
lines changed

robotcode/language_server/robotframework/diagnostics/namespace.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -899,9 +899,9 @@ def __init__(
899899
self.invalidated_callback = invalidated_callback
900900
self._document = weakref.ref(document) if document is not None else None
901901
self._libraries: OrderedDict[str, LibraryEntry] = OrderedDict()
902-
self._libraries_matchers: Optional[List[KeywordMatcher]] = None
902+
self._libraries_matchers: Optional[Dict[KeywordMatcher, LibraryEntry]] = None
903903
self._resources: OrderedDict[str, ResourceEntry] = OrderedDict()
904-
self._resources_matchers: Optional[List[KeywordMatcher]] = None
904+
self._resources_matchers: Optional[Dict[KeywordMatcher, ResourceEntry]] = None
905905
self._variables: OrderedDict[str, VariablesEntry] = OrderedDict()
906906
self._initialized = False
907907
self._initialize_lock = asyncio.Lock()
@@ -948,11 +948,11 @@ async def get_libraries(self) -> OrderedDict[str, LibraryEntry]:
948948

949949
return self._libraries
950950

951-
async def get_libraries_matchers(self) -> List[KeywordMatcher]:
951+
async def get_libraries_matchers(self) -> Dict[KeywordMatcher, LibraryEntry]:
952952
if self._libraries_matchers is None:
953-
self._libraries_matchers = [
954-
KeywordMatcher(v.alias or v.name or v.import_name) for v in (await self.get_libraries()).values()
955-
]
953+
self._libraries_matchers = {
954+
KeywordMatcher(v.alias or v.name or v.import_name): v for v in (await self.get_libraries()).values()
955+
}
956956
return self._libraries_matchers
957957

958958
@_logger.call
@@ -961,11 +961,11 @@ async def get_resources(self) -> OrderedDict[str, ResourceEntry]:
961961

962962
return self._resources
963963

964-
async def get_resources_matchers(self) -> List[KeywordMatcher]:
964+
async def get_resources_matchers(self) -> Dict[KeywordMatcher, ResourceEntry]:
965965
if self._resources_matchers is None:
966-
self._resources_matchers = [
967-
KeywordMatcher(v.alias or v.name or v.import_name) for v in (await self.get_resources()).values()
968-
]
966+
self._resources_matchers = {
967+
KeywordMatcher(v.alias or v.name or v.import_name): v for v in (await self.get_resources()).values()
968+
}
969969
return self._resources_matchers
970970

971971
async def get_library_doc(self) -> LibraryDoc:
@@ -1021,6 +1021,7 @@ async def ensure_initialized(self) -> bool:
10211021
if e not in new_imports:
10221022
new_imports.append(e)
10231023
self.document.set_data(Namespace, new_imports)
1024+
self.document.set_data(Namespace.DataEntry, None)
10241025
else:
10251026
data_entry = self.document.get_data(Namespace.DataEntry)
10261027

robotcode/language_server/robotframework/parts/completion.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -215,15 +215,15 @@ async def resolve(self, completion_item: CompletionItem) -> CompletionItem:
215215
name = completion_item.data.get("name", None)
216216
if name is not None:
217217
try:
218-
lib_doc = await (
219-
await self.parent.documents_cache.get_imports_manager(document)
220-
).get_libdoc_for_library_import(
221-
name, (), str(document.uri.to_path().parent), sentinel=self
222-
)
218+
entry = (
219+
await (
220+
await self.parent.documents_cache.get_namespace(document)
221+
).get_libraries_matchers()
222+
).get(name, None)
223223

224-
if lib_doc is not None:
224+
if entry is not None:
225225
completion_item.documentation = MarkupContent(
226-
kind=MarkupKind.MARKDOWN, value=lib_doc.to_markdown(False)
226+
kind=MarkupKind.MARKDOWN, value=entry.library_doc.to_markdown(False)
227227
)
228228

229229
except (SystemExit, KeyboardInterrupt, asyncio.CancelledError):
@@ -236,15 +236,15 @@ async def resolve(self, completion_item: CompletionItem) -> CompletionItem:
236236
name = completion_item.data.get("name", None)
237237
if name is not None:
238238
try:
239-
lib_doc = lib_doc = await (
240-
await self.parent.documents_cache.get_imports_manager(document)
241-
).get_libdoc_for_resource_import(
242-
name, str(document.uri.to_path().parent), sentinel=self
243-
)
239+
entry = (
240+
await (
241+
await self.parent.documents_cache.get_namespace(document)
242+
).get_resources_matchers()
243+
).get(name, None)
244244

245-
if lib_doc is not None:
245+
if entry is not None:
246246
completion_item.documentation = MarkupContent(
247-
kind=MarkupKind.MARKDOWN, value=lib_doc.to_markdown()
247+
kind=MarkupKind.MARKDOWN, value=entry.library_doc.to_markdown()
248248
)
249249

250250
except (SystemExit, KeyboardInterrupt, asyncio.CancelledError):

robotcode/language_server/robotframework/parts/references.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,8 +304,8 @@ async def _find_keyword_references_in_file(
304304
):
305305
return []
306306

307-
libraries_matchers = await namespace.get_libraries_matchers()
308-
resources_matchers = await namespace.get_resources_matchers()
307+
libraries_matchers = (await namespace.get_libraries_matchers()).keys()
308+
resources_matchers = (await namespace.get_resources_matchers()).keys()
309309

310310
async def _run() -> List[Location]:
311311
kw_matcher = KeywordMatcher(kw_doc.name)

0 commit comments

Comments
 (0)