From 0fc440e7ceec855616ee4c0beff96a82d2399307 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Sun, 15 Mar 2026 23:40:40 -0500 Subject: [PATCH] Add dynamic EventNamespace for event type access and refactor LSP manager initialization - Create EventNamespace class to enable Code_Event_Types.RegisterLspClientEvent access - Move set_event_hub call from plugin to lsp_manager._do_bind_mapping - Update event type references to use Code_Event_Types namespace --- .../lsp_manager/lsp_manager.py | 14 ++++------ .../lsp_manager/plugin.py | 4 --- src/libs/event_factory.py | 26 ++++++++++++++++--- 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/plugins/code/language_server_clients/lsp_manager/lsp_manager.py b/plugins/code/language_server_clients/lsp_manager/lsp_manager.py index 0245478..effa67e 100644 --- a/plugins/code/language_server_clients/lsp_manager/lsp_manager.py +++ b/plugins/code/language_server_clients/lsp_manager/lsp_manager.py @@ -42,21 +42,17 @@ class LSPManager(ControllerBase): def _do_bind_mapping(self): self.response_cache.set_lsp_client(self.lsp_manager_client) self.provider.response_cache = self.response_cache + self.response_registry.set_event_hub( + self.emit, self.emit_to, self.provider + ) def _controller_message(self, event: Code_Event_Types.CodeEvent): - if isinstance(event, RegisterLspClientEvent): + if isinstance(event, Code_Event_Types.RegisterLspClientEvent): self.response_registry.register_handler(event.lang_id, event.handler) self.lsp_manager_ui.add_client_listing(event.lang_id, event.lang_config) - elif isinstance(event, UnregisterLspClientEvent): + elif isinstance(event, Code_Event_Types.UnregisterLspClientEvent): self.response_registry.unregister_handler(event.lang_id) -# if isinstance(event, Code_Event_Types.RegisterLspClientEvent): -# self.response_registry.register_handler(event.lang_id, event.handler) -# self.lsp_manager_ui.add_client_listing(event.lang_id, event.lang_config) -# elif isinstance(event, Code_Event_Types.UnregisterLspClientEvent): -# self.response_registry.unregister_handler(event.lang_id) - - def _on_create_client(self, ui, lang_id: str, workspace_uri: str) -> bool: init_opts = ui.get_init_opts(lang_id) result = self.create_client(lang_id, workspace_uri, init_opts) diff --git a/plugins/code/language_server_clients/lsp_manager/plugin.py b/plugins/code/language_server_clients/lsp_manager/plugin.py index eb5b8ea..75f9c50 100644 --- a/plugins/code/language_server_clients/lsp_manager/plugin.py +++ b/plugins/code/language_server_clients/lsp_manager/plugin.py @@ -62,10 +62,6 @@ class Plugin(PluginCode): source_view = event.response lsp_manager.lsp_manager_ui.set_source_view(source_view) - lsp_manager.response_registry.set_event_hub( - self.emit, self.emit_to, lsp_manager.provider - ) - def run(self): ... diff --git a/src/libs/event_factory.py b/src/libs/event_factory.py index bff4464..102822b 100644 --- a/src/libs/event_factory.py +++ b/src/libs/event_factory.py @@ -24,13 +24,17 @@ class EventFactory(Singleton): self._event_classes[event_type] = event_class def register_events(self, events: dict): + i = 0 for name, obj in events: if not self._is_valid_event_class(obj): continue event_type = self._class_name_to_event_type(name) - self.register_event(event_type, obj) - logger.debug(f"Registered {len(events)} event types:") + self._event_classes[event_type] = obj + Code_Event_Types.add_event_class(name, obj) + i += 1 + + logger.debug(f"Registered {i} event types:") def create_event(self, event_type: str, **kwargs) -> BaseEvent: if event_type not in self._event_classes: @@ -63,5 +67,21 @@ class EventFactory(Singleton): return re.sub(r'(? bool: + return (inspect.isclass(obj) and issubclass(obj, BaseEvent) and obj != BaseEvent) + + def add_event_class(self, name: str, event_class: Type[BaseEvent]): + setattr(self, name, event_class) + + + +Code_Event_Types = EventNamespace() Event_Factory = EventFactory() -Code_Event_Types = code +