refactor(lsp-manager): replace handler architecture with response registry and modular providers

* Remove legacy handlers system (BaseHandler, DefaultHandler, JavaHandler, PythonHandler, HandlerRegistry)
* Introduce response_handlers module with ResponseRegistry for LSP response routing
* Replace HandlerRegistry usage in LSPManager with ResponseRegistry
* Convert LSPManagerUI client lifecycle to GObject signals
* Remove GLib.idle_add usage in LSP client event dispatch
* Move completion request logic into LSPServerEventsMixin
* Replace provider.py and provider_response_cache.py with modular provider/ package
* Simplify plugin wiring via response_registry.set_event_hub()

This refactor decouples response handling, simplifies event flow, and prepares
the LSP manager for easier language-specific extensions.
This commit is contained in:
2026-03-15 01:50:23 -05:00
parent 6cb66985aa
commit a4ef662da7
14 changed files with 105 additions and 93 deletions

View File

@@ -59,10 +59,7 @@ class Plugin(PluginCode):
lsp_manager.lsp_manager_ui.set_source_view(source_view)
lsp_manager.lsp_manager_ui.load_lsp_servers_config_placeholders()
lsp_manager.handler_registry.emit = self.emit
lsp_manager.handler_registry.emit_to = self.emit_to
lsp_manager.handler_registry._prompt_goto_request = self._prompt_goto_request
lsp_manager.handler_registry._prompt_completion_request = self._prompt_completion_request
lsp_manager.response_registry.set_event_hub(self.emit, self.emit_to, lsp_manager.provider)
def run(self):
...
@@ -70,38 +67,6 @@ class Plugin(PluginCode):
def generate_plugin_element(self):
...
def _prompt_goto_request(self, uri: str, pointer_pos: dict):
event = Event_Factory.create_event(
"get_active_view",
)
self.emit_to("source_views", event)
view = event.response
view._on_uri_data_received( [uri] )
buffer = view.get_buffer()
def move_cursor(buffer, pointer_pos):
itr = buffer.get_iter_at_line( pointer_pos["end"]["line"] )
itr.forward_chars( pointer_pos["end"]["character"] )
buffer.place_cursor(itr)
view.scroll_to_iter(itr, 0.2, False, 0, 0)
GLib.idle_add( move_cursor, buffer, pointer_pos )
def _prompt_completion_request(self):
event = Event_Factory.create_event(
"get_active_view",
)
self.emit_to("source_views", event)
view = event.response
event = Event_Factory.create_event(
"request_completion",
view = view,
provider = lsp_manager.provider
)
self.emit_to("completion", event)
class Handler:
@staticmethod