debug_adapter_extension.rs

 1mod extension_dap_adapter;
 2
 3use std::sync::Arc;
 4
 5use dap::DapRegistry;
 6use extension::{ExtensionDebugAdapterProviderProxy, ExtensionHostProxy};
 7use extension_dap_adapter::ExtensionDapAdapter;
 8use gpui::App;
 9
10pub fn init(extension_host_proxy: Arc<ExtensionHostProxy>, cx: &mut App) {
11    let language_server_registry_proxy = DebugAdapterRegistryProxy::new(cx);
12    extension_host_proxy.register_debug_adapter_proxy(language_server_registry_proxy);
13}
14
15#[derive(Clone)]
16struct DebugAdapterRegistryProxy {
17    debug_adapter_registry: DapRegistry,
18}
19
20impl DebugAdapterRegistryProxy {
21    fn new(cx: &mut App) -> Self {
22        Self {
23            debug_adapter_registry: DapRegistry::global(cx).clone(),
24        }
25    }
26}
27
28impl ExtensionDebugAdapterProviderProxy for DebugAdapterRegistryProxy {
29    fn register_debug_adapter(
30        &self,
31        extension: Arc<dyn extension::Extension>,
32        debug_adapter_name: Arc<str>,
33    ) {
34        self.debug_adapter_registry
35            .add_adapter(Arc::new(ExtensionDapAdapter::new(
36                extension,
37                debug_adapter_name,
38            )));
39    }
40}