develop #3
@@ -42,21 +42,17 @@ class LSPManager(ControllerBase):
|
|||||||
def _do_bind_mapping(self):
|
def _do_bind_mapping(self):
|
||||||
self.response_cache.set_lsp_client(self.lsp_manager_client)
|
self.response_cache.set_lsp_client(self.lsp_manager_client)
|
||||||
self.provider.response_cache = self.response_cache
|
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):
|
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.response_registry.register_handler(event.lang_id, event.handler)
|
||||||
self.lsp_manager_ui.add_client_listing(event.lang_id, event.lang_config)
|
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)
|
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:
|
def _on_create_client(self, ui, lang_id: str, workspace_uri: str) -> bool:
|
||||||
init_opts = ui.get_init_opts(lang_id)
|
init_opts = ui.get_init_opts(lang_id)
|
||||||
result = self.create_client(lang_id, workspace_uri, init_opts)
|
result = self.create_client(lang_id, workspace_uri, init_opts)
|
||||||
|
|||||||
@@ -62,10 +62,6 @@ class Plugin(PluginCode):
|
|||||||
source_view = event.response
|
source_view = event.response
|
||||||
lsp_manager.lsp_manager_ui.set_source_view(source_view)
|
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):
|
def run(self):
|
||||||
...
|
...
|
||||||
|
|
||||||
|
|||||||
@@ -24,13 +24,17 @@ class EventFactory(Singleton):
|
|||||||
self._event_classes[event_type] = event_class
|
self._event_classes[event_type] = event_class
|
||||||
|
|
||||||
def register_events(self, events: dict):
|
def register_events(self, events: dict):
|
||||||
|
i = 0
|
||||||
for name, obj in events:
|
for name, obj in events:
|
||||||
if not self._is_valid_event_class(obj): continue
|
if not self._is_valid_event_class(obj): continue
|
||||||
|
|
||||||
event_type = self._class_name_to_event_type(name)
|
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:
|
def create_event(self, event_type: str, **kwargs) -> BaseEvent:
|
||||||
if event_type not in self._event_classes:
|
if event_type not in self._event_classes:
|
||||||
@@ -63,5 +67,21 @@ class EventFactory(Singleton):
|
|||||||
return re.sub(r'(?<!^)(?=[A-Z])', '_', base_name).lower()
|
return re.sub(r'(?<!^)(?=[A-Z])', '_', base_name).lower()
|
||||||
|
|
||||||
|
|
||||||
|
class EventNamespace:
|
||||||
|
"""Dynamic namespace for event types."""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
def _is_valid_event_class(self, obj) -> 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()
|
Event_Factory = EventFactory()
|
||||||
Code_Event_Types = code
|
|
||||||
|
|||||||
Reference in New Issue
Block a user