on master help sign in
editor: add debug session config
f55a012Dmitry Sharshakov
helix-core/src/syntax.rs+2
@@ -58,6 +58,8 @@ pub struct LanguageConfiguration {
58 pub(crate) indent_query: OnceCell<Option<IndentQuery>>,
58 pub(crate) indent_query: OnceCell<Option<IndentQuery>>,
59 #[serde(skip_serializing_if = "Option::is_none")]
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub debug_adapter: Option<DebugAdapterConfig>,
60 pub debug_adapter: Option<DebugAdapterConfig>,
61+ #[serde(skip_serializing_if = "Option::is_none")]
62+ pub debug_configs: Option<Vec<HashMap<String, serde_json::Value>>>,
61}
63}
62
64
63#[derive(Debug, Serialize, Deserialize)]
65#[derive(Debug, Serialize, Deserialize)]
helix-term/src/commands.rs+18−3
@@ -4368,9 +4368,24 @@ fn dap_start(cx: &mut Context) {
4368 let request = debugger.initialize("go".to_owned());
4368 let request = debugger.initialize("go".to_owned());
4369 let _ = block_on(request).unwrap();
4369 let _ = block_on(request).unwrap();
4370
4370
4371− let mut args = HashMap::new();
4371+ let sessions = cx
4372− args.insert("mode", "debug");
4372+ .editor
4373− args.insert("program", "main.go");
4373+ .syn_loader
4374+ .language_config_for_file_name(&path)
4375+ .and_then(|x| x.debug_configs.clone());
4376+
4377+ let sessions = match sessions {
4378+ Some(c) => c,
4379+ None => {
4380+ cx.editor.set_error(
4381+ "Can't start debug: no debug sessions available for language".to_string(),
4382+ );
4383+ return;
4384+ }
4385+ };
4386+
4387+ // TODO: picker
4388+ let args = sessions.get(0);
4374
4389
4375 let request = debugger.launch(to_value(args).unwrap());
4390 let request = debugger.launch(to_value(args).unwrap());
4376 let _ = block_on(request).unwrap();
4391 let _ = block_on(request).unwrap();
languages.toml+15
@@ -95,6 +95,21 @@ language-server = { command = "gopls" }
95indent = { tab-width = 4, unit = "\t" }
95indent = { tab-width = 4, unit = "\t" }
96debug-adapter = { command = "dlv", args = ["dap"], port-arg = "-l 127.0.0.1:{}" }
96debug-adapter = { command = "dlv", args = ["dap"], port-arg = "-l 127.0.0.1:{}" }
97
97
98+[[language.debug-configs]]
99+request = "launch"
100+mode = "debug"
101+program = "main.go"
102+
103+[[language.debug-configs]]
104+request = "launch"
105+mode = "exec"
106+program = "main"
107+
108+[[language.debug-configs]]
109+request = "launch"
110+mode = "test"
111+program = "."
112+
98[[language]]
113[[language]]
99name = "javascript"
114name = "javascript"
100scope = "source.js"
115scope = "source.js"